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 +    

Impressum / About Us