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

Impressum / About Us