liquid_feedback_frontend
diff app/main/lf2/initiative.lua @ 211:4993b71b383f
First checkin of lf2 (frontend second generation) prototype
| author | bsw |
|---|---|
| date | Wed Mar 02 20:06:26 2011 +0100 (2011-03-02) |
| parents | |
| children | 3e4ad069847a |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/app/main/lf2/initiative.lua Wed Mar 02 20:06:26 2011 +0100 1.3 @@ -0,0 +1,92 @@ 1.4 +slot.set_layout("lf2") 1.5 + 1.6 +local initiative = Initiative:by_id(param.get_id()) 1.7 + 1.8 +local issue = initiative.issue 1.9 + 1.10 +local supporting_members_selector = Member:new_selector() 1.11 + :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 }) 1.12 + :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 }) 1.13 + :add_field("dis.weight", "weight") 1.14 + :add_order_by("dis.weight DESC") 1.15 +local supporting_members = supporting_members_selector:exec() 1.16 + 1.17 +local voting_members_selector = Member:new_selector() 1.18 + :join("direct_voter", nil, { "direct_voter.issue_id = ? AND direct_voter.member_id = member.id", issue.id }) 1.19 + :add_field("direct_voter.weight", "weight") 1.20 + :add_order_by("direct_voter.weight DESC") 1.21 +local voting_members = voting_members_selector:exec() 1.22 + 1.23 +local alternative_initiatives = initiative.issue.initiatives 1.24 +alternative_initiatives:load("initiating_members", nil, "initiating_members") 1.25 + 1.26 + 1.27 +slot.select("sidebar", function() 1.28 + 1.29 + execute.view{ module = "lf2", view = "_sidebar_issue", params = { issue = issue } } 1.30 + ui.container{ attr = { class = "boxhead" }, content = _"Alternative initiatives" } 1.31 + 1.32 + execute.view{ module = "lf2", view = "_sidebar_initiatives", params = { 1.33 + initiatives = alternative_initiatives 1.34 + } } 1.35 + 1.36 + execute.view{ module = "lf2", view = "_sidebar_drafts", params = { 1.37 + initiative = initiative 1.38 + } } 1.39 + 1.40 +end) 1.41 + 1.42 +local draft = initiative.current_draft 1.43 + 1.44 +ui.box{ 1.45 + content = function() 1.46 + 1.47 + ui.box_row{ class = "initiative head", content = function() ui.box_col { content = function() 1.48 + execute.view{ module = "lf2", view = "_initiative", params = { initiative = initiative } } 1.49 + end } end } 1.50 + 1.51 + ui.box_row{ class = "head2", content = function() ui.box_col{ content = function() 1.52 + if initiative.issue.fully_frozen and initiative.issue.closed then 1.53 + ui.link{ external = "#votes", text = _("#{vote_count} votes", { vote_count = #voting_members }) } 1.54 + slot.put(" · ") 1.55 + end 1.56 + ui.link{ external = "#suggestions", text = _("#{suggestion_count} suggestions", { suggestion_count = 23 }) } 1.57 + slot.put(" · ") 1.58 + ui.link{ external = "#supporters", text = _("#{supporter_count} supporters", { supporter_count = #supporting_members }) } 1.59 + end } end } 1.60 + 1.61 + ui.box_row{ content = function() ui.box_col{ content = function() 1.62 + execute.view{ module = "lf2", view = "_draft", params = { draft = draft } } 1.63 + end } end } 1.64 + end 1.65 +} 1.66 + 1.67 +if initiative.issue.fully_frozen and initiative.issue.closed then 1.68 + ui.boxhead{ name = "votes", content = _"Votes" } 1.69 + ui.box{ 1.70 + content = function() 1.71 + ui.box_row{ content = function() ui.box_col{ content = function() 1.72 + execute.view{ module = "lf2", view = "_avatars", params = { members = voting_members } } 1.73 + end } end } 1.74 + end 1.75 + } 1.76 +end 1.77 + 1.78 +ui.boxhead{ name = "suggestions", content = _"Suggestions" } 1.79 +ui.box{ 1.80 + content = function() 1.81 + ui.box_row{ content = function() ui.box_col{ content = function() 1.82 + slot.put("suggestions") 1.83 + end } end } 1.84 + end 1.85 +} 1.86 + 1.87 +ui.boxhead{ name = "supporters", content = _"Supporters" } 1.88 +ui.box{ 1.89 + content = function() 1.90 + ui.box_row{ content = function() ui.box_col{ content = function() 1.91 + execute.view{ module = "lf2", view = "_avatars", params = { members = supporting_members } } 1.92 + end } end } 1.93 + end 1.94 +} 1.95 +