liquid_feedback_frontend

view app/main/member/_list.lua @ 124:f740026b1518

add initiator support in delegation

if a delegation is issued from the initiative view, the initiators
from that one are added to the delegation target list. this makes it easier to delegate to the author without the need to add him to the contact list.
author Daniel Poelzleithner <poelzi@poelzi.org>
date Mon Sep 20 20:32:04 2010 +0200 (2010-09-20)
parents 00d1004545f1
children b9c8503feff7
line source
1 local members_selector = param.get("members_selector", "table")
2 local initiative = param.get("initiative", "table")
3 local issue = param.get("issue", "table")
4 local trustee = param.get("trustee", "table")
5 local initiator = param.get("initiator", "table")
7 ui.add_partial_param_names{ "member_list" }
9 local filter = {
10 label = _"Order by",
11 name = "member_list",
12 {
13 name = "name",
14 label = _"A-Z",
15 selector_modifier = function(selector) selector:add_order_by("name") end
16 },
17 {
18 name = "name_desc",
19 label = _"Z-A",
20 selector_modifier = function(selector) selector:add_order_by("name DESC") end
21 },
22 {
23 name = "newest",
24 label = _"Newest",
25 selector_modifier = function(selector) selector:add_order_by("created DESC, id DESC") end
26 },
27 {
28 name = "oldest",
29 label = _"Oldest",
30 selector_modifier = function(selector) selector:add_order_by("created, id") end
31 },
32 }
34 if initiative then
35 filter[#filter] = {
36 name = "delegations",
37 label = _"Delegations",
38 selector_modifier = function(selector) selector:add_order_by("weight DESC") end
39 }
40 end
42 ui.filters{
43 label = _"Change order",
44 selector = members_selector,
45 filter,
46 content = function()
47 ui.paginate{
48 selector = members_selector,
49 per_page = 100,
50 content = function()
51 ui.container{
52 attr = { class = "member_list" },
53 content = function()
54 local members = members_selector:exec()
55 local columns = {
56 {
57 label = _"Name",
58 content = function(member)
59 ui.link{
60 module = "member",
61 view = "show",
62 id = member.id,
63 content = function()
64 ui.image{
65 attr = { width = 48, height = 48 },
66 module = "member",
67 view = "avatar",
68 id = member.id,
69 extension = "jpg"
70 }
71 end
72 }
73 end
74 },
75 {
76 label = _"Name",
77 content = function(member)
78 ui.link{
79 module = "member",
80 view = "show",
81 id = member.id,
82 content = member.name
83 }
84 if member.admin then
85 ui.image{
86 attr = {
87 alt = _"Administrator",
88 title = _"Administrator"
89 },
90 static = "icons/16/cog.png"
91 }
92 end
93 -- TODO performance
94 local contact = Contact:by_pk(app.session.member.id, member.id)
95 if contact then
96 ui.image{
97 attr = {
98 alt = _"Saved as contact",
99 title = _"Saved as contact"
100 },
101 static = "icons/16/book_edit.png"
102 }
103 end
104 end
105 }
106 }
108 if initiative then
109 columns[#columns+1] = {
110 label = _"Delegations",
111 field_attr = { style = "text-align: right;" },
112 content = function(member)
113 if member.weight > 1 then
114 ui.link{
115 content = member.weight,
116 module = "support",
117 view = "show_incoming",
118 params = { member_id = member.id, initiative_id = initiative.id }
119 }
120 end
121 end
122 }
123 end
125 for i, member in ipairs(members) do
126 execute.view{
127 module = "member",
128 view = "_show_thumb",
129 params = {
130 member = member,
131 initiative = initiative,
132 issue = issue,
133 trustee = trustee,
134 initiator = initiator
135 }
136 }
137 end
139 end
140 }
141 slot.put('<br style="clear: left;" />')
142 end
143 }
144 end
145 }

Impressum / About Us