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)