liquid_feedback_frontend
annotate app/main/initiative/_action/remove_initiator.lua @ 11:77d58efe99fd
Version beta7
Important security fixes:
- Added missing HTML encoding to postal address of member
- Link to discussion URL only if it starts with http(s)://
Other bugfixes:
- Fixed wrong display of 2nd level delegating voters for an initiative
- Do not display invited initiators as initiators while voting
- Added missing translation
New features:
- Public message of the day
- Both direct and indirect supporter count is shown in tab heads
- Support shown in initiative lists
Language chooser at the login page has been added (again)
Important security fixes:
- Added missing HTML encoding to postal address of member
- Link to discussion URL only if it starts with http(s)://
Other bugfixes:
- Fixed wrong display of 2nd level delegating voters for an initiative
- Do not display invited initiators as initiators while voting
- Added missing translation
New features:
- Public message of the day
- Both direct and indirect supporter count is shown in tab heads
- Support shown in initiative lists
Language chooser at the login page has been added (again)
author | bsw |
---|---|
date | Fri Jan 22 12:00:00 2010 +0100 (2010-01-22) |
parents | 72c5e0ee7c98 |
children | 808269b7f41c |
rev | line source |
---|---|
bsw@10 | 1 local initiative = Initiative:by_id(param.get("initiative_id")) |
bsw@10 | 2 local initiator = Initiator:by_pk(initiative.id, app.session.member.id) |
bsw@10 | 3 |
bsw@10 | 4 -- TODO important m1 selectors returning result _SET_! |
bsw@10 | 5 local issue = initiative:get_reference_selector("issue"):for_share():single_object_mode():exec() |
bsw@10 | 6 |
bsw@10 | 7 if issue.closed then |
bsw@10 | 8 slot.put_into("error", _"This issue is already closed.") |
bsw@10 | 9 return false |
bsw@10 | 10 elseif issue.half_frozen then |
bsw@10 | 11 slot.put_into("error", _"This issue is already frozen.") |
bsw@10 | 12 return false |
bsw@10 | 13 end |
bsw@10 | 14 |
bsw@10 | 15 if initiative.revoked then |
bsw@10 | 16 slot.put_into("error", _"This initiative is revoked") |
bsw@10 | 17 return false |
bsw@10 | 18 end |
bsw@10 | 19 |
bsw@10 | 20 local initiator_todelete = Initiator:by_pk(initiative.id, param.get("member_id", atom.integer)) |
bsw@10 | 21 |
bsw@10 | 22 if not (initiator and initiator.accepted) and not (initiator.member_id == initiator_todelete.member_id) then |
bsw@10 | 23 error("access denied") |
bsw@10 | 24 end |
bsw@10 | 25 |
bsw@10 | 26 if initiator_todelete.accepted == false and initiator.member_id ~= initiator_todelete.member_id then |
bsw@10 | 27 error("access denied") |
bsw@10 | 28 end |
bsw@10 | 29 |
bsw@10 | 30 local initiators = initiative |
bsw@10 | 31 :get_reference_selector("initiators") |
bsw@10 | 32 :add_where("accepted") |
bsw@10 | 33 :for_update() |
bsw@10 | 34 :exec() |
bsw@10 | 35 |
bsw@10 | 36 if #initiators > 1 or initiator_todelete.accepted ~= true then |
bsw@10 | 37 initiator_todelete:destroy() |
bsw@10 | 38 slot.put_into("notice", _"Member has been removed from initiators") |
bsw@10 | 39 else |
bsw@10 | 40 slot.put_into("error", _"Can't remove last initiator") |
bsw@10 | 41 return false |
bsw@10 | 42 end |
bsw@10 | 43 |
bsw@10 | 44 |