liquid_feedback_frontend
view app/main/issue/_list.lua @ 274:aec9df5b4cd3
More optical enhancements and repositioning of elements
author | bsw |
---|---|
date | Sun Feb 12 12:20:19 2012 +0100 (2012-02-12) |
parents | 7196685f9dd7 |
children | fc14e76afe31 |
line source
1 local issues_selector = param.get("issues_selector", "table")
3 if app.session.member_id then
4 issues_selector
5 :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", app.session.member.id} )
6 :add_field("(_interest.member_id NOTNULL)", "is_interested")
7 end
9 ui.add_partial_param_names{
10 "filter",
11 "filter_open",
12 "filter_voting",
13 "filter_interest",
14 "issue_list"
15 }
17 local filters = execute.load_chunk{module="issue", chunk="_filters.lua"}
19 filters.content = function()
20 local ui_paginate = ui.paginate
21 if param.get("per_page") == "all" then
22 ui_paginate = function(args) args.content() end
23 end
24 ui_paginate{
25 per_page = tonumber(param.get("per_page")),
26 selector = issues_selector,
27 content = function()
28 local highlight_string = param.get("highlight_string", "string")
29 local issues = issues or issues_selector:exec()
30 -- issues:load(initiatives)
31 ui.container{ attr = { class = "issues" }, content = function()
33 for i, issue in ipairs(issues) do
35 local class = "issue"
36 if issue.is_interested then
37 class = class .. " interested"
38 end
39 ui.container{ attr = { class = class }, content = function()
41 ui.container{ attr = { class = "issue_info" }, content = function()
43 ui.tag{
44 tag = "div",
45 content = function()
46 ui.link{
47 attr = { class = "issue_id" },
48 text = _("Issue ##{id}", { id = tostring(issue.id) }),
49 module = "issue",
50 view = "show",
51 id = issue.id
52 }
54 -- if not param.get("for_area_list", atom.boolean) then
55 slot.put(" · ")
56 ui.tag{ content = issue.area.unit.name }
57 slot.put(" · ")
58 ui.tag{ content = issue.area.name }
59 -- end
60 end
61 }
62 ui.tag{
63 tag = "div",
64 content = function()
66 ui.tag{ content = issue.policy.name }
68 slot.put(" · ")
69 ui.tag{ content = issue.state_name }
71 if issue.state_time_left then
72 slot.put(" · ")
73 ui.tag{ content = _("#{time_left} left", { time_left = issue.state_time_left }) }
74 end
76 end
77 }
80 if issue.old_state then
81 ui.field.text{ value = format.time(issue.sort) }
82 ui.field.text{ value = Issue:get_state_name_for_state(issue.old_state) .. " > " .. Issue:get_state_name_for_state(issue.new_state) }
83 else
84 end
85 end }
87 ui.container{ attr = { class = "initiative_list" }, content = function()
89 local initiatives_selector = issue:get_reference_selector("initiatives")
90 local highlight_string = param.get("highlight_string")
91 if highlight_string then
92 initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted")
93 end
94 execute.view{
95 module = "initiative",
96 view = "_list",
97 params = {
98 issue = issue,
99 initiatives_selector = initiatives_selector,
100 highlight_string = highlight_string,
101 per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
102 no_sort = true,
103 limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3
104 }
105 }
106 end }
107 end }
108 end
109 end }
110 end
111 }
112 end
114 filters.selector = issues_selector
115 filters.label = _"Change filters and order"
117 if param.get("no_filter", atom.boolean) then
118 filters.content()
119 else
120 ui.filters(filters)
121 end
123 if param.get("legend", atom.boolean) ~= false then
124 local filter = param.get_all_cgi().filter
125 if not filter or filter == "any" or filter ~= "finished" then
126 ui.bargraph_legend{
127 width = 25,
128 bars = {
129 { color = "#0a0", label = _"Supporter" },
130 { color = "#777", label = _"Potential supporter" },
131 { color = "#ddd", label = _"No support at all" },
132 }
133 }
134 end
135 if not filter or filter == "any" or filter == "finished" then
136 ui.bargraph_legend{
137 width = 25,
138 bars = {
139 { color = "#0a0", label = _"Yes" },
140 { color = "#aaa", label = _"Abstention" },
141 { color = "#a00", label = _"No" },
142 }
143 }
144 end
145 end