rev |
line source |
bsw@197
|
1 local area = Area:by_id(param.get_id())
|
bsw@197
|
2
|
bsw/jbe@0
|
3
|
jorges@103
|
4 app.html_title.title = area.name
|
jorges@103
|
5 app.html_title.subtitle = _("Area")
|
jorges@103
|
6
|
bsw@197
|
7 util.help("area.show")
|
bsw@197
|
8
|
bsw@526
|
9 slot.select("head", function()
|
bsw@795
|
10 execute.view{ module = "area", view = "_head", params = { area = area, show_content = true, member = app.session.member } }
|
bsw@526
|
11 end)
|
bsw/jbe@0
|
12
|
bsw/jbe@0
|
13 ui.container{
|
bsw/jbe@0
|
14 attr = { class = "vertical"},
|
bsw/jbe@0
|
15 content = function()
|
bsw/jbe@0
|
16 ui.field.text{ value = area.description }
|
bsw/jbe@0
|
17 end
|
bsw/jbe@0
|
18 }
|
bsw/jbe@0
|
19
|
bsw@869
|
20 local open_issues_selector = area:get_reference_selector("issues")
|
bsw@869
|
21 :add_where("issue.closed ISNULL")
|
bsw@869
|
22 :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now()")
|
bsw@197
|
23
|
bsw@869
|
24 local closed_issues_selector = area:get_reference_selector("issues")
|
bsw@869
|
25 :add_where("issue.closed NOTNULL")
|
bsw@869
|
26 :add_order_by("issue.closed DESC")
|
bsw@271
|
27
|
bsw@869
|
28 local members_selector = area:get_reference_selector("members"):add_where("member.active")
|
bsw@869
|
29 local delegations_selector = area:get_reference_selector("delegations")
|
bsw@869
|
30 :join("member", "truster", "truster.id = delegation.truster_id AND truster.active")
|
bsw@869
|
31 :join("member", "trustee", "trustee.id = delegation.trustee_id AND trustee.active")
|
bsw/jbe@0
|
32
|
bsw@869
|
33 local tabs = {
|
bsw@869
|
34 module = "area",
|
bsw@869
|
35 view = "show_tab",
|
bsw@869
|
36 static_params = { area_id = area.id },
|
bsw@869
|
37 }
|
bsw@869
|
38
|
bsw@869
|
39 tabs[#tabs+1] = {
|
bsw@869
|
40 name = "timeline",
|
bsw@869
|
41 label = _"Latest events",
|
bsw@869
|
42 module = "event",
|
bsw@869
|
43 view = "_list",
|
bsw@869
|
44 params = { for_area = area }
|
bsw@869
|
45 }
|
bsw@869
|
46
|
bsw@869
|
47 tabs[#tabs+1] = {
|
bsw@869
|
48 name = "open",
|
bsw@869
|
49 label = _"Open issues",
|
bsw@869
|
50 module = "issue",
|
bsw@869
|
51 view = "_list",
|
bsw@869
|
52 params = {
|
bsw@869
|
53 for_state = "open",
|
bsw@869
|
54 issues_selector = open_issues_selector, for_area = true
|
bsw@277
|
55 }
|
bsw@869
|
56 }
|
bsw@869
|
57 tabs[#tabs+1] = {
|
bsw@869
|
58 name = "closed",
|
bsw@869
|
59 label = _"Closed issues",
|
bsw@869
|
60 module = "issue",
|
bsw@869
|
61 view = "_list",
|
bsw@869
|
62 params = {
|
bsw@869
|
63 for_state = "closed",
|
bsw@869
|
64 issues_selector = closed_issues_selector, for_area = true
|
bsw@869
|
65 }
|
bsw@869
|
66 }
|
bsw@869
|
67
|
bsw@870
|
68 if app.session:has_access("all_pseudonymous") then
|
bsw@869
|
69 tabs[#tabs+1] =
|
bsw@869
|
70 {
|
bsw@869
|
71 name = "members",
|
bsw@869
|
72 label = _"Participants" .. " (" .. tostring(members_selector:count()) .. ")",
|
bsw@869
|
73 icon = { static = "icons/16/group.png" },
|
bsw@869
|
74 module = "member",
|
bsw@869
|
75 view = "_list",
|
bsw@869
|
76 params = { members_selector = members_selector }
|
bsw@277
|
77 }
|
bsw@869
|
78
|
bsw@869
|
79 tabs[#tabs+1] =
|
bsw@869
|
80 {
|
bsw@869
|
81 name = "delegations",
|
bsw@869
|
82 label = _"Delegations" .. " (" .. tostring(delegations_selector:count()) .. ")",
|
bsw@869
|
83 icon = { static = "icons/16/table_go.png" },
|
bsw@869
|
84 module = "delegation",
|
bsw@869
|
85 view = "_list",
|
bsw@869
|
86 params = { delegations_selector = delegations_selector }
|
bsw@869
|
87 }
|
bsw@277
|
88 end
|
bsw@869
|
89
|
bsw@869
|
90 ui.tabs(tabs)
|