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