| rev | 
   line source | 
| 
bsw/jbe@0
 | 
     1 local area = Area:by_id(param.get("area_id", atom.integer))
 | 
| 
bsw/jbe@0
 | 
     2 if area then
 | 
| 
bsw/jbe@0
 | 
     3   slot.put_into("title", encode.html(_"Set delegation for Area '#{name}'":gsub("#{name}", area.name)))
 | 
| 
bsw/jbe@4
 | 
     4   util.help("delegation.new.area")
 | 
| 
bsw/jbe@0
 | 
     5 end
 | 
| 
bsw/jbe@0
 | 
     6 
 | 
| 
bsw/jbe@0
 | 
     7 local issue = Issue:by_id(param.get("issue_id", atom.integer))
 | 
| 
bsw/jbe@0
 | 
     8 if issue then
 | 
| 
bsw/jbe@0
 | 
     9   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
 | 
    10   util.help("delegation.new.issue")
 | 
| 
bsw/jbe@0
 | 
    11 end
 | 
| 
bsw/jbe@0
 | 
    12 
 | 
| 
poelzi@111
 | 
    13 local initiative = Initiative:by_id(param.get("initiative_id", atom.integer))
 | 
| 
poelzi@111
 | 
    14 
 | 
| 
bsw/jbe@4
 | 
    15 if not area and not issue then
 | 
| 
bsw/jbe@4
 | 
    16   slot.put_into("title", encode.html(_"Set global delegation"))
 | 
| 
bsw/jbe@4
 | 
    17   util.help("delegation.new.global")
 | 
| 
bsw/jbe@4
 | 
    18 end
 | 
| 
bsw/jbe@4
 | 
    19 
 | 
| 
bsw/jbe@4
 | 
    20 slot.select("actions", function()
 | 
| 
bsw/jbe@4
 | 
    21   if issue then
 | 
| 
bsw/jbe@4
 | 
    22     ui.link{
 | 
| 
bsw/jbe@4
 | 
    23       module = "issue",
 | 
| 
bsw/jbe@4
 | 
    24       view = "show",
 | 
| 
bsw/jbe@4
 | 
    25       id = issue.id,
 | 
| 
bsw/jbe@4
 | 
    26       content = function()
 | 
| 
bsw/jbe@4
 | 
    27           ui.image{ static = "icons/16/cancel.png" }
 | 
| 
bsw/jbe@4
 | 
    28           slot.put(_"Cancel")
 | 
| 
bsw/jbe@4
 | 
    29       end,
 | 
| 
bsw/jbe@4
 | 
    30     }
 | 
| 
bsw/jbe@4
 | 
    31   elseif area then
 | 
| 
bsw/jbe@4
 | 
    32     ui.link{
 | 
| 
bsw/jbe@4
 | 
    33       module = "area",
 | 
| 
bsw/jbe@4
 | 
    34       view = "show",
 | 
| 
bsw/jbe@4
 | 
    35       id = area.id,
 | 
| 
bsw/jbe@4
 | 
    36       content = function()
 | 
| 
bsw/jbe@4
 | 
    37           ui.image{ static = "icons/16/cancel.png" }
 | 
| 
bsw/jbe@4
 | 
    38           slot.put(_"Cancel")
 | 
| 
bsw/jbe@4
 | 
    39       end,
 | 
| 
bsw/jbe@4
 | 
    40     }
 | 
| 
bsw/jbe@4
 | 
    41   else
 | 
| 
bsw/jbe@4
 | 
    42     ui.link{
 | 
| 
bsw/jbe@4
 | 
    43       module = "index",
 | 
| 
bsw/jbe@4
 | 
    44       view = "index",
 | 
| 
bsw/jbe@4
 | 
    45       content = function()
 | 
| 
bsw/jbe@4
 | 
    46           ui.image{ static = "icons/16/cancel.png" }
 | 
| 
bsw/jbe@4
 | 
    47           slot.put(_"Cancel")
 | 
| 
bsw/jbe@4
 | 
    48       end,
 | 
| 
bsw/jbe@4
 | 
    49     }
 | 
| 
bsw/jbe@4
 | 
    50   end
 | 
| 
bsw/jbe@4
 | 
    51 end)
 | 
| 
bsw/jbe@4
 | 
    52 
 | 
