liquid_feedback_frontend
annotate app/main/issue/_list.lua @ 8:374bbc2ff102
Version beta4
Bug fixed, which made it impossible to explicitly become interested in a topic
Fixed positioning of dialog for entering a new suggestion
Display of 404 pages
Bug fixed, which made it impossible to explicitly become interested in a topic
Fixed positioning of dialog for entering a new suggestion
Display of 404 pages
author | bsw |
---|---|
date | Sat Jan 02 12:00:00 2010 +0100 (2010-01-02) |
parents | 8d91bccab0bf |
children | 72c5e0ee7c98 |
rev | line source |
---|---|
bsw/jbe@0 | 1 local issues_selector = param.get("issues_selector", "table") |
bsw/jbe@0 | 2 |
bsw/jbe@5 | 3 local ui_filter = ui.filter |
bsw/jbe@5 | 4 if param.get("filter", atom.boolean) == false then |
bsw/jbe@5 | 5 ui_filter = function(args) args.content() end |
bsw/jbe@5 | 6 end |
bsw/jbe@0 | 7 |
bsw/jbe@5 | 8 local filter_voting = false |
bsw/jbe@5 | 9 ui_filter{ |
bsw/jbe@0 | 10 selector = issues_selector, |
bsw@2 | 11 filters = { |
bsw@2 | 12 { |
bsw@2 | 13 type = "boolean", |
bsw/jbe@6 | 14 name = "open", |
bsw/jbe@6 | 15 label = _"Open", |
bsw/jbe@6 | 16 selector_modifier = function(selector, value) |
bsw/jbe@6 | 17 if value then |
bsw/jbe@6 | 18 selector:add_where("issue.closed ISNULL") |
bsw/jbe@6 | 19 end |
bsw/jbe@6 | 20 end |
bsw@2 | 21 }, |
bsw/jbe@0 | 22 { |
bsw@2 | 23 type = "boolean", |
bsw@2 | 24 name = "new", |
bsw@2 | 25 label = _"New", |
bsw@2 | 26 selector_modifier = function(selector, value) |
bsw@2 | 27 if value then |
bsw@2 | 28 selector:add_where("issue.accepted ISNULL AND issue.closed ISNULL") |
bsw@2 | 29 end |
bsw@2 | 30 end |
bsw@2 | 31 }, |
bsw@2 | 32 { |
bsw@2 | 33 type = "boolean", |
bsw@2 | 34 name = "accepted", |
bsw@2 | 35 label = _"In discussion", |
bsw@2 | 36 selector_modifier = function(selector, value) |
bsw@2 | 37 if value then |
bsw@2 | 38 selector:add_where("issue.accepted NOTNULL AND issue.half_frozen ISNULL AND issue.closed ISNULL") |
bsw@2 | 39 end |
bsw@2 | 40 end |
bsw/jbe@0 | 41 }, |
bsw/jbe@0 | 42 { |
bsw@2 | 43 type = "boolean", |
bsw@2 | 44 name = "half_frozen", |
bsw@2 | 45 label = _"Frozen", |
bsw@2 | 46 selector_modifier = function(selector, value) |
bsw@2 | 47 if value then |
bsw/jbe@5 | 48 selector:add_where("issue.half_frozen NOTNULL AND issue.fully_frozen ISNULL") |
bsw@2 | 49 end |
bsw@2 | 50 end |
bsw@2 | 51 }, |
bsw@2 | 52 { |
bsw@2 | 53 type = "boolean", |
bsw@2 | 54 name = "frozen", |
bsw@2 | 55 label = _"Voting", |
bsw@2 | 56 selector_modifier = function(selector, value) |
bsw@2 | 57 if value then |
bsw@2 | 58 selector:add_where("issue.fully_frozen NOTNULL AND issue.closed ISNULL") |
bsw/jbe@5 | 59 filter_voting = true |
bsw@2 | 60 end |
bsw@2 | 61 end |
bsw/jbe@0 | 62 }, |
bsw/jbe@0 | 63 { |
bsw@2 | 64 type = "boolean", |
bsw@2 | 65 name = "finished", |
bsw@2 | 66 label = _"Finished", |
bsw@2 | 67 selector_modifier = function(selector, value) |
bsw@2 | 68 if value then |
bsw/jbe@5 | 69 selector:add_where("issue.closed NOTNULL AND issue.fully_frozen NOTNULL") |
bsw@2 | 70 end |
bsw@2 | 71 end |
bsw@2 | 72 }, |
bsw@2 | 73 { |
bsw@2 | 74 type = "boolean", |
bsw@2 | 75 name = "cancelled", |
bsw@2 | 76 label = _"Cancelled", |
bsw@2 | 77 selector_modifier = function(selector, value) |
bsw@2 | 78 if value then |
bsw/jbe@5 | 79 selector:add_where("issue.closed NOTNULL AND issue.accepted ISNULL") |
bsw@2 | 80 end |
bsw@2 | 81 end |
bsw@2 | 82 }, |
bsw/jbe@0 | 83 }, |
bsw/jbe@0 | 84 content = function() |
bsw/jbe@5 | 85 local ui_filter = ui.filter |
bsw/jbe@5 | 86 if not filter_voting then |
bsw/jbe@5 | 87 ui_filter = function(args) args.content() end |
bsw/jbe@5 | 88 end |
bsw/jbe@5 | 89 ui_filter{ |
bsw/jbe@0 | 90 selector = issues_selector, |
bsw/jbe@5 | 91 name = "filter_voting", |
bsw/jbe@5 | 92 filters = { |
bsw@2 | 93 { |
bsw/jbe@5 | 94 type = "boolean", |
bsw/jbe@5 | 95 name = "any", |
bsw/jbe@5 | 96 label = _"Any", |
bsw/jbe@5 | 97 selector_modifier = function() end |
bsw@2 | 98 }, |
bsw@2 | 99 { |
bsw/jbe@5 | 100 type = "boolean", |
bsw/jbe@5 | 101 name = "not_voted", |
bsw/jbe@5 | 102 label = _"Not voted", |
bsw/jbe@5 | 103 selector_modifier = function(selector, value) |
bsw/jbe@5 | 104 if value then |
bsw/jbe@5 | 105 selector:left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) |
bsw/jbe@5 | 106 selector:add_where("direct_voter.member_id ISNULL") |
bsw/jbe@5 | 107 end |
bsw/jbe@5 | 108 end |
bsw@2 | 109 }, |
bsw@2 | 110 { |
bsw/jbe@5 | 111 type = "boolean", |
bsw/jbe@5 | 112 name = "voted", |
bsw/jbe@5 | 113 label = _"Voted", |
bsw/jbe@5 | 114 selector_modifier = function(selector, value) |
bsw/jbe@5 | 115 if value then |
bsw/jbe@5 | 116 selector:join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) |
bsw/jbe@5 | 117 end |
bsw/jbe@5 | 118 end |
bsw/jbe@5 | 119 }, |
bsw@2 | 120 }, |
bsw/jbe@0 | 121 content = function() |
bsw/jbe@5 | 122 local ui_filter = ui.filter |
bsw/jbe@5 | 123 if param.get("filter", atom.boolean) == false then |
bsw/jbe@5 | 124 ui_filter = function(args) args.content() end |
bsw/jbe@5 | 125 end |
bsw/jbe@5 | 126 ui_filter{ |
bsw@2 | 127 selector = issues_selector, |
bsw/jbe@5 | 128 name = "filter_interest", |
bsw/jbe@5 | 129 filters = { |
bsw/jbe@5 | 130 { |
bsw/jbe@5 | 131 type = "boolean", |
bsw/jbe@5 | 132 name = "any", |
bsw/jbe@5 | 133 label = _"Any", |
bsw/jbe@5 | 134 selector_modifier = function() end |
bsw/jbe@5 | 135 }, |
bsw/jbe@5 | 136 { |
bsw/jbe@5 | 137 type = "boolean", |
bsw/jbe@5 | 138 name = "my", |
bsw/jbe@5 | 139 label = _"Interested", |
bsw/jbe@5 | 140 selector_modifier = function(selector, value) |
bsw/jbe@5 | 141 if value then |
bsw/jbe@5 | 142 selector:join("interest", "filter_interest", { "filter_interest.issue_id = issue.id AND filter_interest.member_id = ? ", app.session.member.id }) |
bsw/jbe@5 | 143 end |
bsw/jbe@5 | 144 end |
bsw/jbe@5 | 145 }, |
bsw/jbe@5 | 146 }, |
bsw@2 | 147 content = function() |
bsw/jbe@5 | 148 |
bsw/jbe@5 | 149 ui.order{ |
bsw/jbe@5 | 150 name = "issue_list", |
bsw/jbe@5 | 151 selector = issues_selector, |
bsw/jbe@5 | 152 options = { |
bsw@2 | 153 { |
bsw/jbe@5 | 154 name = "max_potential_support", |
bsw/jbe@5 | 155 label = _"Max potential support", |
bsw/jbe@5 | 156 selector_modifier = function(selector) |
bsw/jbe@6 | 157 selector:add_order_by("(SELECT max(supporter_count) FROM initiative WHERE initiative.issue_id = issue.id) DESC") |
bsw@2 | 158 end |
bsw@2 | 159 }, |
bsw@2 | 160 { |
bsw/jbe@5 | 161 name = "max_support", |
bsw/jbe@5 | 162 label = _"Max support", |
bsw/jbe@5 | 163 selector_modifier = function(selector) |
bsw/jbe@6 | 164 selector:add_order_by("(SELECT max(satisfied_supporter_count) FROM initiative WHERE initiative.issue_id = issue.id) DESC") |
bsw@2 | 165 end |
bsw@2 | 166 }, |
bsw@2 | 167 { |
bsw/jbe@5 | 168 name = "population", |
bsw/jbe@5 | 169 label = _"Population", |
bsw/jbe@5 | 170 order_by = "issue.population DESC" |
bsw/jbe@5 | 171 }, |
bsw/jbe@5 | 172 { |
bsw/jbe@5 | 173 name = "newest", |
bsw/jbe@5 | 174 label = _"Newest", |
bsw/jbe@5 | 175 order_by = "issue.created DESC" |
bsw/jbe@5 | 176 }, |
bsw/jbe@5 | 177 { |
bsw/jbe@5 | 178 name = "oldest", |
bsw/jbe@5 | 179 label = _"Oldest", |
bsw/jbe@5 | 180 order_by = "issue.created" |
bsw/jbe@5 | 181 } |
bsw/jbe@5 | 182 }, |
bsw/jbe@5 | 183 content = function() |
bsw/jbe@5 | 184 ui.paginate{ |
bsw/jbe@5 | 185 selector = issues_selector, |
bsw/jbe@5 | 186 content = function() |
bsw/jbe@5 | 187 local highlight_string = param.get("highlight_string", "string") |
bsw/jbe@5 | 188 local issues = issues or issues_selector:exec() |
bsw/jbe@5 | 189 -- issues:load(initiatives) |
bsw/jbe@5 | 190 ui.list{ |
bsw/jbe@5 | 191 attr = { class = "issues" }, |
bsw/jbe@5 | 192 records = issues, |
bsw/jbe@5 | 193 columns = { |
bsw/jbe@5 | 194 { |
bsw/jbe@5 | 195 label = _"Issue", |
bsw/jbe@5 | 196 content = function(record) |
bsw/jbe@5 | 197 if not param.get("for_area_list", atom.boolean) then |
bsw/jbe@5 | 198 ui.field.text{ |
bsw/jbe@5 | 199 value = record.area.name |
bsw/jbe@5 | 200 } |
bsw/jbe@5 | 201 slot.put("<br />") |
bsw/jbe@5 | 202 end |
bsw/jbe@5 | 203 ui.link{ |
bsw/jbe@5 | 204 text = _"Issue ##{id}":gsub("#{id}", tostring(record.id)), |
bsw/jbe@5 | 205 module = "issue", |
bsw/jbe@5 | 206 view = "show", |
bsw/jbe@5 | 207 id = record.id |
bsw/jbe@5 | 208 } |
bsw/jbe@5 | 209 if record.state == "new" then |
bsw/jbe@5 | 210 ui.image{ |
bsw/jbe@5 | 211 static = "icons/16/new.png" |
bsw/jbe@5 | 212 } |
bsw/jbe@5 | 213 end |
bsw/jbe@5 | 214 slot.put("<br />") |
bsw/jbe@5 | 215 slot.put("<br />") |
bsw/jbe@5 | 216 end |
bsw/jbe@5 | 217 }, |
bsw/jbe@5 | 218 { |
bsw/jbe@5 | 219 label = _"State", |
bsw/jbe@5 | 220 content = function(record) |
bsw/jbe@6 | 221 if record.state == "voting" then |
bsw/jbe@6 | 222 ui.link{ |
bsw/jbe@6 | 223 content = _"Voting", |
bsw/jbe@6 | 224 module = "vote", |
bsw/jbe@6 | 225 view = "list", |
bsw/jbe@6 | 226 params = { issue_id = record.id } |
bsw/jbe@6 | 227 } |
bsw/jbe@6 | 228 else |
bsw/jbe@6 | 229 ui.field.issue_state{ value = record.state } |
bsw/jbe@6 | 230 end |
bsw/jbe@5 | 231 end |
bsw/jbe@5 | 232 }, |
bsw/jbe@5 | 233 { |
bsw/jbe@5 | 234 label = _"Initiatives", |
bsw/jbe@5 | 235 content = function(record) |
bsw/jbe@5 | 236 local initiatives_selector = record:get_reference_selector("initiatives") |
bsw/jbe@5 | 237 local highlight_string = param.get("highlight_string") |
bsw/jbe@5 | 238 if highlight_string then |
bsw/jbe@5 | 239 initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted") |
bsw/jbe@5 | 240 end |
bsw/jbe@5 | 241 execute.view{ |
bsw/jbe@5 | 242 module = "initiative", |
bsw/jbe@5 | 243 view = "_list", |
bsw/jbe@5 | 244 params = { |
bsw/jbe@5 | 245 issue = record, |
bsw/jbe@5 | 246 initiatives_selector = initiatives_selector, |
bsw/jbe@5 | 247 highlight_string = highlight_string, |
bsw/jbe@5 | 248 limit = 3 |
bsw/jbe@5 | 249 } |
bsw/jbe@5 | 250 } |
bsw/jbe@5 | 251 end |
bsw/jbe@5 | 252 }, |
bsw@2 | 253 } |
bsw@2 | 254 } |
bsw@2 | 255 end |
bsw/jbe@5 | 256 } |
bsw/jbe@5 | 257 end |
bsw@2 | 258 } |
bsw@2 | 259 end |
bsw/jbe@0 | 260 } |
bsw/jbe@0 | 261 end |
bsw/jbe@0 | 262 } |
bsw/jbe@5 | 263 if param.get("legend", atom.boolean) ~= false then |
bsw/jbe@5 | 264 local filter = param.get_all_cgi().filter |
bsw/jbe@5 | 265 if not filter or filter == "any" or filter ~= "finished" then |
bsw/jbe@5 | 266 ui.bargraph_legend{ |
bsw/jbe@5 | 267 width = 25, |
bsw/jbe@5 | 268 bars = { |
bsw/jbe@5 | 269 { color = "#0a0", label = _"Supporter" }, |
bsw/jbe@5 | 270 { color = "#777", label = _"Potential supporter" }, |
bsw/jbe@5 | 271 { color = "#ddd", label = _"No support at all" }, |
bsw/jbe@5 | 272 } |
bsw/jbe@5 | 273 } |
bsw/jbe@5 | 274 end |
bsw/jbe@5 | 275 if not filter or filter == "any" or filter == "finished" then |
bsw/jbe@5 | 276 ui.bargraph_legend{ |
bsw/jbe@5 | 277 width = 25, |
bsw/jbe@5 | 278 bars = { |
bsw/jbe@5 | 279 { color = "#0a0", label = _"Yes" }, |
bsw/jbe@5 | 280 { color = "#aaa", label = _"Abstention" }, |
bsw/jbe@5 | 281 { color = "#a00", label = _"No" }, |
bsw/jbe@5 | 282 } |
bsw/jbe@5 | 283 } |
bsw/jbe@5 | 284 end |
bsw/jbe@5 | 285 end |
bsw/jbe@0 | 286 end |
bsw@2 | 287 } |