liquid_feedback_frontend

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

Impressum / About Us