bsw@297: local voting_right_unit_id bsw@297: bsw@248: local unit = Unit:by_id(param.get("unit_id", atom.integer)) bsw@248: if unit then bsw@297: voting_right_unit_id = unit.id bsw@264: slot.put_into("title", encode.html(config.single_unit_id and _"Set global delegation" or _"Set unit delegation")) bsw@248: util.help("delegation.new.unit") bsw@248: end bsw@248: bsw/jbe@0: local area = Area:by_id(param.get("area_id", atom.integer)) bsw/jbe@0: if area then bsw@297: voting_right_unit_id = area.unit_id bsw/jbe@0: slot.put_into("title", encode.html(_"Set delegation for Area '#{name}'":gsub("#{name}", area.name))) bsw/jbe@4: util.help("delegation.new.area") bsw/jbe@0: end bsw/jbe@0: bsw/jbe@0: local issue = Issue:by_id(param.get("issue_id", atom.integer)) bsw/jbe@0: if issue then bsw@297: voting_right_unit_id = issue.area.unit_id bsw/jbe@0: slot.put_into("title", encode.html(_"Set delegation for Issue ##{number} in Area '#{area_name}'":gsub("#{number}", issue.id):gsub("#{area_name}", issue.area.name))) bsw/jbe@4: util.help("delegation.new.issue") bsw/jbe@0: end bsw/jbe@0: poelzi@111: local initiative = Initiative:by_id(param.get("initiative_id", atom.integer)) poelzi@111: bsw/jbe@4: slot.select("actions", function() bsw/jbe@4: if issue then bsw/jbe@4: ui.link{ bsw/jbe@4: module = "issue", bsw/jbe@4: view = "show", bsw/jbe@4: id = issue.id, bsw/jbe@4: content = function() bsw/jbe@4: ui.image{ static = "icons/16/cancel.png" } bsw/jbe@4: slot.put(_"Cancel") bsw/jbe@4: end, bsw/jbe@4: } bsw/jbe@4: elseif area then bsw/jbe@4: ui.link{ bsw/jbe@4: module = "area", bsw/jbe@4: view = "show", bsw/jbe@4: id = area.id, bsw/jbe@4: content = function() bsw/jbe@4: ui.image{ static = "icons/16/cancel.png" } bsw/jbe@4: slot.put(_"Cancel") bsw/jbe@4: end, bsw/jbe@4: } bsw/jbe@4: else bsw/jbe@4: ui.link{ bsw/jbe@4: module = "index", bsw/jbe@4: view = "index", bsw/jbe@4: content = function() bsw/jbe@4: ui.image{ static = "icons/16/cancel.png" } bsw/jbe@4: slot.put(_"Cancel") bsw/jbe@4: end, bsw/jbe@4: } bsw/jbe@4: end bsw/jbe@4: end) bsw/jbe@4: bsw/jbe@4: bsw@199: local contact_members = Member:build_selector{ bsw@199: is_contact_of_member_id = app.session.member_id, bsw@297: voting_right_for_unit_id = voting_right_unit_id, bsw@199: order = "name" bsw@199: }:exec() bsw/jbe@0: bsw/jbe@0: ui.form{ bsw/jbe@0: attr = { class = "vertical" }, bsw/jbe@0: module = "delegation", bsw/jbe@0: action = "update", bsw/jbe@0: params = { bsw@248: unit_id = unit and unit.id or nil, bsw/jbe@0: area_id = area and area.id or nil, bsw/jbe@0: issue_id = issue and issue.id or nil, bsw/jbe@0: }, bsw/jbe@0: routing = { bsw/jbe@0: default = { bsw/jbe@0: mode = "redirect", bsw@273: module = area and "area" or issue and "issue" or "area", bsw@273: view = (area or issue) and "show" or "list", bsw/jbe@4: id = area and area.id or issue and issue.id or nil, bsw@273: params = { unit_id = unit and unit.id or nil } bsw/jbe@0: } bsw/jbe@0: }, bsw/jbe@0: content = function() bsw@180: local records bsw@180: bsw@180: if issue then bsw@183: local delegate_name = "" bsw@183: local scope = "no delegation set" bsw@248: local area_delegation = Delegation:by_pk(app.session.member_id, nil, issue.area_id) bsw@183: if area_delegation then bsw@187: delegate_name = area_delegation.trustee and area_delegation.trustee.name or _"abandoned" bsw@183: scope = _"area" bsw@183: else bsw@248: local unit_delegation = Delegation:by_pk(app.session.member_id, issue.area.unit_id) bsw@248: if unit_delegation then bsw@248: delegate_name = unit_delegation.trustee.name bsw@264: scope = config.single_unit_id and _"global" or _"unit" bsw@248: end bsw@183: end bsw@264: local text_apply bsw@264: local text_abandon bsw@264: if config.single_unit_id then bsw@264: text_apply = _("Apply global or area delegation for this issue (Currently: #{delegate_name} [#{scope}])", { delegate_name = delegate_name, scope = scope }) bsw@264: text_abandon = _"Abandon unit and area delegations for this issue" bsw@264: else bsw@264: text_apply = _("Apply unit or area delegation for this issue (Currently: #{delegate_name} [#{scope}])", { delegate_name = delegate_name, scope = scope }) bsw@264: text_abandon = _"Abandon unit and area delegations for this issue" bsw@264: end bsw@180: records = { bsw@264: { id = -1, name = text_apply }, bsw@293: { id = 0, name = text_abandon } bsw/jbe@4: } bsw@180: elseif area then bsw@183: local delegate_name = "" bsw@183: local scope = "no delegation set" bsw@248: local unit_delegation = Delegation:by_pk(app.session.member_id, area.unit_id) bsw@248: if unit_delegation then bsw@248: delegate_name = unit_delegation.trustee.name bsw@264: scope = config.single_unit_id and _"global" or _"unit" bsw@264: end bsw@264: local text_apply bsw@264: local text_abandon bsw@264: if config.single_unit_id then bsw@264: text_apply = _("Apply global delegation for this area (Currently: #{delegate_name} [#{scope}])", { delegate_name = delegate_name, scope = scope }) bsw@264: text_abandon = _"Abandon global delegation for this area" bsw@264: else bsw@264: text_apply = _("Apply unit delegation for this area (Currently: #{delegate_name} [#{scope}])", { delegate_name = delegate_name, scope = scope }) bsw@264: text_abandon = _"Abandon unit delegation for this area" bsw@183: end bsw@180: records = { bsw@180: { bsw@180: id = -1, bsw@264: name = text_apply bsw@180: }, bsw@180: { bsw@180: id = 0, bsw@264: name = text_abandon bsw@180: } bsw@180: } bsw@180: bsw@180: else bsw@180: records = { bsw@180: { bsw@180: id = -1, bsw@180: name = _"No delegation" bsw@180: } bsw@180: } bsw@180: bsw@180: end bsw@183: -- add saved members bsw@183: records[#records+1] = {id="_", name= "--- " .. _"Saved contacts" .. " ---"} bsw/jbe@4: for i, record in ipairs(contact_members) do bsw/jbe@4: records[#records+1] = record bsw/jbe@4: end poelzi@111: -- add initiative authors poelzi@111: if initiative then bsw@183: records[#records+1] = {id="_", name= "--- " .. _"Initiators" .. " ---"} poelzi@111: for i,record in ipairs(initiative.initiators) do poelzi@111: records[#records+1] = record.member poelzi@111: end poelzi@111: end bsw/jbe@4: bsw@183: disabled_records = {} bsw@183: disabled_records["_"] = true bsw@183: bsw/jbe@0: ui.field.select{ bsw/jbe@0: label = _"Trustee", bsw/jbe@0: name = "trustee_id", bsw/jbe@4: foreign_records = records, bsw/jbe@0: foreign_id = "id", bsw/jbe@4: foreign_name = "name", poelzi@111: disabled_records = disabled_records bsw/jbe@0: } poelzi@111: bsw/jbe@0: ui.submit{ text = _"Save" } bsw/jbe@0: end bsw/jbe@4: }