| 
bsw/jbe@4
 | 
    53 
 | 
| 
bsw/jbe@0
 | 
    54 
 | 
| 
bsw/jbe@0
 | 
    55 local contact_members = Member:new_selector()
 | 
| 
bsw/jbe@0
 | 
    56   :add_where{ "contact.member_id = ?", app.session.member.id }
 | 
| 
bsw/jbe@0
 | 
    57   :join("contact", nil, "member.id = contact.other_member_id")
 | 
| 
bsw/jbe@4
 | 
    58   :add_order_by("member.name")
 | 
| 
bsw/jbe@0
 | 
    59   :exec()
 | 
| 
bsw/jbe@0
 | 
    60 
 | 
| 
bsw/jbe@0
 | 
    61 
 | 
| 
bsw/jbe@0
 | 
    62 ui.form{
 | 
| 
bsw/jbe@0
 | 
    63   attr = { class = "vertical" },
 | 
| 
bsw/jbe@0
 | 
    64   module = "delegation",
 | 
| 
bsw/jbe@0
 | 
    65   action = "update",
 | 
| 
bsw/jbe@0
 | 
    66   params = {
 | 
| 
bsw/jbe@0
 | 
    67     area_id = area and area.id or nil,
 | 
| 
bsw/jbe@0
 | 
    68     issue_id = issue and issue.id or nil,
 | 
| 
bsw/jbe@0
 | 
    69   },
 | 
| 
bsw/jbe@0
 | 
    70   routing = {
 | 
| 
bsw/jbe@0
 | 
    71     default = {
 | 
| 
bsw/jbe@0
 | 
    72       mode = "redirect",
 | 
| 
bsw/jbe@4
 | 
    73       module = area and "area" or issue and "issue" or "index",
 | 
| 
bsw/jbe@4
 | 
    74       view = (area or issue) and "show" or "index",
 | 
| 
bsw/jbe@4
 | 
    75       id = area and area.id or issue and issue.id or nil,
 | 
| 
bsw/jbe@0
 | 
    76     }
 | 
| 
bsw/jbe@0
 | 
    77   },
 | 
| 
bsw/jbe@0
 | 
    78   content = function()
 | 
| 
bsw@180
 | 
    79     local records
 | 
| 
bsw@180
 | 
    80 
 | 
| 
bsw@180
 | 
    81     if issue then
 | 
| 
bsw@183
 | 
    82       local delegate_name = ""
 | 
| 
bsw@183
 | 
    83       local scope = "no delegation set"
 | 
| 
bsw@183
 | 
    84       local area_delegation = Delegation:by_pk(app.session.member_id, issue.area_id)
 | 
| 
bsw@183
 | 
    85       if area_delegation then
 | 
| 
bsw@187
 | 
    86         delegate_name = area_delegation.trustee and area_delegation.trustee.name or _"abandoned"
 | 
| 
bsw@183
 | 
    87         scope = _"area"
 | 
| 
bsw@183
 | 
    88       else
 | 
| 
bsw@183
 | 
    89       local global_delegation = Delegation:by_pk(app.session.member_id)
 | 
| 
bsw@183
 | 
    90       if global_delegation then
 | 
| 
bsw@183
 | 
    91         delegate_name = global_delegation.trustee.name
 | 
| 
bsw@183
 | 
    92         scope = _"global"
 | 
| 
bsw@183
 | 
    93       end
 | 
| 
bsw@183
 | 
    94     end
 | 
| 
bsw@180
 | 
    95       records = {
 | 
| 
bsw@180
 | 
    96         {
 | 
| 
bsw@180
 | 
    97           id = -1,
 | 
| 
bsw@183
 | 
    98           name = _("Apply global or area delegation for this issue (Currently: #{delegate_name} [#{scope}])", { delegate_name = delegate_name, scope = scope })
 | 
| 
bsw@180
 | 
    99         },
 | 
| 
bsw@180
 | 
   100         {
 | 
| 
bsw@180
 | 
   101           id = 0,
 | 
| 
bsw@183
 | 
   102           name = _"Abandon global and area delegations for this issue"
 | 
| 
bsw@180
 | 
   103         },
 | 
| 
bsw@180
 | 
   104 
 | 
| 
bsw/jbe@4
 | 
   105       }
 | 
| 
bsw@180
 | 
   106     elseif area then
 | 
| 
bsw@183
 | 
   107       local delegate_name = ""
 | 
| 
bsw@183
 | 
   108       local scope = "no delegation set"
 | 
| 
bsw@183
 | 
   109       local global_delegation = Delegation:by_pk(app.session.member_id)
 | 
| 
bsw@183
 | 
   110       if global_delegation then
 | 
| 
bsw@183
 | 
   111         delegate_name = global_delegation.trustee.name
 | 
| 
bsw@183
 | 
   112         scope = _"global"
 | 
| 
bsw@183
 | 
   113       end
 | 
| 
bsw@180
 | 
   114       records = {
 | 
| 
bsw@180
 | 
   115         {
 | 
| 
bsw@180
 | 
   116           id = -1,
 | 
| 
bsw@183
 | 
   117           name = _("Apply global delegation for this area (Currently: #{delegate_name} [#{scope}])", { delegate_name = delegate_name, scope = scope })
 | 
| 
bsw@180
 | 
   118         },
 | 
| 
bsw@180
 | 
   119         {
 | 
| 
bsw@180
 | 
   120           id = 0,
 | 
| 
bsw@183
 | 
   121           name = _"Abandon global delegation for this area"
 | 
| 
bsw@180
 | 
   122         }
 | 
| 
bsw@180
 | 
   123       }
 | 
| 
bsw@180
 | 
   124 
 | 
| 
bsw@180
 | 
   125     else
 | 
| 
bsw@180
 | 
   126       records = {
 | 
| 
bsw@180
 | 
   127         {
 | 
| 
bsw@180
 | 
   128           id = -1,
 | 
| 
bsw@180
 | 
   129           name = _"No delegation"
 | 
| 
bsw@180
 | 
   130         }
 | 
| 
bsw@180
 | 
   131       }
 | 
| 
bsw@180
 | 
   132 
 | 
| 
bsw@180
 | 
   133     end
 | 
| 
bsw@183
 | 
   134     -- add saved members
 | 
| 
bsw@183
 | 
   135     records[#records+1] = {id="_", name= "--- " .. _"Saved contacts" .. " ---"}
 | 
| 
bsw/jbe@4
 | 
   136     for i, record in ipairs(contact_members) do
 | 
| 
bsw/jbe@4
 | 
   137       records[#records+1] = record
 | 
| 
bsw/jbe@4
 | 
   138     end
 | 
| 
poelzi@111
 | 
   139     -- add initiative authors
 | 
| 
poelzi@111
 | 
   140     if initiative then
 | 
| 
bsw@183
 | 
   141       records[#records+1] = {id="_", name= "--- " .. _"Initiators" .. " ---"}
 | 
| 
poelzi@111
 | 
   142       for i,record in ipairs(initiative.initiators) do
 | 
| 
poelzi@111
 | 
   143         records[#records+1] = record.member
 | 
| 
poelzi@111
 | 
   144       end
 | 
| 
poelzi@111
 | 
   145     end
 | 
| 
bsw/jbe@4
 | 
   146 
 | 
| 
bsw@183
 | 
   147     disabled_records = {}
 | 
| 
bsw@183
 | 
   148     disabled_records["_"] = true
 | 
| 
bsw@183
 | 
   149 
 | 
| 
bsw/jbe@0
 | 
   150     ui.field.select{
 | 
| 
bsw/jbe@0
 | 
   151       label = _"Trustee",
 | 
| 
bsw/jbe@0
 | 
   152       name = "trustee_id",
 | 
| 
bsw/jbe@4
 | 
   153       foreign_records = records,
 | 
| 
bsw/jbe@0
 | 
   154       foreign_id = "id",
 | 
| 
bsw/jbe@4
 | 
   155       foreign_name = "name",
 | 
| 
poelzi@111
 | 
   156       disabled_records = disabled_records
 | 
| 
bsw/jbe@0
 | 
   157     }
 | 
| 
poelzi@111
 | 
   158 
 | 
| 
bsw/jbe@0
 | 
   159     ui.submit{ text = _"Save" }
 | 
| 
bsw/jbe@0
 | 
   160   end
 | 
| 
bsw/jbe@4
 | 
   161 }
 |