liquid_feedback_frontend
diff app/main/initiative/show_tab.lua @ 51:0849be391140
Public read access; Read-only API for initiatives; Prepared integration of OpenID
| author | bsw |
|---|---|
| date | Sun Apr 04 22:05:11 2010 +0200 (2010-04-04) |
| parents | 00d1004545f1 |
| children | 65a1f7a01e7b |
line diff
1.1 --- a/app/main/initiative/show_tab.lua Wed Mar 31 17:50:32 2010 +0200 1.2 +++ b/app/main/initiative/show_tab.lua Sun Apr 04 22:05:11 2010 +0200 1.3 @@ -5,7 +5,7 @@ 1.4 initiative = Initiative:by_id(param.get("initiative_id", atom.number)) 1.5 end 1.6 1.7 -if not initiator then 1.8 +if not initiator and app.session.member_id then 1.9 initiator = Initiator:by_pk(initiative.id, app.session.member.id) 1.10 end 1.11 1.12 @@ -32,17 +32,19 @@ 1.13 } 1.14 } 1.15 1.16 -if initiative.issue.ranks_available then 1.17 - tabs[#tabs+1] = { 1.18 - name = "voting", 1.19 - label = _"Voting details", 1.20 - icon = { static = "icons/16/email_open.png" }, 1.21 - module = "initiative", 1.22 - view = "_show_voting", 1.23 - params = { 1.24 - initiative = initiative 1.25 +if app.session.member_id then 1.26 + if initiative.issue.ranks_available then 1.27 + tabs[#tabs+1] = { 1.28 + name = "voting", 1.29 + label = _"Voting details", 1.30 + icon = { static = "icons/16/email_open.png" }, 1.31 + module = "initiative", 1.32 + view = "_show_voting", 1.33 + params = { 1.34 + initiative = initiative 1.35 + } 1.36 } 1.37 - } 1.38 + end 1.39 end 1.40 1.41 local suggestion_count = initiative:get_reference_selector("suggestions"):count() 1.42 @@ -58,90 +60,92 @@ 1.43 } 1.44 } 1.45 1.46 -local members_selector = initiative:get_reference_selector("supporting_members_snapshot") 1.47 - :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id") 1.48 - :join("direct_interest_snapshot", nil, "direct_interest_snapshot.event = issue.latest_snapshot_event AND direct_interest_snapshot.issue_id = issue.id AND direct_interest_snapshot.member_id = member.id") 1.49 - :add_field("direct_interest_snapshot.weight") 1.50 - :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event") 1.51 - :add_where("direct_supporter_snapshot.satisfied") 1.52 - :add_field("direct_supporter_snapshot.informed", "is_informed") 1.53 - 1.54 -local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object") 1.55 -local direct_satisfied_supporter_count = tmp.count 1.56 -local indirect_satisfied_supporter_count = (tmp.weight or 0) - tmp.count 1.57 - 1.58 -local count_string 1.59 -if indirect_satisfied_supporter_count > 0 then 1.60 - count_string = "(" .. tostring(direct_satisfied_supporter_count) .. "+" .. tostring(indirect_satisfied_supporter_count) .. ")" 1.61 -else 1.62 - count_string = "(" .. tostring(direct_satisfied_supporter_count) .. ")" 1.63 -end 1.64 - 1.65 -tabs[#tabs+1] = { 1.66 - name = "satisfied_supporter", 1.67 - label = _"Supporter" .. " " .. count_string, 1.68 - icon = { static = "icons/16/thumb_up_green.png" }, 1.69 - module = "member", 1.70 - view = "_list", 1.71 - params = { 1.72 - initiative = initiative, 1.73 - members_selector = members_selector 1.74 +if app.session.member_id then 1.75 + local members_selector = initiative:get_reference_selector("supporting_members_snapshot") 1.76 + :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id") 1.77 + :join("direct_interest_snapshot", nil, "direct_interest_snapshot.event = issue.latest_snapshot_event AND direct_interest_snapshot.issue_id = issue.id AND direct_interest_snapshot.member_id = member.id") 1.78 + :add_field("direct_interest_snapshot.weight") 1.79 + :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event") 1.80 + :add_where("direct_supporter_snapshot.satisfied") 1.81 + :add_field("direct_supporter_snapshot.informed", "is_informed") 1.82 + 1.83 + local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object") 1.84 + local direct_satisfied_supporter_count = tmp.count 1.85 + local indirect_satisfied_supporter_count = (tmp.weight or 0) - tmp.count 1.86 + 1.87 + local count_string 1.88 + if indirect_satisfied_supporter_count > 0 then 1.89 + count_string = "(" .. tostring(direct_satisfied_supporter_count) .. "+" .. tostring(indirect_satisfied_supporter_count) .. ")" 1.90 + else 1.91 + count_string = "(" .. tostring(direct_satisfied_supporter_count) .. ")" 1.92 + end 1.93 + 1.94 + tabs[#tabs+1] = { 1.95 + name = "satisfied_supporter", 1.96 + label = _"Supporter" .. " " .. count_string, 1.97 + icon = { static = "icons/16/thumb_up_green.png" }, 1.98 + module = "member", 1.99 + view = "_list", 1.100 + params = { 1.101 + initiative = initiative, 1.102 + members_selector = members_selector 1.103 + } 1.104 } 1.105 -} 1.106 - 1.107 -local members_selector = initiative:get_reference_selector("supporting_members_snapshot") 1.108 - :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id") 1.109 - :join("direct_interest_snapshot", nil, "direct_interest_snapshot.event = issue.latest_snapshot_event AND direct_interest_snapshot.issue_id = issue.id AND direct_interest_snapshot.member_id = member.id") 1.110 - :add_field("direct_interest_snapshot.weight") 1.111 - :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event") 1.112 - :add_where("NOT direct_supporter_snapshot.satisfied") 1.113 - :add_field("direct_supporter_snapshot.informed", "is_informed") 1.114 - 1.115 -local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object") 1.116 -local direct_potential_supporter_count = tmp.count 1.117 -local indirect_potential_supporter_count = (tmp.weight or 0) - tmp.count 1.118 - 1.119 -local count_string 1.120 -if indirect_potential_supporter_count > 0 then 1.121 - count_string = "(" .. tostring(direct_potential_supporter_count) .. "+" .. tostring(indirect_potential_supporter_count) .. ")" 1.122 -else 1.123 - count_string = "(" .. tostring(direct_potential_supporter_count) .. ")" 1.124 + 1.125 + local members_selector = initiative:get_reference_selector("supporting_members_snapshot") 1.126 + :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id") 1.127 + :join("direct_interest_snapshot", nil, "direct_interest_snapshot.event = issue.latest_snapshot_event AND direct_interest_snapshot.issue_id = issue.id AND direct_interest_snapshot.member_id = member.id") 1.128 + :add_field("direct_interest_snapshot.weight") 1.129 + :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event") 1.130 + :add_where("NOT direct_supporter_snapshot.satisfied") 1.131 + :add_field("direct_supporter_snapshot.informed", "is_informed") 1.132 + 1.133 + local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object") 1.134 + local direct_potential_supporter_count = tmp.count 1.135 + local indirect_potential_supporter_count = (tmp.weight or 0) - tmp.count 1.136 + 1.137 + local count_string 1.138 + if indirect_potential_supporter_count > 0 then 1.139 + count_string = "(" .. tostring(direct_potential_supporter_count) .. "+" .. tostring(indirect_potential_supporter_count) .. ")" 1.140 + else 1.141 + count_string = "(" .. tostring(direct_potential_supporter_count) .. ")" 1.142 + end 1.143 + 1.144 + tabs[#tabs+1] = { 1.145 + name = "supporter", 1.146 + label = _"Potential supporter" .. " " .. count_string, 1.147 + icon = { static = "icons/16/thumb_up.png" }, 1.148 + module = "member", 1.149 + view = "_list", 1.150 + params = { 1.151 + initiative = initiative, 1.152 + members_selector = members_selector 1.153 + } 1.154 + } 1.155 + 1.156 + local initiators_members_selector = initiative:get_reference_selector("initiating_members") 1.157 + :add_field("initiator.accepted", "accepted") 1.158 + 1.159 + if not (initiator and initiator.accepted) then 1.160 + initiators_members_selector:add_where("initiator.accepted") 1.161 + end 1.162 + 1.163 + local initiator_count = initiators_members_selector:count() 1.164 + 1.165 + tabs[#tabs+1] = { 1.166 + name = "initiators", 1.167 + label = _"Initiators" .. " (" .. tostring(initiator_count) .. ")", 1.168 + icon = { static = "icons/16/user_edit.png" }, 1.169 + module = "initiative", 1.170 + view = "_initiators", 1.171 + params = { 1.172 + initiative = initiative, 1.173 + initiator = initiator, 1.174 + initiators_members_selector = initiators_members_selector 1.175 + } 1.176 + } 1.177 end 1.178 1.179 -tabs[#tabs+1] = { 1.180 - name = "supporter", 1.181 - label = _"Potential supporter" .. " " .. count_string, 1.182 - icon = { static = "icons/16/thumb_up.png" }, 1.183 - module = "member", 1.184 - view = "_list", 1.185 - params = { 1.186 - initiative = initiative, 1.187 - members_selector = members_selector 1.188 - } 1.189 -} 1.190 - 1.191 -local initiators_members_selector = initiative:get_reference_selector("initiating_members") 1.192 - :add_field("initiator.accepted", "accepted") 1.193 - 1.194 -if not (initiator and initiator.accepted) then 1.195 - initiators_members_selector:add_where("initiator.accepted") 1.196 -end 1.197 - 1.198 -local initiator_count = initiators_members_selector:count() 1.199 - 1.200 -tabs[#tabs+1] = { 1.201 - name = "initiators", 1.202 - label = _"Initiators" .. " (" .. tostring(initiator_count) .. ")", 1.203 - icon = { static = "icons/16/user_edit.png" }, 1.204 - module = "initiative", 1.205 - view = "_initiators", 1.206 - params = { 1.207 - initiative = initiative, 1.208 - initiator = initiator, 1.209 - initiators_members_selector = initiators_members_selector 1.210 - } 1.211 -} 1.212 - 1.213 local drafts_count = initiative:get_reference_selector("drafts"):count() 1.214 1.215 tabs[#tabs+1] = {