| rev | line source | 
| bsw/jbe@0 | 1 local initiative = Initiative:by_id(param.get("initiative_id", atom.integer)) | 
| bsw/jbe@0 | 2 | 
| bsw/jbe@5 | 3 -- TODO important m1 selectors returning result _SET_! | 
| bsw/jbe@5 | 4 local issue = initiative:get_reference_selector("issue"):for_share():single_object_mode():exec() | 
| bsw/jbe@5 | 5 | 
| bsw/jbe@5 | 6 if issue.closed then | 
| bsw/jbe@5 | 7   slot.put_into("error", _"This issue is already closed.") | 
| bsw/jbe@5 | 8   return false | 
| bsw/jbe@5 | 9 elseif issue.half_frozen then | 
| bsw/jbe@5 | 10   slot.put_into("error", _"This issue is already frozen.") | 
| bsw/jbe@5 | 11   return false | 
| bsw@964 | 12 elseif issue.phase_finished then | 
| bsw@964 | 13   slot.put_into("error", _"Current phase is already closed.") | 
| bsw@964 | 14   return false | 
| bsw/jbe@5 | 15 end | 
| bsw/jbe@5 | 16 | 
| bsw@10 | 17 local initiator = Initiator:by_pk(initiative.id, app.session.member.id) | 
| bsw@10 | 18 if not initiator or not initiator.accepted then | 
| bsw@10 | 19   error("access denied") | 
| bsw@10 | 20 end | 
| bsw@10 | 21 | 
| bsw@904 | 22 local tmp = db:query({ "SELECT text_entries_left FROM member_contingent_left WHERE member_id = ? AND polling = ?", app.session.member.id, initiative.polling }, "opt_object") | 
| bsw@904 | 23 if not tmp or tmp.text_entries_left < 1 then | 
| bsw@904 | 24   slot.put_into("error", _"Sorry, you have reached your personal flood limit. Please be slower...") | 
| bsw@904 | 25   return false | 
| bsw@904 | 26 end | 
| bsw@904 | 27 | 
| bsw@1045 | 28 local formatting_engine | 
| bsw@1045 | 29 if config.enforce_formatting_engine then | 
| bsw@1045 | 30   formatting_engine = config.enforce_formatting_engine | 
| bsw@1045 | 31 else | 
| bsw@1045 | 32   formatting_engine = param.get("formatting_engine") | 
| bsw@81 | 33 | 
| bsw@1045 | 34   local formatting_engine_valid = false | 
| bsw@1045 | 35   for i, fe in pairs(config.formatting_engines) do | 
| bsw@1045 | 36     if formatting_engine == fe.id then | 
| bsw@1045 | 37       formatting_engine_valid = true | 
| bsw@1045 | 38     end | 
| bsw@1045 | 39   end | 
| bsw@1045 | 40   if not formatting_engine_valid then | 
| bsw@1045 | 41     error("invalid formatting engine!") | 
| bsw/jbe@4 | 42   end | 
| bsw@10 | 43 end | 
| bsw@81 | 44 | 
| bsw@1045 | 45 if param.get("preview") or param.get("edit") then | 
| bsw@95 | 46   return false | 
| bsw@95 | 47 end | 
| bsw@81 | 48 | 
| bsw@81 | 49 local draft = Draft:new() | 
| bsw@81 | 50 draft.author_id = app.session.member.id | 
| bsw@81 | 51 draft.initiative_id = initiative.id | 
| bsw@10 | 52 draft.formatting_engine = formatting_engine | 
| bsw@10 | 53 draft.content = param.get("content") | 
| bsw@10 | 54 draft:save() | 
| bsw/jbe@0 | 55 | 
| bsw@499 | 56 local supporter = Supporter:by_pk(initiative.id, app.session.member.id) | 
| bsw@499 | 57 | 
| bsw@499 | 58 if supporter then | 
| bsw@499 | 59   supporter.draft_id = draft.id | 
| bsw@499 | 60   supporter:save() | 
| bsw@499 | 61 end | 
| bsw@499 | 62 | 
| bsw@81 | 63 draft:render_content() | 
| bsw@81 | 64 | 
| bsw@1045 | 65 slot.put_into("notice", _"The initiative text has been updated") | 
| bsw/jbe@0 | 66 |