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