liquid_feedback_frontend

view app/main/issue/_list.lua @ 280:808269b7f41c

More repositioning and optical enhancements
author bsw
date Thu Feb 16 14:08:55 2012 +0100 (2012-02-16)
parents fc14e76afe31
children 6c88b4bfb56c
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 ui.paginate{
21 per_page = tonumber(param.get("per_page")),
22 selector = issues_selector,
23 content = function()
24 local highlight_string = param.get("highlight_string", "string")
25 local issues = issues or issues_selector:exec()
26 -- issues:load(initiatives)
27 ui.container{ attr = { class = "issues" }, content = function()
29 for i, issue in ipairs(issues) do
31 local class = "issue"
32 if issue.is_interested then
33 class = class .. " interested"
34 end
35 ui.container{ attr = { class = class }, content = function()
37 ui.container{ attr = { class = "issue_info" }, content = function()
39 ui.tag{
40 tag = "div",
41 content = function()
42 ui.link{
43 attr = { class = "issue_id" },
44 text = _("Issue ##{id}", { id = tostring(issue.id) }),
45 module = "issue",
46 view = "show",
47 id = issue.id
48 }
50 slot.put(" · ")
51 ui.tag{ content = issue.area.name }
52 slot.put(" · ")
53 ui.tag{ content = issue.area.unit.name }
55 end
56 }
57 ui.tag{
58 tag = "div",
59 content = function()
61 ui.tag{ content = issue.policy.name }
63 slot.put(" · ")
64 ui.tag{ content = issue.state_name }
66 if issue.state_time_left then
67 slot.put(" · ")
68 ui.tag{ content = _("#{time_left} left", { time_left = issue.state_time_left }) }
69 end
71 end
72 }
75 if issue.old_state then
76 ui.field.text{ value = format.time(issue.sort) }
77 ui.field.text{ value = Issue:get_state_name_for_state(issue.old_state) .. " > " .. Issue:get_state_name_for_state(issue.new_state) }
78 else
79 end
80 end }
82 ui.container{ attr = { class = "initiative_list" }, content = function()
84 local initiatives_selector = issue:get_reference_selector("initiatives")
85 local highlight_string = param.get("highlight_string")
86 if highlight_string then
87 initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted")
88 end
89 execute.view{
90 module = "initiative",
91 view = "_list",
92 params = {
93 issue = issue,
94 initiatives_selector = initiatives_selector,
95 highlight_string = highlight_string,
96 per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
97 no_sort = true,
98 limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3
99 }
100 }
101 end }
102 end }
103 end
104 end }
105 end
106 }
107 end
109 filters.opened = true
110 filters.selector = issues_selector
112 if param.get("no_filter", atom.boolean) then
113 filters.content()
114 else
115 ui.filters(filters)
116 end
118 if param.get("legend", atom.boolean) ~= false then
119 local filter = param.get_all_cgi().filter
120 if not filter or filter == "any" or filter ~= "finished" then
121 ui.bargraph_legend{
122 width = 25,
123 bars = {
124 { color = "#0a0", label = _"Supporter" },
125 { color = "#777", label = _"Potential supporter" },
126 { color = "#ddd", label = _"No support at all" },
127 }
128 }
129 end
130 if not filter or filter == "any" or filter == "finished" then
131 ui.bargraph_legend{
132 width = 25,
133 bars = {
134 { color = "#0a0", label = _"Yes" },
135 { color = "#aaa", label = _"Abstention" },
136 { color = "#a00", label = _"No" },
137 }
138 }
139 end
140 end

Impressum / About Us