liquid_feedback_frontend

changeset 137:43ac94c7575b

add potential/full support filter into supported initiatives tab

fixes bug #47
author Daniel Poelzleithner <poelzi@poelzi.org>
date Wed Oct 06 13:05:30 2010 +0200 (2010-10-06)
parents 166fd10c7e81
children 7e7d629390d5
files app/main/member/_list_supported_initiatives.lua app/main/member/show_tab.lua
line diff
     1.1 --- a/app/main/member/_list_supported_initiatives.lua	Tue Oct 05 21:51:59 2010 +0200
     1.2 +++ b/app/main/member/_list_supported_initiatives.lua	Wed Oct 06 13:05:30 2010 +0200
     1.3 @@ -1,9 +1,7 @@
     1.4  local initiatives_selector = param.get("initiatives_selector", "table")
     1.5 +local member = param.get("member", "table")
     1.6  
     1.7 -ui.filters{
     1.8 -  label = _"Filter",
     1.9 -  name = "filter_voting",
    1.10 -  selector = initiatives_selector,
    1.11 +local filters  = {
    1.12    {
    1.13      label = _"Filter",
    1.14      {
    1.15 @@ -61,12 +59,48 @@
    1.16        label = _"Any",
    1.17        selector_modifier = function(selector) end
    1.18      },
    1.19 -  },
    1.20 -  content = function()
    1.21 +  }
    1.22 +}
    1.23 +
    1.24 +
    1.25 +if member then
    1.26 +  filters[#filters+1] = {
    1.27 +    label = _"Support",
    1.28 +    name = "support",
    1.29 +    {
    1.30 +      name = "any",
    1.31 +      label = _"Any",
    1.32 +      selector_modifier = function(selector)
    1.33 +      end
    1.34 +    },
    1.35 +    {
    1.36 +      name = "potential",
    1.37 +      label = _"Potential supported",
    1.38 +      selector_modifier = function(selector)
    1.39 +        -- not even having is_potential_supporter is working here :-( hopefully the optimizer will work it out...
    1.40 +        selector:add_where({"EXISTS(SELECT 1 FROM opinion WHERE opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)))", member.id })
    1.41 +      end
    1.42 +    },
    1.43 +    {
    1.44 +      name = "supporter",
    1.45 +      label = _"Supporter",
    1.46 +      selector_modifier = function(selector)
    1.47 +        selector:add_where({"NOT EXISTS(SELECT 1 FROM opinion WHERE opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)))", member.id })
    1.48 +      end
    1.49 +    },
    1.50 +  }
    1.51 +end
    1.52 +
    1.53 +filters.label = _"Filter"
    1.54 +filters.name = "filter_voting"
    1.55 +filters.selector = initiatives_selector
    1.56 +filters.content = function()
    1.57      execute.view{
    1.58        module = "initiative",
    1.59        view = "_list",
    1.60        params = { initiatives_selector = initiatives_selector }
    1.61      }
    1.62    end
    1.63 -}
    1.64 +
    1.65 +
    1.66 +ui.filters(filters)
     2.1 --- a/app/main/member/show_tab.lua	Tue Oct 05 21:51:59 2010 +0200
     2.2 +++ b/app/main/member/show_tab.lua	Wed Oct 06 13:05:30 2010 +0200
     2.3 @@ -159,7 +159,8 @@
     2.4    icon = { static = "icons/16/thumb_up_green.png" },
     2.5    module = "member",
     2.6    view = "_list_supported_initiatives",
     2.7 -  params = { initiatives_selector = supported_initiatives_selector },
     2.8 +  params = { initiatives_selector = supported_initiatives_selector,
     2.9 +             member = member },
    2.10  }
    2.11  
    2.12  local initiated_initiatives_selector = member:get_reference_selector("initiated_initiatives"):add_where("initiator.accepted = true")
    2.13 @@ -169,7 +170,8 @@
    2.14    icon = { static = "icons/16/user_edit.png" },
    2.15    module = "member",
    2.16    view = "_list_supported_initiatives",
    2.17 -  params = { initiatives_selector = initiated_initiatives_selector },
    2.18 +  params = { initiatives_selector = initiated_initiatives_selector, 
    2.19 +             member = member},
    2.20  }
    2.21  
    2.22  local incoming_delegations_selector = member:get_reference_selector("incoming_delegations")

Impressum / About Us