liquid_feedback_frontend
view 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
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 | 
 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 function Initiative:get_search_selector(search_string)
    95   return self:new_selector()
    96     :add_field( {'"highlight"("initiative"."name", ?)', search_string }, "name_highlighted")
    97     :add_where{ '"initiative"."text_search_data" @@ "text_search_query"(?)', search_string }
    98 end
   100 function Member:get_search_selector(search_string)
   101   return self:new_selector()
   102     :add_where("active")
   103 end
   106 function Initiative.object_get:current_draft()
   107   return Draft:new_selector()
   108     :add_where{ '"initiative_id" = ?', self.id }
   109     :add_order_by('"id" DESC')
   110     :single_object_mode()
   111     :exec()
   112 end
   114 function Initiative.object_get:shortened_name()
   115   local name = self.name
   116   if #name > 100 then
   117     name = name:sub(1,100) .. "..."
   118   end
   119   return name
   120 end
