bsw/jbe@0: slot.select("delegation", function() bsw/jbe@0: bsw/jbe@0: local delegation bsw/jbe@0: local area_id bsw/jbe@0: local issue_id bsw/jbe@0: bsw/jbe@0: local scope = "global" bsw/jbe@0: bsw/jbe@0: if param.get("initiative_id", atom.integer) then bsw/jbe@0: issue_id = Initiative:by_id(param.get("initiative_id", atom.integer)).issue_id bsw/jbe@0: scope = "issue" bsw/jbe@0: end bsw/jbe@0: bsw/jbe@0: if param.get("issue_id", atom.integer) then bsw/jbe@0: issue_id = param.get("issue_id", atom.integer) bsw/jbe@0: scope = "issue" bsw/jbe@0: end bsw/jbe@0: bsw/jbe@0: if param.get("area_id", atom.integer) then bsw/jbe@0: area_id = param.get("area_id", atom.integer) bsw/jbe@0: scope = "area" bsw/jbe@0: end bsw/jbe@0: bsw/jbe@0: bsw/jbe@0: bsw/jbe@0: local delegation bsw/jbe@0: bsw/jbe@0: if issue_id then bsw/jbe@0: delegation = Delegation:by_pk(app.session.member.id, nil, issue_id) bsw/jbe@0: if not delegation then bsw/jbe@0: local issue = Issue:by_id(issue_id) bsw/jbe@0: delegation = Delegation:by_pk(app.session.member.id, issue.area_id) bsw/jbe@0: end bsw/jbe@0: elseif area_id then bsw/jbe@0: delegation = Delegation:by_pk(app.session.member.id, area_id) bsw/jbe@0: end bsw/jbe@0: bsw/jbe@0: if not delegation then bsw/jbe@0: delegation = Delegation:by_pk(app.session.member.id) bsw/jbe@0: end bsw/jbe@0: if delegation then bsw/jbe@0: ui.container{ bsw/jbe@0: attr = { bsw/jbe@0: class = "head", bsw/jbe@0: style = "cursor: pointer;", bsw/jbe@0: onclick = "document.getElementById('delegation_content').style.display = 'block';" bsw/jbe@0: }, bsw/jbe@0: content = _"Your vote is delegated. [more]" bsw/jbe@0: } bsw/jbe@0: ui.container{ bsw/jbe@0: attr = { class = "content", id = "delegation_content" }, bsw/jbe@0: content = function() bsw/jbe@0: bsw/jbe@0: local delegation_chain = db:query{ "SELECT * FROM delegation_chain(?, ?, ?) JOIN member ON member.id = member_id ORDER BY index", app.session.member.id, area_id, issue_id } bsw/jbe@0: bsw/jbe@0: for i, record in ipairs(delegation_chain) do bsw/jbe@0: local style bsw/jbe@0: if record.participation then bsw/jbe@0: style = "font-weight: bold;" bsw/jbe@0: end bsw/jbe@0: if record.overridden then bsw/jbe@0: style = "color: #777;" bsw/jbe@0: end bsw/jbe@0: if not record.active then bsw/jbe@0: style = "text-decoration: line-through;" bsw/jbe@0: end bsw/jbe@0: if record.scope_in then bsw/jbe@0: ui.field.text{ bsw/jbe@0: value = " v " .. record.scope_in .. " v " bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: local name = record.name bsw/jbe@0: if record.member_id == app.session.member.id then bsw/jbe@0: name = _"Me" bsw/jbe@0: end bsw/jbe@0: ui.field.text{ bsw/jbe@0: attr = { style = style }, bsw/jbe@0: value = name bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "revoke" }, bsw/jbe@0: content = function() bsw/jbe@0: ui.image{ static = "icons/16/delete.png" } bsw/jbe@0: slot.put(_"Revoke") bsw/jbe@0: end, bsw/jbe@0: module = "delegation", bsw/jbe@0: action = "update", bsw/jbe@0: params = { issue_id = delegation.issue_id, area_id = delegation.area_id, delete = true }, bsw/jbe@0: routing = { bsw/jbe@0: default = { bsw/jbe@0: mode = "redirect", bsw/jbe@0: module = request.get_module(), bsw/jbe@0: view = request.get_view(), bsw/jbe@0: id = param.get_id_cgi(), bsw/jbe@0: params = param.get_all_cgi() bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: ui.container{ bsw/jbe@0: attr = { bsw/jbe@0: class = "head", bsw/jbe@0: style = "cursor: pointer;", bsw/jbe@0: onclick = "document.getElementById('delegation_content').style.display = 'none';" bsw/jbe@0: }, bsw/jbe@0: content = _"Click here to close." bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: bsw/jbe@0: end)