liquid_feedback_frontend

view model/initiative.lua @ 3:768faea1096d

Version alpha4

Members interested in an issue or supporting an initiative have a weight information attached. Browsing the members causing that weight is possible.

Initiatives may provide a link to an external discussion platform

Direct link on every initiative page to create an alternative initiative

Bugfix: No error when clicking "neutral", when "neutral" is currently selected
author bsw
date Mon Nov 30 12:00:00 2009 +0100 (2009-11-30)
parents 5c601807d397
children 80c215dbf076
line source
1 Initiative = mondelefant.new_class()
2 Initiative.table = 'initiative'
4 Initiative:add_reference{
5 mode = 'm1',
6 to = "Issue",
7 this_key = 'issue_id',
8 that_key = 'id',
9 ref = 'issue',
10 }
12 Initiative:add_reference{
13 mode = '1m',
14 to = "Draft",
15 this_key = 'id',
16 that_key = 'initiative_id',
17 ref = 'drafts',
18 back_ref = 'initiative',
19 default_order = '"id"'
20 }
22 Initiative:add_reference{
23 mode = '1m',
24 to = "Suggestion",
25 this_key = 'id',
26 that_key = 'initiative_id',
27 ref = 'suggestions',
28 back_ref = 'initiative',
29 default_order = '"id"'
30 }
32 Initiative:add_reference{
33 mode = '1m',
34 to = "Initiator",
35 this_key = 'id',
36 that_key = 'initiative_id',
37 ref = 'initiators',
38 back_ref = 'initiative',
39 default_order = '"id"'
40 }
42 Initiative:add_reference{
43 mode = '1m',
44 to = "Supporter",
45 this_key = 'id',
46 that_key = 'initiative_id',
47 ref = 'supporters',
48 back_ref = 'initiative',
49 default_order = '"id"'
50 }
52 Initiative:add_reference{
53 mode = '1m',
54 to = "Opinion",
55 this_key = 'id',
56 that_key = 'initiative_id',
57 ref = 'opinions',
58 back_ref = 'initiative',
59 default_order = '"id"'
60 }
62 Initiative:add_reference{
63 mode = '1m',
64 to = "Vote",
65 this_key = 'id',
66 that_key = 'initiative_id',
67 ref = 'votes',
68 back_ref = 'initiative',
69 default_order = '"member_id"'
70 }
72 Initiative:add_reference{
73 mode = 'mm',
74 to = "Member",
75 this_key = 'id',
76 that_key = 'id',
77 connected_by_table = '"initiator"',
78 connected_by_this_key = 'initiative_id',
79 connected_by_that_key = 'member_id',
80 ref = 'initiating_members'
81 }
83 Initiative:add_reference{
84 mode = 'mm',
85 to = "Member",
86 this_key = 'id',
87 that_key = 'id',
88 connected_by_table = '"supporter"',
89 connected_by_this_key = 'initiative_id',
90 connected_by_that_key = 'member_id',
91 ref = 'supporting_members'
92 }
94 Initiative:add_reference{
95 mode = 'mm',
96 to = "Member",
97 this_key = 'id',
98 that_key = 'id',
99 connected_by_table = 'direct_supporter_snapshot',
100 connected_by_this_key = 'initiative_id',
101 connected_by_that_key = 'member_id',
102 ref = 'supporting_members_snapshot'
103 }
105 function Initiative:get_search_selector(search_string)
106 return self:new_selector()
107 :add_field( {'"highlight"("initiative"."name", ?)', search_string }, "name_highlighted")
108 :add_where{ '"initiative"."text_search_data" @@ "text_search_query"(?)', search_string }
109 end
111 function Member:get_search_selector(search_string)
112 return self:new_selector()
113 :add_where("active")
114 end
117 function Initiative.object_get:current_draft()
118 return Draft:new_selector()
119 :add_where{ '"initiative_id" = ?', self.id }
120 :add_order_by('"id" DESC')
121 :single_object_mode()
122 :exec()
123 end
125 function Initiative.object_get:shortened_name()
126 local name = self.name
127 if #name > 100 then
128 name = name:sub(1,100) .. "..."
129 end
130 return name
131 end

Impressum / About Us