liquid_feedback_frontend

annotate model/initiative.lua @ 2:5c601807d397

Version alpha3

Dark green part of issue supporter bargraph represents all satisfied supporters, regardless of having seen the latest draft

Wiki formatting for drafts

Showing differences between two drafts of the same initiative

Display of outgoing delegation chains

Many other improvements
author bsw
date Mon Nov 23 12:00:00 2009 +0100 (2009-11-23)
parents 3bfb2fcf7ab9
children 768faea1096d
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@2 94 function Initiative:get_search_selector(search_string)
bsw/jbe@0 95 return self:new_selector()
bsw@2 96 :add_field( {'"highlight"("initiative"."name", ?)', search_string }, "name_highlighted")
bsw@2 97 :add_where{ '"initiative"."text_search_data" @@ "text_search_query"(?)', search_string }
bsw/jbe@0 98 end
bsw/jbe@0 99
bsw@2 100 function Member:get_search_selector(search_string)
bsw@2 101 return self:new_selector()
bsw@2 102 :add_where("active")
bsw@2 103 end
bsw@2 104
bsw@2 105
bsw/jbe@0 106 function Initiative.object_get:current_draft()
bsw/jbe@0 107 return Draft:new_selector()
bsw/jbe@0 108 :add_where{ '"initiative_id" = ?', self.id }
bsw/jbe@0 109 :add_order_by('"id" DESC')
bsw/jbe@0 110 :single_object_mode()
bsw/jbe@0 111 :exec()
bsw/jbe@0 112 end
bsw/jbe@0 113
bsw/jbe@0 114 function Initiative.object_get:shortened_name()
bsw/jbe@0 115 local name = self.name
bsw/jbe@0 116 if #name > 100 then
bsw/jbe@0 117 name = name:sub(1,100) .. "..."
bsw/jbe@0 118 end
bsw/jbe@0 119 return name
bsw/jbe@0 120 end

Impressum / About Us