liquid_feedback_frontend

changeset 512:d0e12e1b8761

Make member privileges editable in admin section
author bsw
date Wed Apr 11 19:03:50 2012 +0200 (2012-04-11)
parents 97311991822a
children dbfde3c56790
files app/main/admin/_action/member_update.lua app/main/admin/member_edit.lua model/privilege.lua
line diff
     1.1 --- a/app/main/admin/_action/member_update.lua	Tue Mar 27 18:54:42 2012 +0200
     1.2 +++ b/app/main/admin/_action/member_update.lua	Wed Apr 11 19:03:50 2012 +0200
     1.3 @@ -23,6 +23,26 @@
     1.4    privilege:save()
     1.5  end
     1.6  
     1.7 +local units = Unit:new_selector()
     1.8 +  :add_field("privilege.member_id NOTNULL", "privilege_exists")
     1.9 +  :add_field("privilege.voting_right", "voting_right")
    1.10 +  :left_join("privilege", nil, { "privilege.member_id = ? AND privilege.unit_id = unit.id", member.id })
    1.11 +  :exec()
    1.12 +
    1.13 +for i, unit in ipairs(units) do
    1.14 +  local value = param.get("unit_" .. unit.id, atom.boolean)
    1.15 +  if value and not unit.privilege_exists then
    1.16 +    privilege = Privilege:new()
    1.17 +    privilege.unit_id = unit.id
    1.18 +    privilege.member_id = member.id
    1.19 +    privilege.voting_right = true
    1.20 +    privilege:save()
    1.21 +  elseif not value and unit.privilege_exists then
    1.22 +    local privilege = Privilege:by_pk(unit.id, member.id)
    1.23 +    privilege:destroy()
    1.24 +  end
    1.25 +end
    1.26 +
    1.27  if id then
    1.28    slot.put_into("notice", _"Member successfully updated")
    1.29  else
     2.1 --- a/app/main/admin/member_edit.lua	Tue Mar 27 18:54:42 2012 +0200
     2.2 +++ b/app/main/admin/member_edit.lua	Wed Apr 11 19:03:50 2012 +0200
     2.3 @@ -8,6 +8,12 @@
     2.4    slot.put_into("title", encode.html(_"Register new member"))
     2.5  end
     2.6  
     2.7 +local units = Unit:new_selector()
     2.8 +  :add_field("privilege.voting_right", "voting_right")
     2.9 +  :left_join("privilege", nil, { "privilege.member_id = ? AND privilege.unit_id = unit.id", member.id })
    2.10 +  :exec()
    2.11 +  
    2.12 +  
    2.13  ui.form{
    2.14    attr = { class = "vertical" },
    2.15    module = "admin",
    2.16 @@ -27,14 +33,15 @@
    2.17      ui.field.text{     label = _"Notification email", name = "notify_email" }
    2.18      ui.field.boolean{  label = _"Admin?",       name = "admin" }
    2.19  
    2.20 -    ui.multiselect{ label              = _"Voting privileges",
    2.21 -                    name               = "units_with_voting_right[]",
    2.22 -                    foreign_records    = Unit:new_selector():exec(),
    2.23 -                    foreign_id         = "id",
    2.24 -                    foreign_name       = "name",
    2.25 -                    connecting_records = {},
    2.26 -                    foreign_reference  = "id",
    2.27 -    }
    2.28 +    slot.put("<br />")
    2.29 +    
    2.30 +    for i, unit in ipairs(units) do
    2.31 +      ui.field.boolean{
    2.32 +        name = "unit_" .. unit.id,
    2.33 +        label = unit.name,
    2.34 +        value = unit.voting_right
    2.35 +      }
    2.36 +    end
    2.37      slot.put("<br /><br />")
    2.38  
    2.39      ui.field.boolean{  label = _"Send invite?",       name = "invite_member" }
     3.1 --- a/model/privilege.lua	Tue Mar 27 18:54:42 2012 +0200
     3.2 +++ b/model/privilege.lua	Wed Apr 11 19:03:50 2012 +0200
     3.3 @@ -18,3 +18,9 @@
     3.4    ref           = 'unit',
     3.5  }
     3.6  
     3.7 +function Privilege:by_pk(unit_id, member_id)
     3.8 +  return self:new_selector()
     3.9 +    :add_where{ "unit_id = ? AND member_id = ?", unit_id, member_id }
    3.10 +    :optional_object_mode()
    3.11 +    :exec()
    3.12 +end
    3.13 \ No newline at end of file

Impressum / About Us