liquid_feedback_frontend
annotate app/main/delegation/_show_box.lua @ 41:53a45356c107
Several bugfixes, including bugfix in timeline
- Fixed grouping of multiple new drafts in timeline
- Do not allow to add suggestions when issue is half frozen
- Do not show initiator invitations for (half-)frozen or closed issues
- Fixed problem with duplicates in display of vote-later requests
- Clarified german "member is participating" info text in delegation chain
- Hide inactive members from member listing
- Fixed grouping of multiple new drafts in timeline
- Do not allow to add suggestions when issue is half frozen
- Do not show initiator invitations for (half-)frozen or closed issues
- Fixed problem with duplicates in display of vote-later requests
- Clarified german "member is participating" info text in delegation chain
- Hide inactive members from member listing
author | bsw |
---|---|
date | Sun Mar 07 15:36:54 2010 +0100 (2010-03-07) |
parents | 00d1004545f1 |
children | bf885faf3452 |
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) |