liquid_feedback_frontend
diff app/main/member/show_tab.lua @ 61:f77ca23f9ebd
merge
author | jbe |
---|---|
date | Thu Apr 22 16:03:53 2010 +0200 (2010-04-22) |
parents | 4f39f0a0d5b5 |
children | 0e75b5f04fe5 |
line diff
1.1 --- a/app/main/member/show_tab.lua Tue Apr 20 10:19:37 2010 +0200 1.2 +++ b/app/main/member/show_tab.lua Thu Apr 22 16:03:53 2010 +0200 1.3 @@ -1,3 +1,5 @@ 1.4 +local show_as_homepage = param.get("show_as_homepage", atom.boolean) 1.5 + 1.6 local member 1.7 1.8 if request.get_json_request_slots() then 1.9 @@ -6,84 +8,183 @@ 1.10 member = param.get("member", "table") 1.11 end 1.12 1.13 +local tabs = { 1.14 + module = "member", 1.15 + view = "show_tab", 1.16 + static_params = { 1.17 + member_id = member.id, 1.18 + show_as_homepage = show_as_homepage 1.19 + } 1.20 +} 1.21 + 1.22 +if show_as_homepage and app.session.member_id == member.id then 1.23 + tabs[#tabs+1] = { 1.24 + class = "yellow", 1.25 + name = "motd", 1.26 + label = _"Message of the day", 1.27 + icon = { static = "icons/16/bell.png" }, 1.28 + module = "index", 1.29 + view = "_motd", 1.30 + params = {} 1.31 + } 1.32 + 1.33 + local selector = Area:new_selector() 1.34 + :reset_fields() 1.35 + :add_field("area.id", nil, { "grouped" }) 1.36 + :add_field("area.name", nil, { "grouped" }) 1.37 + :add_field("membership.member_id NOTNULL", "is_member", { "grouped" }) 1.38 + :add_field("count(issue.id)", "issues_to_vote_count") 1.39 + :add_field("count(interest.member_id)", "interested_issues_to_vote_count") 1.40 + :add_field("count(interest.member_id NOTNULL OR interest.member_id NOTNULL)", "issues_to_vote_count_sum") 1.41 + :join("issue", nil, "issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL") 1.42 + :left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) 1.43 + :add_where{ "direct_voter.member_id ISNULL" } 1.44 + :left_join("interest", nil, { "interest.issue_id = issue.id AND interest.member_id = ?", app.session.member.id }) 1.45 + :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ? ", app.session.member.id }) 1.46 + 1.47 + local not_voted_areas = {} 1.48 + local issues_to_vote_count = 0 1.49 + for i, area in ipairs(selector:exec()) do 1.50 + if area.is_member or area.interested_issues_to_vote_count > 0 then 1.51 + not_voted_areas[#not_voted_areas+1] = area 1.52 + end 1.53 + issues_to_vote_count = issues_to_vote_count + area.issues_to_vote_count_sum 1.54 + end 1.55 + 1.56 + if issues_to_vote_count > 0 then 1.57 + tabs[#tabs+1] = { 1.58 + class = "yellow", 1.59 + name = "not_voted_issues", 1.60 + label = _"Not voted issues" .. " (" .. tostring(issues_to_vote_count) .. ")", 1.61 + icon = { static = "icons/16/email_open.png" }, 1.62 + module = "index", 1.63 + view = "_not_voted_issues", 1.64 + params = { 1.65 + areas = not_voted_areas 1.66 + } 1.67 + } 1.68 + end 1.69 + 1.70 + local initiator_invites_selector = Initiative:new_selector() 1.71 + :join("issue", "_issue_state", "_issue_state.id = initiative.issue_id") 1.72 + :join("initiator", nil, { "initiator.initiative_id = initiative.id AND initiator.member_id = ? AND initiator.accepted ISNULL", app.session.member.id }) 1.73 + :add_where("_issue_state.closed ISNULL AND _issue_state.half_frozen ISNULL") 1.74 + 1.75 + if initiator_invites_selector:count() > 0 then 1.76 + tabs[#tabs+1] = { 1.77 + class = "yellow", 1.78 + name = "initiator_invites", 1.79 + label = _"Initiator invites" .. " (" .. tostring(initiator_invites_selector:count()) .. ")", 1.80 + icon = { static = "icons/16/user_add.png" }, 1.81 + module = "index", 1.82 + view = "_initiator_invites", 1.83 + params = { 1.84 + initiatives_selector = initiator_invites_selector 1.85 + } 1.86 + } 1.87 + end 1.88 + 1.89 + local updated_drafts_selector = Initiative:new_selector() 1.90 + :join("issue", "_issue_state", "_issue_state.id = initiative.issue_id AND _issue_state.closed ISNULL AND _issue_state.fully_frozen ISNULL") 1.91 + :join("current_draft", "_current_draft", "_current_draft.initiative_id = initiative.id") 1.92 + :join("supporter", "supporter", { "supporter.member_id = ? AND supporter.initiative_id = initiative.id AND supporter.draft_id < _current_draft.id", app.session.member_id }) 1.93 + 1.94 + if updated_drafts_selector:count() > 0 then 1.95 + tabs[#tabs+1] = { 1.96 + class = "yellow", 1.97 + name = "updated_drafts", 1.98 + label = _"Updated drafts" .. " (" .. tostring(updated_drafts_selector:count()) .. ")", 1.99 + icon = { static = "icons/16/script.png" }, 1.100 + module = "index", 1.101 + view = "_updated_drafts", 1.102 + params = { 1.103 + initiatives_selector = updated_drafts_selector 1.104 + } 1.105 + } 1.106 + end 1.107 +end 1.108 + 1.109 +tabs[#tabs+1] = { 1.110 + name = "profile", 1.111 + label = _"Profile", 1.112 + icon = { static = "icons/16/application_form.png" }, 1.113 + module = "member", 1.114 + view = "_profile", 1.115 + params = { member = member }, 1.116 +} 1.117 + 1.118 local areas_selector = member:get_reference_selector("areas") 1.119 +tabs[#tabs+1] = { 1.120 + name = "areas", 1.121 + label = _"Areas" .. " (" .. tostring(areas_selector:count()) .. ")", 1.122 + icon = { static = "icons/16/package.png" }, 1.123 + module = "area", 1.124 + view = "_list", 1.125 + params = { areas_selector = areas_selector }, 1.126 +} 1.127 + 1.128 local issues_selector = member:get_reference_selector("issues") 1.129 +tabs[#tabs+1] = { 1.130 + name = "issues", 1.131 + label = _"Issues" .. " (" .. tostring(issues_selector:count()) .. ")", 1.132 + icon = { static = "icons/16/folder.png" }, 1.133 + module = "issue", 1.134 + view = "_list", 1.135 + params = { issues_selector = issues_selector }, 1.136 +} 1.137 + 1.138 local supported_initiatives_selector = member:get_reference_selector("supported_initiatives") 1.139 +tabs[#tabs+1] = { 1.140 + name = "supported_initiatives", 1.141 + label = _"Supported initiatives" .. " (" .. tostring(supported_initiatives_selector:count()) .. ")", 1.142 + icon = { static = "icons/16/thumb_up_green.png" }, 1.143 + module = "initiative", 1.144 + view = "_list", 1.145 + params = { initiatives_selector = supported_initiatives_selector }, 1.146 +} 1.147 + 1.148 local initiated_initiatives_selector = member:get_reference_selector("initiated_initiatives"):add_where("initiator.accepted = true") 1.149 +tabs[#tabs+1] = { 1.150 + name = "initiatied_initiatives", 1.151 + label = _"Initiated initiatives" .. " (" .. tostring(initiated_initiatives_selector:count()) .. ")", 1.152 + icon = { static = "icons/16/user_edit.png" }, 1.153 + module = "initiative", 1.154 + view = "_list", 1.155 + params = { initiatives_selector = initiated_initiatives_selector }, 1.156 +} 1.157 + 1.158 local incoming_delegations_selector = member:get_reference_selector("incoming_delegations") 1.159 :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id") 1.160 :add_where("_member_showtab_issue.closed ISNULL") 1.161 +tabs[#tabs+1] = { 1.162 + name = "incoming_delegations", 1.163 + label = _"Incoming delegations" .. " (" .. tostring(incoming_delegations_selector:count()) .. ")", 1.164 + icon = { static = "icons/16/table_go.png" }, 1.165 + module = "delegation", 1.166 + view = "_list", 1.167 + params = { delegations_selector = incoming_delegations_selector, incoming = true }, 1.168 +} 1.169 + 1.170 local outgoing_delegations_selector = member:get_reference_selector("outgoing_delegations") 1.171 :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id") 1.172 :add_where("_member_showtab_issue.closed ISNULL") 1.173 -local contacts_selector = member:get_reference_selector("saved_members"):add_where("public") 1.174 +tabs[#tabs+1] = { 1.175 + name = "outgoing_delegations", 1.176 + label = _"Outgoing delegations" .. " (" .. tostring(outgoing_delegations_selector:count()) .. ")", 1.177 + icon = { static = "icons/16/table_go.png" }, 1.178 + module = "delegation", 1.179 + view = "_list", 1.180 + params = { delegations_selector = outgoing_delegations_selector, outgoing = true }, 1.181 +} 1.182 1.183 -ui.tabs{ 1.184 +local contacts_selector = member:get_reference_selector("saved_members"):add_where("public") 1.185 +tabs[#tabs+1] = { 1.186 + name = "contacts", 1.187 + label = _"Contacts" .. " (" .. tostring(contacts_selector:count()) .. ")", 1.188 + icon = { static = "icons/16/book_edit.png" }, 1.189 module = "member", 1.190 - view = "show_tab", 1.191 - static_params = { member_id = member.id }, 1.192 - { 1.193 - name = "profile", 1.194 - label = _"Profile", 1.195 - icon = { static = "icons/16/application_form.png" }, 1.196 - module = "member", 1.197 - view = "_profile", 1.198 - params = { member = member }, 1.199 - }, 1.200 - { 1.201 - name = "areas", 1.202 - label = _"Areas" .. " (" .. tostring(areas_selector:count()) .. ")", 1.203 - icon = { static = "icons/16/package.png" }, 1.204 - module = "area", 1.205 - view = "_list", 1.206 - params = { areas_selector = areas_selector }, 1.207 - }, 1.208 - { 1.209 - name = "issues", 1.210 - label = _"Issues" .. " (" .. tostring(issues_selector:count()) .. ")", 1.211 - icon = { static = "icons/16/folder.png" }, 1.212 - module = "issue", 1.213 - view = "_list", 1.214 - params = { issues_selector = issues_selector }, 1.215 - }, 1.216 - { 1.217 - name = "supported_initiatives", 1.218 - label = _"Supported initiatives" .. " (" .. tostring(supported_initiatives_selector:count()) .. ")", 1.219 - icon = { static = "icons/16/thumb_up_green.png" }, 1.220 - module = "initiative", 1.221 - view = "_list", 1.222 - params = { initiatives_selector = supported_initiatives_selector }, 1.223 - }, 1.224 - { 1.225 - name = "initiatied_initiatives", 1.226 - label = _"Initiated initiatives" .. " (" .. tostring(initiated_initiatives_selector:count()) .. ")", 1.227 - icon = { static = "icons/16/user_edit.png" }, 1.228 - module = "initiative", 1.229 - view = "_list", 1.230 - params = { initiatives_selector = initiated_initiatives_selector }, 1.231 - }, 1.232 - { 1.233 - name = "incoming_delegations", 1.234 - label = _"Incoming delegations" .. " (" .. tostring(incoming_delegations_selector:count()) .. ")", 1.235 - icon = { static = "icons/16/table_go.png" }, 1.236 - module = "delegation", 1.237 - view = "_list", 1.238 - params = { delegations_selector = incoming_delegations_selector, incoming = true }, 1.239 - }, 1.240 - { 1.241 - name = "outgoing_delegations", 1.242 - label = _"Outgoing delegations" .. " (" .. tostring(outgoing_delegations_selector:count()) .. ")", 1.243 - icon = { static = "icons/16/table_go.png" }, 1.244 - module = "delegation", 1.245 - view = "_list", 1.246 - params = { delegations_selector = outgoing_delegations_selector, outgoing = true }, 1.247 - }, 1.248 - { 1.249 - name = "contacts", 1.250 - label = _"Contacts" .. " (" .. tostring(contacts_selector:count()) .. ")", 1.251 - icon = { static = "icons/16/book_edit.png" }, 1.252 - module = "member", 1.253 - view = "_list", 1.254 - params = { members_selector = contacts_selector }, 1.255 - } 1.256 + view = "_list", 1.257 + params = { members_selector = contacts_selector }, 1.258 } 1.259 + 1.260 +ui.tabs(tabs) 1.261 \ No newline at end of file