liquid_feedback_frontend

annotate app/main/issue/_list.lua @ 524:9d463368e0d0

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

Impressum / About Us