rev |
line source |
bsw@211
|
1 slot.set_layout("lf2")
|
bsw@211
|
2
|
bsw@213
|
3 slot.put_into("leftright_pre", '<div class="sidebar_right">')
|
bsw@213
|
4 slot.put_into("leftright_post", '</div>')
|
bsw@213
|
5
|
bsw@211
|
6 local initiative = Initiative:by_id(param.get_id())
|
bsw@211
|
7
|
bsw@211
|
8 local issue = initiative.issue
|
bsw@213
|
9 issue:load("interest_for_member", { member_id = app.session.member_id }, "interest")
|
bsw@211
|
10
|
bsw@211
|
11 local supporting_members_selector = Member:new_selector()
|
bsw@211
|
12 :join("direct_supporter_snapshot", "dss", { "dss.issue_id = ? AND dss.initiative_id = ? AND dss.member_id = member.id and dss.event = (select latest_snapshot_event from issue where id = ?)", issue.id, initiative.id, issue.id })
|
bsw@211
|
13 :join("direct_interest_snapshot", "dis", { "dis.issue_id = ? AND dis.member_id = member.id and dis.event = (select latest_snapshot_event from issue where id = ?)", issue.id, issue.id })
|
bsw@211
|
14 :add_field("dis.weight", "weight")
|
bsw@211
|
15 :add_order_by("dis.weight DESC")
|
bsw@211
|
16 local supporting_members = supporting_members_selector:exec()
|
bsw@211
|
17
|
bsw@211
|
18 local voting_members_selector = Member:new_selector()
|
bsw@211
|
19 :join("direct_voter", nil, { "direct_voter.issue_id = ? AND direct_voter.member_id = member.id", issue.id })
|
bsw@211
|
20 :add_field("direct_voter.weight", "weight")
|
bsw@211
|
21 :add_order_by("direct_voter.weight DESC")
|
bsw@211
|
22 local voting_members = voting_members_selector:exec()
|
bsw@211
|
23
|
bsw@211
|
24 local alternative_initiatives = initiative.issue.initiatives
|
bsw@211
|
25 alternative_initiatives:load("initiating_members", nil, "initiating_members")
|
bsw@211
|
26
|
bsw@215
|
27 local support = Supporter:by_pk(initiative.id, app.session.member.id)
|
bsw@215
|
28
|
bsw@215
|
29 app.topnav_phase = issue.phase
|
bsw@217
|
30 app.topnav_area_id = issue.area_id
|
bsw@217
|
31 app.topnav_unit_id = issue.area.unit_id
|
bsw@211
|
32
|
bsw@211
|
33 slot.select("sidebar", function()
|
bsw@211
|
34
|
bsw@215
|
35 execute.view{ module = "lf2", view = "_sidebar_issue", params = { issue = issue, initiative_id = initiative.id, alternative_initiatives = alternative_initiatives } }
|
bsw@215
|
36
|
bsw@211
|
37 execute.view{ module = "lf2", view = "_sidebar_drafts", params = {
|
bsw@211
|
38 initiative = initiative
|
bsw@211
|
39 } }
|
bsw@211
|
40
|
bsw@211
|
41 end)
|
bsw@211
|
42
|
bsw@211
|
43 local draft = initiative.current_draft
|
bsw@211
|
44
|
bsw@211
|
45 ui.box{
|
bsw@211
|
46 content = function()
|
bsw@211
|
47
|
bsw@217
|
48 ui.box_row{ class = "initiative head", content = function() ui.box_col { content = function()
|
bsw@211
|
49 execute.view{ module = "lf2", view = "_initiative", params = { initiative = initiative } }
|
bsw@211
|
50 end } end }
|
bsw@211
|
51
|
bsw@217
|
52 if initiative.issue.closed then
|
bsw@217
|
53 ui.box_row{ content = function() ui.box_col{ content = function()
|
bsw@215
|
54 if initiative.issue.accepted then
|
bsw@215
|
55 if initiative.admitted then
|
bsw@215
|
56 if initiative.agreed then
|
bsw@215
|
57 if initiative.rank == 1 then
|
bsw@215
|
58 ui.image{ static = "lf2/icon_award_gold.png" }
|
bsw@215
|
59 slot.put(" ")
|
bsw@215
|
60 ui.tag{ content = _"Approved" }
|
bsw@215
|
61 else
|
bsw@215
|
62 ui.image{ static = "lf2/icon_award_silver.png" }
|
bsw@215
|
63 slot.put(" ")
|
bsw@215
|
64 ui.tag{ content = _("Not approved (rank #{rank})", { rank = initiative.rank }) }
|
bsw@215
|
65 end
|
bsw@215
|
66 else
|
bsw@215
|
67 ui.image{ static = "lf2/icon_cross.png" }
|
bsw@215
|
68 slot.put(" ")
|
bsw@217
|
69 ui.tag{ content = _"Initiative not approved (no majority)" }
|
bsw@215
|
70 end
|
bsw@217
|
71 slot.put(" · ")
|
bsw@217
|
72 ui.tag{ class = "yes_count", content = _("#{count} Yes", { count = initiative.positive_votes }) }
|
bsw@217
|
73 slot.put(" · ")
|
bsw@217
|
74 ui.tag{ class = "no_count", content = _("#{count} No", { count = initiative.negative_votes }) }
|
bsw@217
|
75 slot.put(" · ")
|
bsw@217
|
76 ui.tag{ class = "abstention_count", content = _("#{count} Abstention", { count = initiative.issue.voter_count - initiative.positive_votes - initiative.negative_votes }) }
|
bsw@217
|
77
|
bsw@215
|
78 else
|
bsw@215
|
79 ui.image{ static = "lf2/icon_cross.png" }
|
bsw@215
|
80 slot.put(" ")
|
bsw@217
|
81 ui.tag{ content = _"Initiative not admitted (quorum failed)" }
|
bsw@215
|
82 end
|
bsw@215
|
83 else
|
bsw@215
|
84 ui.image{ static = "lf2/icon_cross.png" }
|
bsw@215
|
85 slot.put(" ")
|
bsw@217
|
86 ui.tag{ content = _"Issue not accepted (quorum failed)" }
|
bsw@215
|
87 end
|
bsw@217
|
88 end } end }
|
bsw@217
|
89 end
|
bsw@217
|
90
|
bsw@217
|
91 ui.box_row{ class = "", content = function() ui.box_col{ content = function()
|
bsw@211
|
92 if initiative.issue.fully_frozen and initiative.issue.closed then
|
bsw@215
|
93 if initiative.admitted and initiative.issue.ranks_available then
|
bsw@215
|
94 ui.link{ external = "#votes", text = _("#{vote_count}+#{delegated_weight} votes", { vote_count = #voting_members, delegated_weight = initiative.issue.voter_count - #voting_members }) }
|
bsw@217
|
95 slot.put(" · ")
|
bsw@215
|
96 end
|
bsw@215
|
97 end
|
bsw@211
|
98 ui.link{ external = "#suggestions", text = _("#{suggestion_count} suggestions", { suggestion_count = 23 }) }
|
bsw@211
|
99 slot.put(" · ")
|
bsw@215
|
100 ui.link{ external = "#supporters", text = _("#{supporter_count}+#{delegated_weight} supporters", { supporter_count = #supporting_members, delegated_weight = initiative.supporter_count - #supporting_members }) }
|
bsw@211
|
101 end } end }
|
bsw@211
|
102
|
bsw@215
|
103 execute.view{ module = "lf2", view = "_initiative_support", params = {
|
bsw@215
|
104 initiative = initiative
|
bsw@215
|
105 } }
|
bsw@215
|
106
|
bsw@215
|
107 ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Current draft" } end }
|
bsw@217
|
108 ui.box_row{ class = "member_content", content = function() ui.box_col{ class = "draft", content = function()
|
bsw@211
|
109 execute.view{ module = "lf2", view = "_draft", params = { draft = draft } }
|
bsw@211
|
110 end } end }
|
bsw@211
|
111
|
bsw@215
|
112 if initiative.issue.fully_frozen and initiative.issue.closed then
|
bsw@215
|
113 ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Voters" } end }
|
bsw@211
|
114 ui.box_row{ content = function() ui.box_col{ content = function()
|
bsw@216
|
115 execute.view{ module = "lf2", view = "_avatars", params = { members = voting_members, issue_id = initiative.issue_id } }
|
bsw@211
|
116 end } end }
|
bsw@211
|
117 end
|
bsw@211
|
118
|
bsw@215
|
119 ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Suggestions" } end }
|
bsw@211
|
120 ui.box_row{ content = function() ui.box_col{ content = function()
|
bsw@211
|
121 slot.put("suggestions")
|
bsw@211
|
122 end } end }
|
bsw@215
|
123
|
bsw@215
|
124 ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Supporters" } end }
|
bsw@211
|
125 ui.box_row{ content = function() ui.box_col{ content = function()
|
bsw@216
|
126 execute.view{ module = "lf2", view = "_avatars", params = { members = supporting_members, issue_id = initiative.issue_id } }
|
bsw@211
|
127 end } end }
|
bsw@215
|
128
|
bsw@215
|
129 end }
|