bsw@197: local area = Area:by_id(param.get_id()) bsw@197: bsw/jbe@0: jorges@103: app.html_title.title = area.name jorges@103: app.html_title.subtitle = _("Area") jorges@103: bsw@197: util.help("area.show") bsw@197: bsw@526: slot.select("head", function() bsw@795: execute.view{ module = "area", view = "_head", params = { area = area, show_content = true, member = app.session.member } } bsw@526: end) bsw/jbe@0: bsw/jbe@0: ui.container{ bsw/jbe@0: attr = { class = "vertical"}, bsw/jbe@0: content = function() bsw/jbe@0: ui.field.text{ value = area.description } bsw/jbe@0: end bsw/jbe@0: } bsw/jbe@0: bsw@869: local open_issues_selector = area:get_reference_selector("issues") bsw@869: :add_where("issue.closed ISNULL") bsw@869: :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: bsw@869: local closed_issues_selector = area:get_reference_selector("issues") bsw@869: :add_where("issue.closed NOTNULL") bsw@869: :add_order_by("issue.closed DESC") bsw@271: bsw@869: local members_selector = area:get_reference_selector("members"):add_where("member.active") bsw@869: local delegations_selector = area:get_reference_selector("delegations") bsw@869: :join("member", "truster", "truster.id = delegation.truster_id AND truster.active") bsw@869: :join("member", "trustee", "trustee.id = delegation.trustee_id AND trustee.active") bsw/jbe@0: bsw@869: local tabs = { bsw@869: module = "area", bsw@869: view = "show_tab", bsw@869: static_params = { area_id = area.id }, bsw@869: } bsw@869: bsw@869: tabs[#tabs+1] = { bsw@869: name = "timeline", bsw@869: label = _"Latest events", bsw@869: module = "event", bsw@869: view = "_list", bsw@869: params = { for_area = area } bsw@869: } bsw@869: bsw@869: tabs[#tabs+1] = { bsw@869: name = "open", bsw@869: label = _"Open issues", bsw@869: module = "issue", bsw@869: view = "_list", bsw@869: params = { bsw@869: for_state = "open", bsw@869: issues_selector = open_issues_selector, for_area = true bsw@277: } bsw@869: } bsw@869: tabs[#tabs+1] = { bsw@869: name = "closed", bsw@869: label = _"Closed issues", bsw@869: module = "issue", bsw@869: view = "_list", bsw@869: params = { bsw@869: for_state = "closed", bsw@869: issues_selector = closed_issues_selector, for_area = true bsw@869: } bsw@869: } bsw@869: bsw@870: if app.session:has_access("all_pseudonymous") then bsw@869: tabs[#tabs+1] = bsw@869: { bsw@869: name = "members", bsw@869: label = _"Participants" .. " (" .. tostring(members_selector:count()) .. ")", bsw@869: icon = { static = "icons/16/group.png" }, bsw@869: module = "member", bsw@869: view = "_list", bsw@869: params = { members_selector = members_selector } bsw@277: } bsw@869: bsw@869: tabs[#tabs+1] = bsw@869: { bsw@869: name = "delegations", bsw@869: label = _"Delegations" .. " (" .. tostring(delegations_selector:count()) .. ")", bsw@869: icon = { static = "icons/16/table_go.png" }, bsw@869: module = "delegation", bsw@869: view = "_list", bsw@869: params = { delegations_selector = delegations_selector } bsw@869: } bsw@277: end bsw@869: bsw@869: ui.tabs(tabs)