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@0
|
6
|
bsw/jbe@6
|
7 local name = param.get("name")
|
bsw/jbe@6
|
8 local name = util.trim(name)
|
bsw/jbe@6
|
9
|
bsw/jbe@6
|
10 if #name < 3 then
|
bsw/jbe@6
|
11 slot.put_into("error", _"This title is really too short!")
|
bsw/jbe@6
|
12 return false
|
bsw/jbe@6
|
13 end
|
bsw/jbe@6
|
14
|
bsw@279
|
15 local formatting_engine = param.get("formatting_engine")
|
bsw@279
|
16
|
bsw@279
|
17 local formatting_engine_valid = false
|
bsw@279
|
18 for fe, dummy in pairs(config.formatting_engine_executeables) do
|
bsw@279
|
19 if formatting_engine == fe then
|
bsw@279
|
20 formatting_engine_valid = true
|
bsw@279
|
21 end
|
bsw@279
|
22 end
|
bsw@279
|
23 if not formatting_engine_valid then
|
bsw@279
|
24 error("invalid formatting engine!")
|
bsw@279
|
25 end
|
bsw@279
|
26
|
bsw@279
|
27 if param.get("preview") then
|
bsw@279
|
28 return
|
bsw@279
|
29 end
|
bsw@279
|
30
|
bsw/jbe@0
|
31 local suggestion = Suggestion:new()
|
bsw/jbe@0
|
32
|
bsw/jbe@0
|
33 suggestion.author_id = app.session.member.id
|
bsw/jbe@6
|
34 suggestion.name = name
|
bsw@279
|
35 suggestion.formatting_engine = formatting_engine
|
bsw@279
|
36 param.update(suggestion, "content", "initiative_id")
|
bsw/jbe@0
|
37 suggestion:save()
|
bsw/jbe@0
|
38
|
bsw/jbe@5
|
39 -- TODO important m1 selectors returning result _SET_!
|
bsw/jbe@5
|
40 local issue = suggestion.initiative:get_reference_selector("issue"):for_share():single_object_mode():exec()
|
bsw/jbe@5
|
41
|
bsw/jbe@5
|
42 if issue.closed then
|
bsw/jbe@5
|
43 slot.put_into("error", _"This issue is already closed.")
|
bsw/jbe@5
|
44 return false
|
bsw@41
|
45 elseif issue.half_frozen then
|
bsw@41
|
46 slot.put_into("error", _"This issue is already frozen.")
|
bsw/jbe@5
|
47 return false
|
bsw/jbe@5
|
48 end
|
bsw/jbe@5
|
49
|
bsw/jbe@0
|
50 local opinion = Opinion:new()
|
bsw/jbe@0
|
51
|
bsw/jbe@0
|
52 opinion.suggestion_id = suggestion.id
|
bsw/jbe@0
|
53 opinion.member_id = app.session.member.id
|
bsw/jbe@0
|
54 opinion.degree = param.get("degree", atom.integer)
|
bsw/jbe@0
|
55 opinion.fulfilled = false
|
bsw/jbe@0
|
56
|
bsw/jbe@0
|
57 opinion:save()
|
bsw/jbe@0
|
58
|
bsw/jbe@0
|
59 slot.put_into("notice", _"Your suggestion has been added") |