liquid_feedback_frontend

annotate app/main/issue/_sidebar_members.lua @ 1080:cb9e75ac968f

Better ordering of interested members
author bsw
date Wed Jul 23 20:47:57 2014 +0200 (2014-07-23)
parents 3b33eb84288e
children 32cc544d5a5b
rev   line source
bsw@1045 1 local issue = param.get("issue", "table")
bsw@1045 2 local initiative = param.get("initiative", "table")
bsw@1045 3
bsw@1045 4 if app.session:has_access("all_pseudonymous") then
bsw@1045 5 ui.sidebar ( "tab-members", function ()
bsw@1045 6
bsw@1080 7 ui.tag { tag = "a", attr = { name = "members" }, content = "" }
bsw@1045 8 local text = _"Interested members"
bsw@1045 9 if issue.state == "finished_with_winner" or issue.state == "finished_without_winner" then
bsw@1045 10 text = _"Voters"
bsw@1045 11 end
bsw@1045 12
bsw@1045 13 ui.sidebarHead( function()
bsw@1045 14 ui.heading{
bsw@1045 15 level = 2, content = text
bsw@1045 16 }
bsw@1045 17 end )
bsw@1045 18
bsw@1045 19 local interested_members_selector
bsw@1045 20
bsw@1045 21 if issue.state == "finished_with_winner" or issue.state == "finished_without_winner" then
bsw@1045 22 if initiative then
bsw@1045 23 interested_members_selector = Member:new_selector()
bsw@1045 24 :join("issue", nil, { "issue.id = ?", issue.id })
bsw@1045 25 :join("direct_voter", nil, { "direct_voter.issue_id = ? AND direct_voter.member_id = member.id", issue.id })
bsw@1045 26 :join("vote", nil, { "vote.member_id = member.id AND vote.initiative_id = ?", initiative.id })
bsw@1045 27 :add_field("direct_voter.weight", "voter_weight")
bsw@1045 28 :add_field("vote.grade")
bsw@1045 29 :add_field("direct_voter.comment", "voter_comment")
bsw@1045 30 else
bsw@1045 31 interested_members_selector = Member:new_selector()
bsw@1045 32 :join("issue", nil, { "issue.id = ?", issue.id })
bsw@1045 33 :join("direct_voter", nil, { "direct_voter.issue_id = ? AND direct_voter.member_id = member.id", issue.id })
bsw@1045 34 :add_field("direct_voter.weight", "voter_weight")
bsw@1045 35 :add_field("direct_voter.comment", "voter_comment")
bsw@1045 36 end
bsw@1045 37 else
bsw@1079 38 interested_members_selector = issue:get_reference_selector("interested_members_snapshot")
bsw@1045 39 :join("issue", nil, "issue.id = direct_interest_snapshot.issue_id")
bsw@1045 40 :add_field("direct_interest_snapshot.weight")
bsw@1045 41 :add_where("direct_interest_snapshot.event = issue.latest_snapshot_event")
bsw@1045 42
bsw@1045 43 if initiative then
bsw@1045 44 interested_members_selector:left_join("direct_supporter_snapshot", nil, { "direct_supporter_snapshot.initiative_id = ? AND direct_interest_snapshot.issue_id = direct_supporter_snapshot.issue_id AND direct_supporter_snapshot.member_id = direct_interest_snapshot.member_id AND direct_supporter_snapshot.event = issue.latest_snapshot_event", initiative.id })
bsw@1045 45 interested_members_selector:add_field("direct_supporter_snapshot.member_id NOTNULL", "supporter")
bsw@1045 46 interested_members_selector:add_field("satisfied", "supporter_satisfied")
bsw@1045 47 end
bsw@1045 48 end
bsw@1045 49
bsw@1045 50 execute.view{
bsw@1045 51 module = "member",
bsw@1045 52 view = "_list",
bsw@1045 53 params = {
bsw@1045 54 issue = issue,
bsw@1045 55 initiative = initiative,
bsw@1045 56 members_selector = interested_members_selector,
bsw@1080 57 paginator_name = "members",
bsw@1045 58 member_class = "sidebarRow sidebarRowNarrow",
bsw@1045 59 for_votes = issue.state == "finished_with_winner" or issue.state == "finished_without_winner"
bsw@1045 60 }
bsw@1045 61 }
bsw@1045 62
bsw@1045 63 end )
bsw@1045 64
bsw@1045 65 end

Impressum / About Us