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/jbe@5
|
12 end
|
bsw/jbe@5
|
13
|
bsw@10
|
14 local initiator = Initiator:by_pk(initiative.id, app.session.member.id)
|
bsw@10
|
15 if not initiator or not initiator.accepted then
|
bsw@10
|
16 error("access denied")
|
bsw@10
|
17 end
|
bsw@10
|
18
|
bsw@904
|
19 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
|
20 if not tmp or tmp.text_entries_left < 1 then
|
bsw@904
|
21 slot.put_into("error", _"Sorry, you have reached your personal flood limit. Please be slower...")
|
bsw@904
|
22 return false
|
bsw@904
|
23 end
|
bsw@904
|
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
|