1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
-- vim: ft=terra
local terra
render_compose(co: &lib.srv.convo, edit: &lib.store.post)
var target, tgtlen = co:getv('to')
var form: data.view.compose
if edit == nil then
form = data.view.compose {
content = lib.coalesce(target, '');
acl = lib.trn(target == nil, 'all', 'mentioned'); -- TODO default acl setting?
handle = co.who.handle;
circles = ''; -- TODO: list user's circles, rooms, and saved aclexps
}
end
var cotxt = form:tostr() defer cotxt:free()
var doc = data.view.docskel {
instance = co.srv.cfg.instance;
title = lib.str.plit 'compose';
body = cotxt;
class = lib.str.plit 'compose';
navlinks = co.navbar;
}
var hdrs = array(
lib.http.header { 'Content-Type', 'text/html; charset=UTF-8' }
)
doc:send(co.con,200,[lib.mem.ptr(lib.http.header)] {ct = 1, ptr = &hdrs[0]})
end
return render_compose
|
|
<
|
<
<
|
|
|
>
>
>
>
>
>
>
>
<
<
>
|
|
<
<
<
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
-- vim: ft=terra
local terra
render_compose(co: &lib.srv.convo, edit: &lib.store.post, acc: &lib.str.acc)
var target, tgtlen = co:getv('to')
var form: data.view.compose
form = data.view.compose {
handle = co.who.handle;
circles = ''; -- TODO: list user's circles, rooms, and saved aclexps
}
if edit == nil then
form.content = lib.coalesce(target, '')
form.acl = lib.trn(target == nil, 'all', 'mentioned') -- TODO default acl setting?
else
form.content = lib.coalesce(edit.body, '')
form.acl = edit.acl
end
if acc ~= nil then form:append(acc) return end
var cotxt = form:tostr() defer cotxt:free()
var doc = [lib.srv.convo.page] {
title = lib.str.plit 'compose';
body = cotxt;
class = lib.str.plit 'compose';
cache = true;
}
co:stdpage(doc)
end
return render_compose
|