liquid_feedback_frontend

view app/main/issue/_list.lua @ 436:852962dd9bb0

Fixed typo in german translation
author bsw
date Sun Mar 11 12:21:54 2012 +0100 (2012-03-11)
parents 7ebf90c7d436
children b04d1f79508e
line source
1 local issues_selector = param.get("issues_selector", "table")
2 local for_member = param.get("for_member", "table") or app.session.member
3 local for_state = param.get("for_state")
4 local for_unit = param.get("for_unit", atom.boolean)
5 local for_area = param.get("for_area", atom.boolean)
8 if for_state == "open" then
9 issues_selector:add_where("issue.closed ISNULL")
10 elseif for_state == "closed" then
11 issues_selector:add_where("issue.closed NOTNULL")
12 end
14 if app.session.member_id then
15 issues_selector
16 :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", for_member.id } )
17 :add_field("(_interest.member_id NOTNULL)", "is_interested")
18 issues_selector
19 :left_join("delegating_interest_snapshot", "_delegating_interest", { "_delegating_interest.issue_id = issue.id AND _delegating_interest.member_id = ? AND _delegating_interest.event = issue.latest_snapshot_event", for_member.id } )
20 :add_field("_delegating_interest.delegate_member_ids[1]", "is_interested_by_delegation_to_member_id")
21 :add_field("_delegating_interest.delegate_member_ids[array_upper(_delegating_interest.delegate_member_ids, 1)]", "is_interested_via_member_id")
22 :add_field("array_length(_delegating_interest.delegate_member_ids, 1)", "delegation_chain_length")
23 end
25 ui.add_partial_param_names{
26 "filter",
27 "filter_open",
28 "filter_voting",
29 "filter_interest",
30 "issue_list"
31 }
33 local filters = execute.load_chunk{module="issue", chunk="_filters.lua", params = {
34 member = for_member, state = for_state, for_unit = for_unit, for_area = for_area
35 }}
37 filters.content = function()
38 ui.paginate{
39 per_page = tonumber(param.get("per_page") or 25),
40 selector = issues_selector,
41 content = function()
42 local highlight_string = param.get("highlight_string", "string")
43 local issues = issues or issues_selector:exec()
44 -- issues:load(initiatives)
45 ui.container{ attr = { class = "issues" }, content = function()
47 for i, issue in ipairs(issues) do
49 local class = "issue"
50 if issue.is_interested then
51 class = class .. " interested"
52 elseif issue.is_interested_by_delegation_to_member_id then
53 class = class .. " interested_by_delegation"
54 end
55 ui.container{ attr = { class = class }, content = function()
57 ui.container{ attr = { class = "issue_info" }, content = function()
59 if issue.is_interested then
60 ui.tag{
61 tag = "div", attr = { class = "interest_by_delegation"},
62 content = function()
63 local text = "You are interested in this issue"
64 ui.image{ attr = { alt = text, title = text }, static = "icons/16/eye.png" }
65 end
66 }
68 elseif issue.is_interested_by_delegation_to_member_id then
69 ui.tag{
70 tag = "div", attr = { class = "interest_by_delegation"},
71 content = function()
72 local member = Member:by_id(issue.is_interested_by_delegation_to_member_id)
73 local text = _"delegated to"
74 ui.image{
75 attr = { class = "delegation_arrow", alt = text, title = text },
76 static = "delegation_arrow_24_horizontal.png"
77 }
78 execute.view{
79 module = "member_image",
80 view = "_show",
81 params = {
82 member = member,
83 image_type = "avatar",
84 show_dummy = true,
85 class = "micro_avatar",
86 popup_text = member.name
87 }
88 }
89 if issue.is_interested_by_delegation_to_member_id ~= issue.is_interested_via_member_id then
90 if issue.delegation_chain_length > 2 then
91 local text = _"delegated to"
92 ui.image{
93 attr = { class = "delegation_arrow", alt = text, title = text },
94 static = "delegation_arrow_24_horizontal.png"
95 }
96 ui.tag{ content = "..." }
97 end
98 local text = _"delegated to"
99 ui.image{
100 attr = { class = "delegation_arrow", alt = text, title = text },
101 static = "delegation_arrow_24_horizontal.png"
102 }
103 local member = Member:by_id(issue.is_interested_via_member_id)
104 execute.view{
105 module = "member_image",
106 view = "_show",
107 params = {
108 member = member,
109 image_type = "avatar",
110 show_dummy = true,
111 class = "micro_avatar",
112 popup_text = member.name
113 }
114 }
115 end
116 end
117 }
118 end
120 ui.tag{
121 tag = "div",
122 content = function()
123 ui.link{
124 attr = { class = "issue_id" },
125 text = _("Issue ##{id}", { id = tostring(issue.id) }),
126 module = "issue",
127 view = "show",
128 id = issue.id
129 }
131 slot.put(" · ")
132 ui.tag{ content = issue.area.name }
133 slot.put(" · ")
134 ui.tag{ content = issue.area.unit.name }
135 slot.put(" · ")
136 ui.tag{ content = issue.policy.name }
139 end
140 }
141 ui.tag{
142 attr = { class = "issue_policy_info" },
143 tag = "div",
144 content = function()
146 ui.tag{ attr = { class = "event_name" }, content = issue.state_name }
148 if issue.state_time_left then
149 slot.put(" · ")
150 if issue.state_time_left:sub(1,1) == "-" then
151 ui.tag{ content = _("Counting starts soon") }
152 else
153 ui.tag{ content = _("#{time_left} left", { time_left = issue.state_time_left:gsub("days", _"days"):gsub("day", _"day") }) }
154 end
155 end
157 end
158 }
161 if issue.old_state then
162 ui.field.text{ value = format.time(issue.sort) }
163 ui.field.text{ value = Issue:get_state_name_for_state(issue.old_state) .. " > " .. Issue:get_state_name_for_state(issue.new_state) }
164 else
165 end
166 end }
168 ui.container{ attr = { class = "initiative_list" }, content = function()
170 local initiatives_selector = issue:get_reference_selector("initiatives")
171 local highlight_string = param.get("highlight_string")
172 if highlight_string then
173 initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted")
174 end
175 execute.view{
176 module = "initiative",
177 view = "_list",
178 params = {
179 issue = issue,
180 initiatives_selector = initiatives_selector,
181 highlight_string = highlight_string,
182 per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
183 no_sort = true,
184 limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
185 for_member = for_member
186 }
187 }
188 end }
189 end }
190 end
191 end }
192 end
193 }
194 end
196 filters.opened = true
197 filters.selector = issues_selector
199 if param.get("no_filter", atom.boolean) then
200 filters.content()
201 else
202 ui.filters(filters)
203 end

Impressum / About Us