liquid_feedback_frontend

annotate app/main/issue/_list.lua @ 3:768faea1096d

Version alpha4

Members interested in an issue or supporting an initiative have a weight information attached. Browsing the members causing that weight is possible.

Initiatives may provide a link to an external discussion platform

Direct link on every initiative page to create an alternative initiative

Bugfix: No error when clicking "neutral", when "neutral" is currently selected
author bsw
date Mon Nov 30 12:00:00 2009 +0100 (2009-11-30)
parents 5c601807d397
children afd9f769c7ae
rev   line source
bsw/jbe@0 1 local issues_selector = param.get("issues_selector", "table")
bsw/jbe@0 2
bsw/jbe@0 3
bsw@2 4 ui.filter{
bsw/jbe@0 5 selector = issues_selector,
bsw@2 6 filters = {
bsw@2 7 {
bsw@2 8 type = "boolean",
bsw@2 9 name = "any",
bsw@2 10 label = _"Any",
bsw@2 11 selector_modifier = function() end
bsw@2 12 },
bsw/jbe@0 13 {
bsw@2 14 type = "boolean",
bsw@2 15 name = "new",
bsw@2 16 label = _"New",
bsw@2 17 selector_modifier = function(selector, value)
bsw@2 18 if value then
bsw@2 19 selector:add_where("issue.accepted ISNULL AND issue.closed ISNULL")
bsw@2 20 end
bsw@2 21 end
bsw@2 22 },
bsw@2 23 {
bsw@2 24 type = "boolean",
bsw@2 25 name = "accepted",
bsw@2 26 label = _"In discussion",
bsw@2 27 selector_modifier = function(selector, value)
bsw@2 28 if value then
bsw@2 29 selector:add_where("issue.accepted NOTNULL AND issue.half_frozen ISNULL AND issue.closed ISNULL")
bsw@2 30 end
bsw@2 31 end
bsw/jbe@0 32 },
bsw/jbe@0 33 {
bsw@2 34 type = "boolean",
bsw@2 35 name = "half_frozen",
bsw@2 36 label = _"Frozen",
bsw@2 37 selector_modifier = function(selector, value)
bsw@2 38 if value then
bsw@2 39 selector:add_where("issue.half_frozen NOTNULL AND issue.closed ISNULL")
bsw@2 40 end
bsw@2 41 end
bsw@2 42 },
bsw@2 43 {
bsw@2 44 type = "boolean",
bsw@2 45 name = "frozen",
bsw@2 46 label = _"Voting",
bsw@2 47 selector_modifier = function(selector, value)
bsw@2 48 if value then
bsw@2 49 selector:add_where("issue.fully_frozen NOTNULL AND issue.closed ISNULL")
bsw@2 50 end
bsw@2 51 end
bsw/jbe@0 52 },
bsw/jbe@0 53 {
bsw@2 54 type = "boolean",
bsw@2 55 name = "finished",
bsw@2 56 label = _"Finished",
bsw@2 57 selector_modifier = function(selector, value)
bsw@2 58 if value then
bsw@2 59 selector:add_where("issue.closed NOTNULL AND ranks_available")
bsw@2 60 end
bsw@2 61 end
bsw@2 62 },
bsw@2 63 {
bsw@2 64 type = "boolean",
bsw@2 65 name = "cancelled",
bsw@2 66 label = _"Cancelled",
bsw@2 67 selector_modifier = function(selector, value)
bsw@2 68 if value then
bsw@2 69 selector:add_where("issue.closed NOTNULL AND NOT ranks_available")
bsw@2 70 end
bsw@2 71 end
bsw@2 72 },
bsw/jbe@0 73 },
bsw/jbe@0 74 content = function()
bsw@2 75 ui.order{
bsw@2 76 name = "issue_list",
bsw/jbe@0 77 selector = issues_selector,
bsw@2 78 options = {
bsw@2 79 {
bsw@2 80 name = "population",
bsw@2 81 label = _"Population",
bsw@2 82 order_by = "issue.population DESC"
bsw@2 83 },
bsw@2 84 {
bsw@2 85 name = "newest",
bsw@2 86 label = _"Newest",
bsw@2 87 order_by = "issue.created DESC"
bsw@2 88 },
bsw@2 89 {
bsw@2 90 name = "oldest",
bsw@2 91 label = _"Oldest",
bsw@2 92 order_by = "issue.created"
bsw@2 93 }
bsw@2 94 },
bsw/jbe@0 95 content = function()
bsw@2 96 ui.paginate{
bsw@2 97 selector = issues_selector,
bsw@2 98 content = function()
bsw@2 99 local highlight_string = param.get("highlight_string", "string")
bsw@2 100 local issues = issues or issues_selector:exec()
bsw@2 101 -- issues:load(initiatives)
bsw@2 102 ui.list{
bsw@2 103 attr = { class = "issues" },
bsw@2 104 records = issues,
bsw@2 105 columns = {
bsw@2 106 {
bsw@2 107 label = _"Issue",
bsw@2 108 content = function(record)
bsw@2 109 if not param.get("for_area_list", atom.boolean) then
bsw@2 110 ui.field.text{
bsw@2 111 value = record.area.name
bsw@2 112 }
bsw@2 113 slot.put("<br />")
bsw@2 114 end
bsw@2 115 ui.link{
bsw@2 116 text = _"Issue ##{id}":gsub("#{id}", tostring(record.id)),
bsw@2 117 module = "issue",
bsw@2 118 view = "show",
bsw@2 119 id = record.id
bsw@2 120 }
bsw@2 121 if record.state == "new" then
bsw@2 122 ui.image{
bsw@2 123 static = "icons/16/new.png"
bsw@2 124 }
bsw@2 125 end
bsw@2 126 slot.put("<br />")
bsw@2 127 slot.put("<br />")
bsw@2 128 end
bsw@2 129 },
bsw@2 130 {
bsw@2 131 label = _"State",
bsw@2 132 content = function(record)
bsw@2 133 ui.field.issue_state{ value = record.state }
bsw@2 134 end
bsw@2 135 },
bsw@2 136 {
bsw@2 137 label = _"Initiatives",
bsw@2 138 content = function(record)
bsw@2 139 local initiatives_selector = record:get_reference_selector("initiatives")
bsw@2 140 local highlight_string = param.get("highlight_string")
bsw@2 141 if highlight_string then
bsw@2 142 initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted")
bsw@2 143 end
bsw@2 144 execute.view{
bsw@2 145 module = "initiative",
bsw@2 146 view = "_list",
bsw@2 147 params = {
bsw@2 148 issue = record,
bsw@2 149 initiatives_selector = initiatives_selector,
bsw@2 150 highlight_string = highlight_string,
bsw@2 151 limit = 3
bsw@2 152 }
bsw@2 153 }
bsw@2 154 end
bsw@2 155 },
bsw@2 156 }
bsw@2 157 }
bsw@2 158 end
bsw/jbe@0 159 }
bsw/jbe@0 160 end
bsw/jbe@0 161 }
bsw/jbe@0 162 end
bsw@2 163 }

Impressum / About Us