liquid_feedback_frontend
view app/main/initiative/show_tab.lua @ 157:24e47baf5f9b
strip html from fallback title
if the slot is used for title, make sure the html is stripped from it
if the slot is used for title, make sure the html is stripped from it
author | Daniel Poelzleithner <poelzi@poelzi.org> |
---|---|
date | Fri Oct 08 20:31:09 2010 +0200 (2010-10-08) |
parents | 0849be391140 |
children | 65a1f7a01e7b |
line source
1 local initiative = param.get("initiative", "table")
2 local initiator = param.get("initiator", "table")
4 if not initiative then
5 initiative = Initiative:by_id(param.get("initiative_id", atom.number))
6 end
8 if not initiator and app.session.member_id then
9 initiator = Initiator:by_pk(initiative.id, app.session.member.id)
10 end
12 local current_draft_name = _"Current draft"
13 if initiative.issue.half_frozen then
14 current_draft_name = _"Voting proposal"
15 end
17 if initiative.issue.state == "finished" then
18 current_draft_name = _"Voted proposal"
19 end
21 local tabs = {
22 {
23 name = "current_draft",
24 label = current_draft_name,
25 icon = { static = "icons/16/script.png" },
26 module = "initiative",
27 view = "_current_draft",
28 params = {
29 initiative = initiative,
30 initiator = initiator
31 }
32 }
33 }
35 if app.session.member_id then
36 if initiative.issue.ranks_available then
37 tabs[#tabs+1] = {
38 name = "voting",
39 label = _"Voting details",
40 icon = { static = "icons/16/email_open.png" },
41 module = "initiative",
42 view = "_show_voting",
43 params = {
44 initiative = initiative
45 }
46 }
47 end
48 end
50 local suggestion_count = initiative:get_reference_selector("suggestions"):count()
52 tabs[#tabs+1] = {
53 name = "suggestions",
54 label = _"Suggestions" .. " (" .. tostring(suggestion_count) .. ")",
55 icon = { static = "icons/16/comments.png" },
56 module = "initiative",
57 view = "_suggestions",
58 params = {
59 initiative = initiative
60 }
61 }
63 if app.session.member_id then
64 local members_selector = initiative:get_reference_selector("supporting_members_snapshot")
65 :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id")
66 :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")
67 :add_field("direct_interest_snapshot.weight")
68 :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event")
69 :add_where("direct_supporter_snapshot.satisfied")
70 :add_field("direct_supporter_snapshot.informed", "is_informed")
72 local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object")
73 local direct_satisfied_supporter_count = tmp.count
74 local indirect_satisfied_supporter_count = (tmp.weight or 0) - tmp.count
76 local count_string
77 if indirect_satisfied_supporter_count > 0 then
78 count_string = "(" .. tostring(direct_satisfied_supporter_count) .. "+" .. tostring(indirect_satisfied_supporter_count) .. ")"
79 else
80 count_string = "(" .. tostring(direct_satisfied_supporter_count) .. ")"
81 end
83 tabs[#tabs+1] = {
84 name = "satisfied_supporter",
85 label = _"Supporter" .. " " .. count_string,
86 icon = { static = "icons/16/thumb_up_green.png" },
87 module = "member",
88 view = "_list",
89 params = {
90 initiative = initiative,
91 members_selector = members_selector
92 }
93 }
95 local members_selector = initiative:get_reference_selector("supporting_members_snapshot")
96 :join("issue", nil, "issue.id = direct_supporter_snapshot.issue_id")
97 :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")
98 :add_field("direct_interest_snapshot.weight")
99 :add_where("direct_supporter_snapshot.event = issue.latest_snapshot_event")
100 :add_where("NOT direct_supporter_snapshot.satisfied")
101 :add_field("direct_supporter_snapshot.informed", "is_informed")
103 local tmp = db:query("SELECT count(1) AS count, sum(weight) AS weight FROM (" .. tostring(members_selector) .. ") as subquery", "object")
104 local direct_potential_supporter_count = tmp.count
105 local indirect_potential_supporter_count = (tmp.weight or 0) - tmp.count
107 local count_string
108 if indirect_potential_supporter_count > 0 then
109 count_string = "(" .. tostring(direct_potential_supporter_count) .. "+" .. tostring(indirect_potential_supporter_count) .. ")"
110 else
111 count_string = "(" .. tostring(direct_potential_supporter_count) .. ")"
112 end
114 tabs[#tabs+1] = {
115 name = "supporter",
116 label = _"Potential supporter" .. " " .. count_string,
117 icon = { static = "icons/16/thumb_up.png" },
118 module = "member",
119 view = "_list",
120 params = {
121 initiative = initiative,
122 members_selector = members_selector
123 }
124 }
126 local initiators_members_selector = initiative:get_reference_selector("initiating_members")
127 :add_field("initiator.accepted", "accepted")
129 if not (initiator and initiator.accepted) then
130 initiators_members_selector:add_where("initiator.accepted")
131 end
133 local initiator_count = initiators_members_selector:count()
135 tabs[#tabs+1] = {
136 name = "initiators",
137 label = _"Initiators" .. " (" .. tostring(initiator_count) .. ")",
138 icon = { static = "icons/16/user_edit.png" },
139 module = "initiative",
140 view = "_initiators",
141 params = {
142 initiative = initiative,
143 initiator = initiator,
144 initiators_members_selector = initiators_members_selector
145 }
146 }
147 end
149 local drafts_count = initiative:get_reference_selector("drafts"):count()
151 tabs[#tabs+1] = {
152 name = "drafts",
153 label = _"Draft history" .. " (" .. tostring(drafts_count) .. ")",
154 icon = { static = "icons/16/script.png" },
155 module = "draft",
156 view = "_list",
157 params = { drafts = initiative.drafts }
158 }
160 tabs[#tabs+1] = {
161 name = "details",
162 label = _"Details",
163 icon = { static = "icons/16/magnifier.png" },
164 module = "initiative",
165 view = "_details",
166 params = {
167 initiative = initiative,
168 members_selector = members_selector
169 }
170 }
172 tabs.module = "initiative"
173 tabs.view = "show_tab"
174 tabs.static_params = {
175 initiative_id = initiative.id
176 }
178 ui.tabs(tabs)