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