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
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