liquid_feedback_frontend

view app/main/member/_list.lua @ 1078:aba047e2bac4

Show all interested members of an issue instead of only 25
author bsw
date Wed Jul 23 19:35:50 2014 +0200 (2014-07-23)
parents 701a5cf6b067
children cb9e75ac968f
line source
1 local members_selector = param.get("members_selector", "table")
2 members_selector:add_where("member.activated NOTNULL")
4 local initiative = param.get("initiative", "table")
5 local issue = param.get("issue", "table")
6 local trustee = param.get("trustee", "table")
7 local initiator = param.get("initiator", "table")
8 local for_votes = param.get("for_votes", atom.boolean)
9 local no_filter = param.get ( "no_filter", atom.boolean )
10 local no_paginate = param.get ( "no_paginate", atom.boolean )
12 local paginator_name = param.get("paginator_name")
14 local member_class = param.get("member_class")
16 if initiative or issue then
17 if for_votes then
18 members_selector:left_join("delegating_voter", "_member_list__delegating_voter", { "_member_list__delegating_voter.issue_id = issue.id AND _member_list__delegating_voter.member_id = ?", app.session.member_id })
19 members_selector:add_field("member.id = ANY(_member_list__delegating_voter.delegate_member_ids)", "in_delegation_chain")
20 else
21 members_selector:left_join("delegating_interest_snapshot", "_member_list__delegating_interest", { "_member_list__delegating_interest.event = issue.latest_snapshot_event AND _member_list__delegating_interest.issue_id = issue.id AND _member_list__delegating_interest.member_id = ?", app.session.member_id })
22 members_selector:add_field("member.id = ANY(_member_list__delegating_interest.delegate_member_ids)", "in_delegation_chain")
23 end
24 end
26 ui.add_partial_param_names{ "member_list" }
28 local filter = { name = "member_list" }
30 filter[#filter+1] = {
31 name = "last_activity",
32 label = _"Latest activity",
33 selector_modifier = function(selector) selector:add_order_by("last_login DESC NULLS LAST, id DESC") end
34 }
35 filter[#filter+1] = {
36 name = "newest",
37 label = _"Newest",
38 selector_modifier = function(selector) selector:add_order_by("activated DESC, id DESC") end
39 }
40 filter[#filter+1] = {
41 name = "oldest",
42 label = _"Oldest",
43 selector_modifier = function(selector) selector:add_order_by("activated, id") end
44 }
46 filter[#filter+1] = {
47 name = "name",
48 label = _"A-Z",
49 selector_modifier = function(selector) selector:add_order_by("name") end
50 }
51 filter[#filter+1] = {
52 name = "name_desc",
53 label = _"Z-A",
54 selector_modifier = function(selector) selector:add_order_by("name DESC") end
55 }
57 if issue or initiative then
58 no_filter = true
59 if for_votes then
60 members_selector:add_order_by("voter_weight DESC, name, id")
61 else
62 members_selector:add_order_by("weight DESC, name, id")
63 end
64 end
67 function list_members()
68 local ui_paginate = ui.paginate
69 if no_paginate then
70 ui_paginate = function (args) args.content() end
71 end
72 ui_paginate{
73 name = paginator_name,
74 anchor = paginator_name,
75 selector = members_selector,
76 per_page = 25,
77 content = function()
78 ui.container{
79 attr = { class = "member_list" },
80 content = function()
81 local members = members_selector:exec()
83 for i, member in ipairs(members) do
84 ui.sectionRow( function()
85 execute.view{
86 module = "member",
87 view = "_show_thumb",
88 params = {
89 class = member_class,
90 member = member,
91 initiative = initiative,
92 issue = issue,
93 trustee = trustee,
94 initiator = initiator
95 }
96 }
97 end )
98 end
101 end
102 }
103 end
104 }
105 end
108 if no_filter then
109 list_members()
110 else
111 ui.filters {
112 label = _"Change order",
113 selector = members_selector,
114 content = list_members,
115 filter
116 }
117 end

Impressum / About Us