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
|