bsw@525: local member = param.get("member", "table") bsw@525: bsw@525: local tabs = { bsw/jbe@19: module = "member", bsw/jbe@19: view = "show_tab", bsw@525: static_params = { bsw@558: member_id = member.id bsw/jbe@19: } bsw@525: } bsw@525: bsw@558: tabs[#tabs+1] = { bsw@558: name = "profile", bsw@558: label = _"Profile", bsw@558: icon = { static = "icons/16/application_form.png" }, bsw@558: module = "member", bsw@558: view = "_profile", bsw@558: params = { member = member }, bsw@558: } bsw@525: bsw@525: local areas_selector = member:get_reference_selector("areas") bsw@525: tabs[#tabs+1] = { bsw@525: name = "areas", bsw@774: label = _"Units and areas", bsw@525: icon = { static = "icons/16/package.png" }, bsw@594: module = "index", bsw@594: view = "_member_home", bsw@558: params = { areas_selector = areas_selector, member = member, for_member = true }, bsw@525: } bsw@525: bsw@558: tabs[#tabs+1] = { bsw@558: name = "timeline", bsw@602: label = _"Latest events", bsw@558: module = "event", bsw@558: view = "_list", bsw@558: params = { for_member = member } bsw@558: } bsw@525: bsw@525: tabs[#tabs+1] = { bsw@525: name = "open", bsw@525: label = _"Open issues", bsw@525: module = "issue", bsw@525: view = "_list", bsw@525: link_params = { bsw@558: filter_interest = "issue", bsw@525: }, bsw@525: params = { bsw@525: for_state = "open", bsw@558: for_member = member, bsw@525: issues_selector = Issue:new_selector() bsw@525: :add_where("issue.closed ISNULL") bsw@525: :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@525: } bsw@525: } bsw@525: bsw@525: tabs[#tabs+1] = { bsw@525: name = "closed", bsw@525: label = _"Closed issues", bsw@525: module = "issue", bsw@525: view = "_list", bsw@525: link_params = { bsw@558: filter_interest = "issue", bsw@525: }, bsw@525: params = { bsw@525: for_state = "closed", bsw@558: for_member = member, bsw@525: issues_selector = Issue:new_selector() bsw@525: :add_where("issue.closed NOTNULL") bsw@525: :add_order_by("issue.closed DESC") bsw@525: bsw@525: } bsw@525: } bsw@525: bsw@525: bsw@558: local outgoing_delegations_selector = member:get_reference_selector("outgoing_delegations") bsw@558: :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id") bsw@558: :add_where("_member_showtab_issue.closed ISNULL") bsw@558: tabs[#tabs+1] = { bsw@558: name = "outgoing_delegations", bsw@558: label = _"Outgoing delegations" .. " (" .. tostring(outgoing_delegations_selector:count()) .. ")", bsw@558: icon = { static = "icons/16/table_go.png" }, bsw@558: module = "delegation", bsw@558: view = "_list", bsw@558: params = { delegations_selector = outgoing_delegations_selector, outgoing = true }, bsw@558: } bsw@525: bsw@558: local incoming_delegations_selector = member:get_reference_selector("incoming_delegations") bsw@558: :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id") bsw@558: :add_where("_member_showtab_issue.closed ISNULL") bsw@558: tabs[#tabs+1] = { bsw@558: name = "incoming_delegations", bsw@558: label = _"Incoming delegations" .. " (" .. tostring(incoming_delegations_selector:count()) .. ")", bsw@558: icon = { static = "icons/16/table_go.png" }, bsw@558: module = "delegation", bsw@558: view = "_list", bsw@558: params = { delegations_selector = incoming_delegations_selector, incoming = true }, bsw@558: } bsw@525: bsw@558: local contacts_selector = member:get_reference_selector("saved_members"):add_where("public") bsw@558: tabs[#tabs+1] = { bsw@558: name = "contacts", bsw@558: label = _"Contacts" .. " (" .. tostring(contacts_selector:count()) .. ")", bsw@558: icon = { static = "icons/16/book_edit.png" }, bsw@558: module = "member", bsw@558: view = "_list", bsw@558: params = { members_selector = contacts_selector }, bsw@558: } bsw@525: bsw@525: ui.tabs(tabs)