liquid_feedback_frontend

diff app/main/issue/_list.lua @ 127:4fb486bce608

add pageinator to issue view.

this "paginator" shows links to the prev/area/next issues that have the same
state then the current one. This helps a lot when inspecting new issues or voting.
The voting filter works a little bit different, as he also activtes the not_voted subfilter
because it is most likely only not voted issues are interessting to the user
author Daniel Poelzleithner <poelzi@poelzi.org>
date Tue Oct 05 04:44:06 2010 +0200 (2010-10-05)
parents 733f65c0c0a0
children 7196685f9dd7
line diff
     1.1 --- a/app/main/issue/_list.lua	Mon Oct 04 15:52:22 2010 +0200
     1.2 +++ b/app/main/issue/_list.lua	Tue Oct 05 04:44:06 2010 +0200
     1.3 @@ -14,175 +14,7 @@
     1.4    "issue_list" 
     1.5  }
     1.6  
     1.7 -local filters = {}
     1.8 -
     1.9 -filters[#filters+1] = {
    1.10 -  label = _"Filter",
    1.11 -  {
    1.12 -    name = "open",
    1.13 -    label = _"Open",
    1.14 -    selector_modifier = function(selector)
    1.15 -        selector:add_where("issue.closed ISNULL")
    1.16 -    end
    1.17 -  },
    1.18 -  {
    1.19 -    name = "new",
    1.20 -    label = _"New",
    1.21 -    selector_modifier = function(selector)
    1.22 -      selector:add_where("issue.accepted ISNULL AND issue.closed ISNULL")
    1.23 -    end
    1.24 -  },
    1.25 -  {
    1.26 -    name = "accepted",
    1.27 -    label = _"In discussion",
    1.28 -    selector_modifier = function(selector)
    1.29 -      selector:add_where("issue.accepted NOTNULL AND issue.half_frozen ISNULL AND issue.closed ISNULL")
    1.30 -    end
    1.31 -  },
    1.32 -  {
    1.33 -    name = "half_frozen",
    1.34 -    label = _"Frozen",
    1.35 -    selector_modifier = function(selector)
    1.36 -      selector:add_where("issue.half_frozen NOTNULL AND issue.fully_frozen ISNULL")
    1.37 -    end
    1.38 -  },
    1.39 -  {
    1.40 -    name = "frozen",
    1.41 -    label = _"Voting",
    1.42 -    selector_modifier = function(selector)
    1.43 -      selector:add_where("issue.fully_frozen NOTNULL AND issue.closed ISNULL")
    1.44 -      filter_voting = true
    1.45 -    end
    1.46 -  },
    1.47 -  {
    1.48 -    name = "finished",
    1.49 -    label = _"Finished",
    1.50 -    selector_modifier = function(selector)
    1.51 -      selector:add_where("issue.closed NOTNULL AND issue.fully_frozen NOTNULL")
    1.52 -    end
    1.53 -  },
    1.54 -  {
    1.55 -    name = "cancelled",
    1.56 -    label = _"Cancelled",
    1.57 -    selector_modifier = function(selector)
    1.58 -      selector:add_where("issue.closed NOTNULL AND issue.fully_frozen ISNULL")
    1.59 -    end
    1.60 -  },
    1.61 -  {
    1.62 -    name = "any",
    1.63 -    label = _"Any",
    1.64 -    selector_modifier = function(selector) end
    1.65 -  },
    1.66 -}
    1.67 -
    1.68 -
    1.69 -if app.session.member and param.get("filter") == "frozen" then
    1.70 -  filters[#filters+1] = {
    1.71 -    label = _"Filter",
    1.72 -    name = "filter_voting",
    1.73 -    {
    1.74 -      name = "any",
    1.75 -      label = _"Any",
    1.76 -      selector_modifier = function()  end
    1.77 -    },
    1.78 -    {
    1.79 -      name = "not_voted",
    1.80 -      label = _"Not voted",
    1.81 -      selector_modifier = function(selector)
    1.82 -        selector:left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id })
    1.83 -        selector:add_where("direct_voter.member_id ISNULL")
    1.84 -      end
    1.85 -    },
    1.86 -    {
    1.87 -      name = "voted",
    1.88 -      label = _"Voted",
    1.89 -      selector_modifier = function(selector)
    1.90 -        selector:join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id })
    1.91 -      end
    1.92 -    },
    1.93 -  }
    1.94 -end
    1.95 -
    1.96 -
    1.97 -filters[#filters+1] = {
    1.98 -  label = _"Filter",
    1.99 -  name = "filter_interest",
   1.100 -  {
   1.101 -    name = "any",
   1.102 -    label = _"Any",
   1.103 -    selector_modifier = function()  end
   1.104 -  },
   1.105 -  {
   1.106 -    name = "my",
   1.107 -    label = _"Interested",
   1.108 -    selector_modifier = function(selector)
   1.109 -      selector:join("interest", "filter_interest", { "filter_interest.issue_id = issue.id AND filter_interest.member_id = ? ", app.session.member.id })
   1.110 -    end
   1.111 -  },
   1.112 -  {
   1.113 -    name = "supported",
   1.114 -    label = _"Supported",
   1.115 -    selector_modifier = function(selector)
   1.116 -      selector:add_where({ "EXISTS (SELECT 1 FROM initiative JOIN supporter ON supporter.initiative_id = initiative.id AND supporter.member_id = ? LEFT JOIN opinion ON opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)) WHERE initiative.issue_id = issue.id AND opinion.member_id ISNULL LIMIT 1)", app.session.member.id, app.session.member.id })
   1.117 -    end
   1.118 -  },
   1.119 -  {
   1.120 -    name = "potentially_supported",
   1.121 -    label = _"Potential supported",
   1.122 -    selector_modifier = function(selector)
   1.123 -      selector:add_where({ "EXISTS (SELECT 1 FROM initiative JOIN supporter ON supporter.initiative_id = initiative.id AND supporter.member_id = ? JOIN opinion ON opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)) WHERE initiative.issue_id = issue.id LIMIT 1)", app.session.member.id, app.session.member.id })
   1.124 -    end
   1.125 -  },
   1.126 -  {
   1.127 -    name = "initiated",
   1.128 -    label = _"Initiated",
   1.129 -    selector_modifier = function(selector)
   1.130 -      selector:add_where({ "EXISTS (SELECT 1 FROM initiative JOIN initiator ON initiator.initiative_id = initiative.id AND initiator.member_id = ? WHERE initiative.issue_id = issue.id)", app.session.member.id })
   1.131 -    end
   1.132 -  },
   1.133 -}
   1.134 -
   1.135 -if not param.get("no_sort", atom.boolean) then
   1.136 -  filters[#filters+1] = {
   1.137 -    label = _"Order by",
   1.138 -    name = "issue_list",
   1.139 -    {
   1.140 -      name = "max_potential_support",
   1.141 -      label = _"Max potential support",
   1.142 -      selector_modifier = function(selector)
   1.143 -        selector:add_order_by("(SELECT max(supporter_count) FROM initiative WHERE initiative.issue_id = issue.id) DESC")
   1.144 -      end
   1.145 -    },
   1.146 -    {
   1.147 -      name = "max_support",
   1.148 -      label = _"Max support",
   1.149 -      selector_modifier = function(selector)
   1.150 -        selector:add_order_by("(SELECT max(satisfied_supporter_count) FROM initiative WHERE initiative.issue_id = issue.id) DESC")
   1.151 -      end
   1.152 -    },
   1.153 -    {
   1.154 -      name = "population",
   1.155 -      label = _"Population",
   1.156 -      selector_modifier = function(selector)
   1.157 -        selector:add_order_by("issue.population DESC")
   1.158 -      end
   1.159 -    },
   1.160 -    {
   1.161 -      name = "newest",
   1.162 -      label = _"Newest",
   1.163 -      selector_modifier = function(selector)
   1.164 -        selector:add_order_by("issue.created DESC")
   1.165 -      end
   1.166 -    },
   1.167 -    {
   1.168 -      name = "oldest",
   1.169 -      label = _"Oldest",
   1.170 -      selector_modifier = function(selector)
   1.171 -        selector:add_order_by("issue.created")
   1.172 -      end
   1.173 -    }
   1.174 -  }
   1.175 -end
   1.176 +local filters = execute.load_chunk{module="issue", chunk="_filters.lua"}
   1.177  
   1.178  filters.content = function()
   1.179    local ui_paginate = ui.paginate

Impressum / About Us