rev |
line source |
bsw/jbe@19
|
1 function change_delegation(scope, area_id, issue, delegation)
|
bsw/jbe@19
|
2 local image
|
bsw/jbe@19
|
3 local text
|
bsw/jbe@19
|
4 if scope == "global" and delegation then
|
bsw/jbe@19
|
5 image = { static = "icons/16/table_go.png" }
|
bsw/jbe@19
|
6 text = _"Change global delegation"
|
bsw/jbe@19
|
7 elseif scope == "global" and not delegation then
|
bsw/jbe@19
|
8 image = { static = "icons/16/table_go.png" }
|
bsw/jbe@19
|
9 text = _"Set global delegation"
|
bsw/jbe@19
|
10 elseif scope == "area" and delegation and delegation.area_id then
|
bsw/jbe@19
|
11 image = { static = "icons/16/table_go.png" }
|
bsw/jbe@19
|
12 text = _"Change area delegation"
|
bsw/jbe@19
|
13 elseif scope == "area" and not (delegation and delegation.area_id) then
|
bsw/jbe@19
|
14 image = { static = "icons/16/table_go.png" }
|
bsw/jbe@19
|
15 text = _"Set area delegation"
|
bsw/jbe@19
|
16 elseif scope == "issue" then
|
bsw/jbe@19
|
17 if delegation and delegation.issue_id then
|
bsw/jbe@19
|
18 image = { static = "icons/16/table_go.png" }
|
bsw/jbe@19
|
19 text = _"Change issue delegation"
|
bsw/jbe@19
|
20 elseif issue.state ~= "finished" and issue.state ~= "cancelled" then
|
bsw/jbe@19
|
21 image = { static = "icons/16/table_go.png" }
|
bsw/jbe@19
|
22 text = _"Set issue delegation"
|
bsw/jbe@19
|
23 end
|
bsw/jbe@19
|
24 end
|
bsw/jbe@19
|
25 ui.container{
|
bsw/jbe@19
|
26 attr = {
|
bsw/jbe@19
|
27 class = "change_delegation",
|
bsw/jbe@19
|
28 },
|
bsw/jbe@19
|
29 content = function()
|
bsw/jbe@19
|
30 ui.link{
|
bsw/jbe@19
|
31 image = image,
|
bsw/jbe@19
|
32 text = text,
|
bsw/jbe@19
|
33 module = "delegation",
|
bsw/jbe@19
|
34 view = "new",
|
bsw/jbe@19
|
35 params = {
|
bsw/jbe@19
|
36 issue_id = issue and issue.id or nil,
|
bsw/jbe@19
|
37 area_id = area_id
|
bsw/jbe@19
|
38 },
|
bsw/jbe@19
|
39 }
|
bsw/jbe@19
|
40 if delegation then
|
bsw/jbe@19
|
41 ui.link{
|
bsw/jbe@19
|
42 image = { static = "icons/16/delete.png" },
|
bsw/jbe@19
|
43 text = _"Revoke",
|
bsw/jbe@19
|
44 module = "delegation",
|
bsw/jbe@19
|
45 action = "update",
|
bsw/jbe@19
|
46 params = { issue_id = delegation.issue_id, area_id = delegation.area_id, delete = true },
|
bsw/jbe@19
|
47 routing = {
|
bsw/jbe@19
|
48 default = {
|
bsw/jbe@19
|
49 mode = "redirect",
|
bsw/jbe@19
|
50 module = request.get_module(),
|
bsw/jbe@19
|
51 view = request.get_view(),
|
bsw/jbe@19
|
52 id = param.get_id_cgi(),
|
bsw/jbe@19
|
53 params = param.get_all_cgi()
|
bsw/jbe@19
|
54 }
|
bsw/jbe@19
|
55 }
|
bsw/jbe@19
|
56 }
|
bsw/jbe@19
|
57 end
|
bsw/jbe@19
|
58 end
|
bsw/jbe@19
|
59 }
|
bsw/jbe@19
|
60 end
|
bsw/jbe@5
|
61
|
bsw/jbe@19
|
62 local delegation
|
bsw/jbe@19
|
63 local area_id
|
bsw/jbe@19
|
64 local issue_id
|
bsw/jbe@19
|
65
|
bsw/jbe@19
|
66 local scope = "global"
|
bsw/jbe@5
|
67
|
bsw/jbe@19
|
68 if param.get("initiative_id", atom.integer) then
|
bsw/jbe@19
|
69 issue_id = Initiative:by_id(param.get("initiative_id", atom.integer)).issue_id
|
bsw/jbe@19
|
70 scope = "issue"
|
bsw/jbe@19
|
71 end
|
bsw/jbe@5
|
72
|
bsw/jbe@19
|
73 if param.get("issue_id", atom.integer) then
|
bsw/jbe@19
|
74 issue_id = param.get("issue_id", atom.integer)
|
bsw/jbe@19
|
75 scope = "issue"
|
bsw/jbe@19
|
76 end
|
bsw/jbe@19
|
77
|
bsw/jbe@19
|
78 if param.get("area_id", atom.integer) then
|
bsw/jbe@19
|
79 area_id = param.get("area_id", atom.integer)
|
bsw/jbe@19
|
80 scope = "area"
|
bsw/jbe@19
|
81 end
|
bsw/jbe@5
|
82
|
bsw/jbe@5
|
83
|
bsw/jbe@5
|
84
|
bsw/jbe@19
|
85 local delegation
|
bsw/jbe@19
|
86 local issue
|
bsw/jbe@19
|
87 if issue_id then
|
bsw/jbe@19
|
88 issue = Issue:by_id(issue_id)
|
bsw/jbe@19
|
89 delegation = Delegation:by_pk(app.session.member.id, nil, issue_id)
|
bsw/jbe@19
|
90 if not delegation then
|
bsw/jbe@19
|
91 delegation = Delegation:by_pk(app.session.member.id, issue.area_id)
|
bsw/jbe@5
|
92 end
|
bsw/jbe@19
|
93 elseif area_id then
|
bsw/jbe@19
|
94 delegation = Delegation:by_pk(app.session.member.id, area_id)
|
bsw/jbe@19
|
95 end
|
bsw/jbe@5
|
96
|
bsw/jbe@19
|
97 if not delegation then
|
bsw/jbe@19
|
98 delegation = Delegation:by_pk(app.session.member.id)
|
bsw/jbe@19
|
99 end
|
bsw/jbe@19
|
100
|
bsw/jbe@19
|
101
|
bsw/jbe@19
|
102 slot.select("actions", function()
|
bsw/jbe@19
|
103
|
bsw/jbe@5
|
104 if delegation then
|
bsw/jbe@5
|
105 ui.container{
|
bsw/jbe@5
|
106 attr = { class = "delegation vote_info"},
|
bsw/jbe@5
|
107 content = function()
|
bsw@2
|
108 ui.container{
|
bsw@2
|
109 attr = {
|
bsw/jbe@4
|
110 title = _"Click for details",
|
bsw/jbe@4
|
111 class = "head head_active",
|
bsw@2
|
112 style = "cursor: pointer;",
|
bsw/jbe@4
|
113 onclick = "document.getElementById('delegation_content').style.display = 'block';"
|
bsw@2
|
114 },
|
bsw/jbe@4
|
115 content = function()
|
bsw/jbe@4
|
116 ui.image{
|
bsw/jbe@4
|
117 static = "icons/16/error.png"
|
bsw/jbe@4
|
118 }
|
bsw/jbe@4
|
119 if delegation.issue_id then
|
bsw/jbe@4
|
120 slot.put(_"Issue delegation active")
|
bsw/jbe@4
|
121 elseif delegation.area_id then
|
bsw/jbe@4
|
122 slot.put(_"Area wide delegation active")
|
bsw/jbe@4
|
123 else
|
bsw/jbe@4
|
124 slot.put(_"Global delegation active")
|
bsw/jbe@4
|
125 end
|
bsw/jbe@4
|
126 ui.image{
|
bsw/jbe@4
|
127 static = "icons/16/dropdown.png"
|
bsw/jbe@4
|
128 }
|
bsw/jbe@4
|
129 end
|
bsw@2
|
130 }
|
bsw/jbe@4
|
131 ui.container{
|
bsw/jbe@4
|
132 attr = { class = "content", id = "delegation_content" },
|
bsw/jbe@4
|
133 content = function()
|
bsw@2
|
134 ui.container{
|
bsw/jbe@4
|
135 attr = {
|
bsw/jbe@4
|
136 class = "close",
|
bsw/jbe@4
|
137 style = "cursor: pointer;",
|
bsw/jbe@4
|
138 onclick = "document.getElementById('delegation_content').style.display = 'none';"
|
bsw/jbe@4
|
139 },
|
bsw@2
|
140 content = function()
|
bsw/jbe@4
|
141 ui.image{ static = "icons/16/cross.png" }
|
bsw/jbe@4
|
142 end
|
bsw/jbe@4
|
143 }
|
bsw/jbe@4
|
144
|
bsw/jbe@4
|
145 local delegation_chain = Member:new_selector()
|
bsw/jbe@4
|
146 :add_field("delegation_chain.*")
|
bsw/jbe@4
|
147 :join("delegation_chain(" .. tostring(app.session.member.id) .. ", " .. tostring(area_id or "NULL") .. ", " .. tostring(issue_id or "NULL") .. ")", "delegation_chain", "member.id = delegation_chain.member_id")
|
bsw/jbe@4
|
148 :add_order_by("index")
|
bsw/jbe@4
|
149 :exec()
|
bsw/jbe@4
|
150
|
bsw/jbe@19
|
151 if not issue or (issue.state ~= "finished" and issue.state ~= "cancelled") then
|
bsw/jbe@19
|
152 change_delegation(scope, area_id, issue, delegation)
|
bsw/jbe@19
|
153 end
|
bsw/jbe@19
|
154
|
bsw/jbe@4
|
155 for i, record in ipairs(delegation_chain) do
|
bsw/jbe@4
|
156 local style
|
bsw/jbe@4
|
157 local overridden = record.overridden
|
bsw/jbe@4
|
158 if record.scope_in then
|
bsw@2
|
159 ui.container{
|
bsw/jbe@4
|
160 attr = { class = "delegation_info" },
|
bsw@2
|
161 content = function()
|
bsw/jbe@4
|
162 if not overridden then
|
bsw/jbe@4
|
163 ui.image{
|
bsw/jbe@4
|
164 attr = { class = "delegation_arrow" },
|
bsw/jbe@4
|
165 static = "delegation_arrow_vertical.jpg"
|
bsw/jbe@4
|
166 }
|
bsw/jbe@4
|
167 else
|
bsw/jbe@4
|
168 ui.image{
|
bsw/jbe@4
|
169 attr = { class = "delegation_arrow delegation_arrow_overridden" },
|
bsw/jbe@4
|
170 static = "delegation_arrow_vertical.jpg"
|
bsw/jbe@4
|
171 }
|
bsw/jbe@4
|
172 end
|
bsw/jbe@4
|
173 ui.container{
|
bsw/jbe@4
|
174 attr = { class = "delegation_scope" .. (overridden and " delegation_scope_overridden" or "") },
|
bsw/jbe@4
|
175 content = function()
|
bsw/jbe@4
|
176 if record.scope_in == "global" then
|
bsw/jbe@4
|
177 slot.put(_"Global delegation")
|
bsw/jbe@4
|
178 elseif record.scope_in == "area" then
|
bsw/jbe@4
|
179 slot.put(_"Area delegation")
|
bsw/jbe@4
|
180 elseif record.scope_in == "issue" then
|
bsw/jbe@4
|
181 slot.put(_"Issue delegation")
|
bsw/jbe@4
|
182 end
|
bsw/jbe@4
|
183 end
|
bsw/jbe@4
|
184 }
|
bsw@2
|
185 end
|
bsw@2
|
186 }
|
bsw/jbe@4
|
187 end
|
bsw/jbe@4
|
188 ui.container{
|
bsw/jbe@4
|
189 attr = { class = overridden and "delegation_overridden" or "" },
|
bsw/jbe@4
|
190 content = function()
|
bsw/jbe@4
|
191 execute.view{
|
bsw/jbe@4
|
192 module = "member",
|
bsw/jbe@4
|
193 view = "_show_thumb",
|
bsw/jbe@4
|
194 params = { member = record }
|
bsw@2
|
195 }
|
bsw@2
|
196 end
|
bsw/jbe@4
|
197 }
|
bsw/jbe@4
|
198 if record.participation and not record.overridden then
|
bsw/jbe@4
|
199 ui.container{
|
bsw/jbe@4
|
200 attr = { class = "delegation_participation" },
|
bsw/jbe@4
|
201 content = function()
|
bsw/jbe@19
|
202 slot.put(_"This member is participating, the rest of delegation chain is suspended while discussing")
|
bsw/jbe@4
|
203 end
|
bsw/jbe@4
|
204 }
|
bsw@2
|
205 end
|
bsw/jbe@4
|
206 slot.put("<br style='clear: left'/>")
|
bsw/jbe@4
|
207 end
|
bsw/jbe@0
|
208 end
|
bsw/jbe@4
|
209 }
|
bsw/jbe@0
|
210 end
|
bsw/jbe@5
|
211 }
|
bsw/jbe@19
|
212 else
|
bsw/jbe@19
|
213 change_delegation(scope, area_id, issue)
|
bsw/jbe@5
|
214 end
|
bsw/jbe@0
|
215 end)
|