liquid_feedback_frontend
view model/initiative.lua @ 4:80c215dbf076
Version alpha5
Many optical changes and improved usability
Support for different wiki-formatting-engines
Help system
Many optical changes and improved usability
Support for different wiki-formatting-engines
Help system
author | bsw/jbe |
---|---|
date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) |
parents | 768faea1096d |
children | 8d91bccab0bf |
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 }
31 Initiative:add_reference{
32 mode = '1m',
33 to = "Initiator",
34 this_key = 'id',
35 that_key = 'initiative_id',
36 ref = 'initiators',
37 back_ref = 'initiative',
38 default_order = '"id"'
39 }
41 Initiative:add_reference{
42 mode = '1m',
43 to = "Supporter",
44 this_key = 'id',
45 that_key = 'initiative_id',
46 ref = 'supporters',
47 back_ref = 'initiative',
48 default_order = '"id"'
49 }
51 Initiative:add_reference{
52 mode = '1m',
53 to = "Opinion",
54 this_key = 'id',
55 that_key = 'initiative_id',
56 ref = 'opinions',
57 back_ref = 'initiative',
58 default_order = '"id"'
59 }
61 Initiative:add_reference{
62 mode = '1m',
63 to = "Vote",
64 this_key = 'id',
65 that_key = 'initiative_id',
66 ref = 'votes',
67 back_ref = 'initiative',
68 default_order = '"member_id"'
69 }
71 Initiative:add_reference{
72 mode = 'mm',
73 to = "Member",
74 this_key = 'id',
75 that_key = 'id',
76 connected_by_table = '"initiator"',
77 connected_by_this_key = 'initiative_id',
78 connected_by_that_key = 'member_id',
79 ref = 'initiating_members'
80 }
82 Initiative:add_reference{
83 mode = 'mm',
84 to = "Member",
85 this_key = 'id',
86 that_key = 'id',
87 connected_by_table = '"supporter"',
88 connected_by_this_key = 'initiative_id',
89 connected_by_that_key = 'member_id',
90 ref = 'supporting_members'
91 }
93 Initiative:add_reference{
94 mode = 'mm',
95 to = "Member",
96 this_key = 'id',
97 that_key = 'id',
98 connected_by_table = 'direct_supporter_snapshot',
99 connected_by_this_key = 'initiative_id',
100 connected_by_that_key = 'member_id',
101 ref = 'supporting_members_snapshot'
102 }
104 function Initiative:get_search_selector(search_string)
105 return self:new_selector()
106 :add_field( {'"highlight"("initiative"."name", ?)', search_string }, "name_highlighted")
107 :add_where{ '"initiative"."text_search_data" @@ "text_search_query"(?)', search_string }
108 end
110 function Member:get_search_selector(search_string)
111 return self:new_selector()
112 :add_where("active")
113 end
116 function Initiative.object_get:current_draft()
117 return Draft:new_selector()
118 :add_where{ '"initiative_id" = ?', self.id }
119 :add_order_by('"id" DESC')
120 :single_object_mode()
121 :exec()
122 end
124 function Initiative.object_get:shortened_name()
125 local name = self.name
126 if #name > 100 then
127 name = name:sub(1,100) .. "..."
128 end
129 return name
130 end