bsw/jbe@4: slot.select("actions", function() bsw/jbe@0: bsw/jbe@5: local delegation bsw/jbe@5: local area_id bsw/jbe@5: local issue_id bsw/jbe@5: bsw/jbe@5: local scope = "global" bsw/jbe@5: bsw/jbe@5: if param.get("initiative_id", atom.integer) then bsw/jbe@5: issue_id = Initiative:by_id(param.get("initiative_id", atom.integer)).issue_id bsw/jbe@5: scope = "issue" bsw/jbe@5: end bsw/jbe@5: bsw/jbe@5: if param.get("issue_id", atom.integer) then bsw/jbe@5: issue_id = param.get("issue_id", atom.integer) bsw/jbe@5: scope = "issue" bsw/jbe@5: end bsw/jbe@5: bsw/jbe@5: if param.get("area_id", atom.integer) then bsw/jbe@5: area_id = param.get("area_id", atom.integer) bsw/jbe@5: scope = "area" bsw/jbe@5: end bsw/jbe@5: bsw/jbe@5: bsw/jbe@5: bsw/jbe@5: local delegation bsw/jbe@5: local issue bsw/jbe@5: if issue_id then bsw/jbe@5: issue = Issue:by_id(issue_id) bsw/jbe@5: delegation = Delegation:by_pk(app.session.member.id, nil, issue_id) bsw/jbe@5: if not delegation then bsw/jbe@5: delegation = Delegation:by_pk(app.session.member.id, issue.area_id) bsw/jbe@5: end bsw/jbe@5: elseif area_id then bsw/jbe@5: delegation = Delegation:by_pk(app.session.member.id, area_id) bsw/jbe@5: end bsw/jbe@5: bsw/jbe@5: if not delegation then bsw/jbe@5: delegation = Delegation:by_pk(app.session.member.id) bsw/jbe@5: end bsw/jbe@5: if delegation then bsw/jbe@5: ui.container{ bsw/jbe@5: attr = { class = "delegation vote_info"}, bsw/jbe@5: content = function() bsw@2: ui.container{ bsw@2: attr = { bsw/jbe@4: title = _"Click for details", bsw/jbe@4: class = "head head_active", bsw@2: style = "cursor: pointer;", bsw/jbe@4: onclick = "document.getElementById('delegation_content').style.display = 'block';" bsw@2: }, bsw/jbe@4: content = function() bsw/jbe@4: ui.image{ bsw/jbe@4: static = "icons/16/error.png" bsw/jbe@4: } bsw/jbe@4: if delegation.issue_id then bsw/jbe@4: slot.put(_"Issue delegation active") bsw/jbe@4: elseif delegation.area_id then bsw/jbe@4: slot.put(_"Area wide delegation active") bsw/jbe@4: else bsw/jbe@4: slot.put(_"Global delegation active") bsw/jbe@4: end bsw/jbe@4: ui.image{ bsw/jbe@4: static = "icons/16/dropdown.png" bsw/jbe@4: } bsw/jbe@4: end bsw@2: } bsw/jbe@4: ui.container{ bsw/jbe@4: attr = { class = "content", id = "delegation_content" }, bsw/jbe@4: content = function() bsw@2: ui.container{ bsw/jbe@4: attr = { bsw/jbe@4: class = "close", bsw/jbe@4: style = "cursor: pointer;", bsw/jbe@4: onclick = "document.getElementById('delegation_content').style.display = 'none';" bsw/jbe@4: }, bsw@2: content = function() bsw/jbe@4: ui.image{ static = "icons/16/cross.png" } bsw/jbe@4: end bsw/jbe@4: } bsw/jbe@4: bsw/jbe@4: local delegation_chain = Member:new_selector() bsw/jbe@4: :add_field("delegation_chain.*") bsw/jbe@4: :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: :add_order_by("index") bsw/jbe@4: :exec() bsw/jbe@4: bsw/jbe@4: for i, record in ipairs(delegation_chain) do bsw/jbe@4: local style bsw/jbe@4: local overridden = record.overridden bsw/jbe@4: if record.scope_in then bsw@2: ui.container{ bsw/jbe@4: attr = { class = "delegation_info" }, bsw@2: content = function() bsw/jbe@4: if not overridden then bsw/jbe@4: ui.image{ bsw/jbe@4: attr = { class = "delegation_arrow" }, bsw/jbe@4: static = "delegation_arrow_vertical.jpg" bsw/jbe@4: } bsw/jbe@4: else bsw/jbe@4: ui.image{ bsw/jbe@4: attr = { class = "delegation_arrow delegation_arrow_overridden" }, bsw/jbe@4: static = "delegation_arrow_vertical.jpg" bsw/jbe@4: } bsw/jbe@4: end bsw/jbe@4: ui.container{ bsw/jbe@4: attr = { class = "delegation_scope" .. (overridden and " delegation_scope_overridden" or "") }, bsw/jbe@4: content = function() bsw/jbe@4: if record.scope_in == "global" then bsw/jbe@4: slot.put(_"Global delegation") bsw/jbe@4: elseif record.scope_in == "area" then bsw/jbe@4: slot.put(_"Area delegation") bsw/jbe@4: elseif record.scope_in == "issue" then bsw/jbe@4: slot.put(_"Issue delegation") bsw/jbe@4: end bsw/jbe@4: end bsw/jbe@4: } bsw/jbe@4: if i == 2 then bsw/jbe@5: if not issue or (issue.state ~= "finished" and issue.state ~= "cancelled") then bsw/jbe@5: ui.link{ bsw/jbe@5: attr = { class = "revoke" }, bsw/jbe@5: content = function() bsw/jbe@5: ui.image{ static = "icons/16/delete.png" } bsw/jbe@5: slot.put(_"Revoke") bsw/jbe@5: end, bsw/jbe@5: module = "delegation", bsw/jbe@5: action = "update", bsw/jbe@5: params = { issue_id = delegation.issue_id, area_id = delegation.area_id, delete = true }, bsw/jbe@5: routing = { bsw/jbe@5: default = { bsw/jbe@5: mode = "redirect", bsw/jbe@5: module = request.get_module(), bsw/jbe@5: view = request.get_view(), bsw/jbe@5: id = param.get_id_cgi(), bsw/jbe@5: params = param.get_all_cgi() bsw/jbe@5: } bsw/jbe@4: } bsw/jbe@4: } bsw/jbe@5: end bsw@2: end bsw@2: end bsw@2: } bsw/jbe@4: end bsw/jbe@4: ui.container{ bsw/jbe@4: attr = { class = overridden and "delegation_overridden" or "" }, bsw/jbe@4: content = function() bsw/jbe@4: execute.view{ bsw/jbe@4: module = "member", bsw/jbe@4: view = "_show_thumb", bsw/jbe@4: params = { member = record } bsw@2: } bsw@2: end bsw/jbe@4: } bsw/jbe@4: if record.participation and not record.overridden then bsw/jbe@4: ui.container{ bsw/jbe@4: attr = { class = "delegation_participation" }, bsw/jbe@4: content = function() bsw/jbe@4: slot.put("

-----> Participation
") bsw/jbe@4: end bsw/jbe@4: } bsw@2: end bsw/jbe@4: slot.put("
") bsw/jbe@4: end bsw/jbe@0: end bsw/jbe@4: } bsw/jbe@0: end bsw/jbe@5: } bsw/jbe@5: bsw/jbe@5: bsw/jbe@5: end bsw/jbe@5: ui.link{ bsw/jbe@5: content = function() bsw/jbe@5: if scope == "global" and delegation then bsw/jbe@5: ui.image{ static = "icons/16/table_go.png" } bsw/jbe@5: slot.put(_"Change global delegation") bsw/jbe@5: elseif scope == "global" and not delegation then bsw/jbe@5: ui.image{ static = "icons/16/table_go.png" } bsw/jbe@5: slot.put(_"Set global delegation") bsw/jbe@5: elseif scope == "area" and delegation and delegation.area_id then bsw/jbe@5: ui.image{ static = "icons/16/table_go.png" } bsw/jbe@5: slot.put(_"Change area delegation") bsw/jbe@5: elseif scope == "area" and not (delegation and delegation.area_id) then bsw/jbe@5: ui.image{ static = "icons/16/table_go.png" } bsw/jbe@5: slot.put(_"Set area delegation") bsw/jbe@5: elseif scope == "issue" then bsw/jbe@5: if delegation and delegation.issue_id then bsw/jbe@4: ui.image{ static = "icons/16/table_go.png" } bsw/jbe@5: slot.put(_"Change issue delegation") bsw/jbe@5: elseif issue.state ~= "finished" and issue.state ~= "cancelled" then bsw/jbe@5: ui.image{ static = "icons/16/table_go.png" } bsw/jbe@5: slot.put(_"Set issue delegation") bsw/jbe@5: end bsw/jbe@5: end bsw/jbe@5: end, bsw/jbe@5: module = "delegation", bsw/jbe@5: view = "new", bsw/jbe@5: params = { bsw/jbe@5: area_id = area_id, bsw/jbe@5: issue_id = issue_id bsw/jbe@5: } bsw/jbe@4: } bsw/jbe@0: end)