liquid_feedback_frontend
changeset 1601:7da942c0ed5d
Removed unused views
author | bsw |
---|---|
date | Mon Feb 01 12:58:17 2021 +0100 (2021-02-01) |
parents | d47d2b0cd7c2 |
children | a3a7120a67be |
files | app/main/area/show.lua app/main/issue/_head2.lua app/main/issue/_list2.lua app/main/unit/show.lua |
line diff
1.1 --- a/app/main/area/show.lua Sun Jan 31 22:12:27 2021 +0100 1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 1.3 @@ -1,73 +0,0 @@ 1.4 -local area = Area:by_id(param.get_id()) 1.5 - 1.6 -if not area then 1.7 - execute.view { module = "index", view = "404" } 1.8 - request.set_status("404 Not Found") 1.9 - return 1.10 -end 1.11 - 1.12 -app.current_area = area 1.13 - 1.14 - 1.15 -area:load_delegation_info_once_for_member_id(app.session.member_id) 1.16 - 1.17 -app.html_title.title = area.name 1.18 -app.html_title.subtitle = _("Area") 1.19 - 1.20 -ui.container{ attr = { class = "mdl-grid" }, content = function() 1.21 - ui.container{ attr = { class = "mdl-cell mdl-cell--12-col" }, content = function() 1.22 - ui.heading{ content = area.unit.name .. " / " .. area.name } 1.23 - 1.24 - execute.view { 1.25 - module = "area", view = "_head", params = { 1.26 - area = area, member = app.session.member 1.27 - } 1.28 - } 1.29 - 1.30 - execute.view { 1.31 - module = "area", view = "_sidebar_whatcanido", params = { 1.32 - area = area 1.33 - } 1.34 - } 1.35 - 1.36 - execute.view { 1.37 - module = "area", view = "_sidebar_members", params = { 1.38 - area = area 1.39 - } 1.40 - } 1.41 - 1.42 - local function getOpenIssuesSelector() 1.43 - return area:get_reference_selector("issues") 1.44 - :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now()") 1.45 - end 1.46 - 1.47 - local admission_selector = getOpenIssuesSelector() 1.48 - :add_where("issue.state = 'admission'"); 1.49 - 1.50 - local discussion_selector = getOpenIssuesSelector() 1.51 - :add_where("issue.state = 'discussion'"); 1.52 - 1.53 - local verification_selector = getOpenIssuesSelector() 1.54 - :add_where("issue.state = 'verification'"); 1.55 - 1.56 - local voting_selector = getOpenIssuesSelector() 1.57 - :add_where("issue.state = 'voting'"); 1.58 - 1.59 - 1.60 - local closed_selector = area:get_reference_selector("issues") 1.61 - :add_where("issue.closed NOTNULL") 1.62 - :add_order_by("issue.closed DESC") 1.63 - 1.64 - local members_selector = area:get_reference_selector("members"):add_where("member.active") 1.65 - local delegations_selector = area:get_reference_selector("delegations") 1.66 - :join("member", "truster", "truster.id = delegation.truster_id AND truster.active") 1.67 - :join("member", "trustee", "trustee.id = delegation.trustee_id AND trustee.active") 1.68 - 1.69 - 1.70 - execute.view { 1.71 - module = "issue", 1.72 - view = "_list", 1.73 - params = { for_area = area } 1.74 - } 1.75 - end } 1.76 -end }
2.1 --- a/app/main/issue/_head2.lua Sun Jan 31 22:12:27 2021 +0100 2.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 2.3 @@ -1,96 +0,0 @@ 2.4 -local issue = param.get("issue", "table") 2.5 -local for_history = param.get("for_history", atom.boolean) 2.6 - 2.7 -ui.sectionHead( "issueInfo", function () 2.8 - ui.container { attr = { class = "left" }, content = function() 2.9 - ui.heading { level = 1, content = issue.name } 2.10 - end } 2.11 - if app.session.member then 2.12 - ui.container { attr = { class = "right" }, content = function () 2.13 - if issue.fully_frozen then 2.14 - if issue.member_info.direct_voted then 2.15 - ui.image { attr = { class = "icon48 right" }, static = "icons/48/voted_ok.png" } 2.16 - ui.tag { content = _"You have voted" } 2.17 - slot.put(" ") 2.18 - if not issue.closed then 2.19 - slot.put("<br />") 2.20 - ui.link { 2.21 - module = "vote", view = "list", 2.22 - params = { issue_id = issue.id }, 2.23 - text = _"change vote" 2.24 - } 2.25 - else 2.26 - ui.link { 2.27 - module = "vote", view = "list", 2.28 - params = { issue_id = issue.id }, 2.29 - text = _"show vote" 2.30 - } 2.31 - end 2.32 - slot.put(" ") 2.33 - elseif active_trustee_id then 2.34 - ui.tag { content = _"You have voted via delegation" } 2.35 - ui.link { 2.36 - content = _"Show voting ballot", 2.37 - module = "vote", view = "list", params = { 2.38 - issue_id = issue.id, member_id = active_trustee_id 2.39 - } 2.40 - } 2.41 - elseif not issue.closed then 2.42 - ui.link { 2.43 - attr = { class = "btn btn-default" }, 2.44 - module = "vote", view = "list", 2.45 - params = { issue_id = issue.id }, 2.46 - text = _"vote now" 2.47 - } 2.48 - end 2.49 - elseif not issue.closed then 2.50 - if issue.member_info.own_participation then 2.51 - ui.image { attr = { class = "icon48 right" }, static = "icons/48/eye.png" } 2.52 - ui.tag{ content = _"You are interested in this issue" } 2.53 - slot.put("<br />") 2.54 - ui.link { 2.55 - module = "interest", action = "update", 2.56 - params = { issue_id = issue.id, delete = true }, 2.57 - routing = { default = { 2.58 - mode = "redirect", module = "issue", view = "show", id = issue.id 2.59 - } }, 2.60 - text = _"remove my interest" 2.61 - } 2.62 - else 2.63 - ui.link { 2.64 - attr = { class = "btn btn-default" }, 2.65 - module = "interest", action = "update", 2.66 - params = { issue_id = issue.id }, 2.67 - routing = { default = { 2.68 - mode = "redirect", module = "issue", view = "show", id = issue.id 2.69 - } }, 2.70 - text = _"add my interest" 2.71 - } 2.72 - end 2.73 - end 2.74 - end } 2.75 - end 2.76 -end) 2.77 - 2.78 -ui.container { 2.79 - attr = { class = "ui_filter", style="clear: left; margin-top: 4px;" }, 2.80 - content = function () 2.81 - ui.container { 2.82 - attr = { class = "ui_filter_head" }, 2.83 - content = function () 2.84 - 2.85 - ui.link{ 2.86 - attr = { class = not for_history and "active" or nil }, 2.87 - text = _"Initiatives", 2.88 - module = "issue", view = "show", id = issue.id 2.89 - } 2.90 - slot.put(" ") 2.91 - ui.link{ 2.92 - attr = { class = for_history and "active" or nil }, 2.93 - text = _"History", 2.94 - module = "issue", view = "history", id = issue.id 2.95 - } 2.96 - end 2.97 - } 2.98 - end 2.99 -}
3.1 --- a/app/main/issue/_list2.lua Sun Jan 31 22:12:27 2021 +0100 3.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 3.3 @@ -1,376 +0,0 @@ 3.4 -local for_member = param.get ( "for_member", "table" ) 3.5 -local for_unit = param.get ( "for_unit", "table" ) 3.6 -local for_area = param.get ( "for_area", "table" ) 3.7 -local for_issue = param.get ( "for_issue", "table" ) 3.8 -local for_initiative = param.get ( "for_initiative", "table" ) 3.9 -local for_sidebar = param.get("for_sidebar", atom.boolean) 3.10 -local no_filter = param.get ( "no_filter", atom.boolean ) 3.11 -local search = param.get ( "search" ) 3.12 - 3.13 -local limit = 25 3.14 - 3.15 -local mode = request.get_param{ name = "mode" } or "issue" 3.16 - 3.17 -if for_initiative or for_issue or for_member then 3.18 - mode = "timeline" 3.19 -end 3.20 - 3.21 -local selector 3.22 - 3.23 -if search then 3.24 - 3.25 - selector = Issue:get_search_selector(search) 3.26 - 3.27 - 3.28 -elseif mode == "timeline" then 3.29 - 3.30 - local event_max_id = request.get_param_strings()["event_max_id"] 3.31 - 3.32 - selector = Event:new_selector() 3.33 - :add_order_by("event.id DESC") 3.34 - :join("issue", nil, "issue.id = event.issue_id") 3.35 - :add_field("now() - event.occurrence", "time_ago") 3.36 - :limit(limit + 1) 3.37 - 3.38 - if event_max_id then 3.39 - selector:add_where{ "event.id < ?", event_max_id } 3.40 - end 3.41 - 3.42 - if for_member then 3.43 - selector:add_where{ "event.member_id = ?", for_member.id } 3.44 - end 3.45 - 3.46 - if for_initiative then 3.47 - selector:add_where{ "event.initiative_id = ?", for_initiative.id } 3.48 - end 3.49 - 3.50 - 3.51 -elseif mode == "issue" then 3.52 - 3.53 - selector = Issue:new_selector() 3.54 - 3.55 -end 3.56 - 3.57 -if for_unit then 3.58 - selector:join("area", nil, "area.id = issue.area_id") 3.59 - selector:add_where{ "area.unit_id = ?", for_unit.id } 3.60 -elseif for_area then 3.61 - selector:add_where{ "issue.area_id = ?", for_area.id } 3.62 -elseif for_issue then 3.63 - selector:add_where{ "issue.id = ?", for_issue.id } 3.64 -end 3.65 - 3.66 -if not search and app.session.member_id then 3.67 - selector 3.68 - :left_join("interest", "_interest", { 3.69 - "_interest.issue_id = issue.id AND _interest.member_id = ?", app.session.member.id 3.70 - } ) 3.71 - :add_field("(_interest.member_id NOTNULL)", "is_interested") 3.72 - :left_join("delegating_interest_snapshot", "_delegating_interest", { [[ 3.73 - _delegating_interest.issue_id = issue.id AND 3.74 - _delegating_interest.member_id = ? AND 3.75 - _delegating_interest.event = issue.latest_snapshot_event 3.76 - ]], app.session.member.id } ) 3.77 - :add_field("_delegating_interest.delegate_member_ids[1]", "is_interested_by_delegation_to_member_id") 3.78 - :add_field("_delegating_interest.delegate_member_ids[array_upper(_delegating_interest.delegate_member_ids, 1)]", "is_interested_via_member_id") 3.79 - :add_field("array_length(_delegating_interest.delegate_member_ids, 1)", "delegation_chain_length") 3.80 -end 3.81 - 3.82 -local function doit() 3.83 - 3.84 - local last_event_id 3.85 - 3.86 - local items = selector:exec() 3.87 - 3.88 - if #items < 1 then 3.89 - ui.section( function() 3.90 - ui.sectionRow( function() 3.91 - ui.heading{ level = 2, content = _"No results for this selection" } 3.92 - end ) 3.93 - end ) 3.94 - return 3.95 - end 3.96 - 3.97 - local row_class = "sectionRow" 3.98 - if for_sidebar then 3.99 - row_class = "sidebarRow" 3.100 - end 3.101 - 3.102 - if mode == "timeline" then 3.103 - local issues = items:load ( "issue" ) 3.104 - local initiative = items:load ( "initiative" ) 3.105 - items:load ( "suggestion" ) 3.106 - items:load ( "member" ) 3.107 - issues:load_everything_for_member_id ( app.session.member_id ) 3.108 - initiative:load_everything_for_member_id ( app.session.member_id ) 3.109 - elseif mode == "issue" then 3.110 - items:load_everything_for_member_id ( app.session.member_id ) 3.111 - end 3.112 - 3.113 - local class = "section" 3.114 - if mode == "timeline" then 3.115 - class = class .. " events" 3.116 - elseif mode == "issue" then 3.117 - class = class .. " issues" 3.118 - end 3.119 - 3.120 - ui.container{ attr = { class = class }, content = function() 3.121 - 3.122 - local last_event_date 3.123 - for i, item in ipairs(items) do 3.124 - local event 3.125 - local issue 3.126 - if mode == "timeline" then 3.127 - event = item 3.128 - issue = item.issue 3.129 - elseif mode == "issue" then 3.130 - event = {} 3.131 - issue = item 3.132 - end 3.133 - 3.134 - last_event_id = event.id 3.135 - 3.136 - local class = "event " .. row_class 3.137 - if event.suggestion_id then 3.138 - class = class .. " suggestion" 3.139 - end 3.140 - 3.141 - ui.container{ attr = { class = class }, content = function() 3.142 - local event_name 3.143 - local negative_event = false 3.144 - 3.145 - local days_ago_text 3.146 - 3.147 - if mode == "timeline" then 3.148 - event_name = event.event_name 3.149 - 3.150 - if event.event == "issue_state_changed" then 3.151 - if event.state == "discussion" then 3.152 - event_name = _"Discussion started" 3.153 - elseif event.state == "verification" then 3.154 - event_name = _"Verification started" 3.155 - elseif event.state == "voting" then 3.156 - event_name = _"Voting started" 3.157 - elseif event.state == "finished_with_winner" then 3.158 - event_name = event.state_name 3.159 - elseif event.state == "finished_without_winner" then 3.160 - event_name = event.state_name 3.161 - negative_event = true 3.162 - else 3.163 - event_name = event.state_name 3.164 - negative_event = true 3.165 - end 3.166 - elseif event.event == "initiative_revoked" then 3.167 - negative_event = true 3.168 - end 3.169 - 3.170 - if event.time_ago == 0 then 3.171 - days_ago_text = _("today at #{time}", { time = format.time(event.occurrence) }) 3.172 - elseif event.time_ago == 1 then 3.173 - days_ago_text = _("yesterday at #{time}", { time = format.time(event.occurrence) }) 3.174 - else 3.175 - days_ago_text = _("#{interval} ago", { interval = format.interval_text ( event.time_ago ) } ) 3.176 - end 3.177 - 3.178 - elseif mode == "issue" then 3.179 - event_name = issue.state_name 3.180 - if issue.state_time_left:sub(1,1) ~= "-" then 3.181 - days_ago_text = _( "#{interval} left", { 3.182 - interval = format.interval_text ( issue.state_time_left ) 3.183 - }) 3.184 - elseif issue.closed then 3.185 - days_ago_text = _( "#{interval} ago", { 3.186 - interval = format.interval_text ( issue.closed_ago ) 3.187 - }) 3.188 - else 3.189 - days_ago_text = _"phase ends soon" 3.190 - end 3.191 - if issue.closed and not issue.fully_frozen then 3.192 - negative_event = true 3.193 - end 3.194 - if issue.state == "finished_without_winner" then 3.195 - negative_event = true 3.196 - end 3.197 - if issue.state == "canceled_no_initiative_admitted" then 3.198 - negative_event = true 3.199 - end 3.200 - if issue.state == "canceled_by_admin" then 3.201 - negative_event = true 3.202 - end 3.203 - end 3.204 - 3.205 - local class= "event_info" 3.206 - 3.207 - if negative_event then 3.208 - class = class .. " negative" 3.209 - end 3.210 - 3.211 - if mode == "timeline" then 3.212 - ui.container{ attr = { class = class }, content = function () 3.213 - ui.tag { content = event_name } 3.214 - slot.put ( " " ) 3.215 - ui.tag{ attr = { class = "event_time" }, content = days_ago_text } 3.216 - end } 3.217 - end 3.218 - 3.219 - if not for_issue and not for_initiative then 3.220 - ui.container{ attr = { class = "issue_context" }, content = function() 3.221 - ui.link{ 3.222 - module = "unit", view = "show", id = issue.area.unit_id, 3.223 - attr = { class = "unit" }, text = issue.area.unit.name 3.224 - } 3.225 - slot.put ( " " ) 3.226 - ui.link{ 3.227 - module = "area", view = "show", id = issue.area_id, 3.228 - attr = { class = "area" }, text = issue.area.name 3.229 - } 3.230 - slot.put ( " " ) 3.231 - execute.view{ 3.232 - module = "delegation", view = "_info", params = { 3.233 - issue = issue, member = for_member 3.234 - } 3.235 - } 3.236 - end } 3.237 - ui.container{ attr = { class = "issue_info" }, content = function() 3.238 - ui.link{ 3.239 - attr = { class = "issue" }, 3.240 - text = _("#{policy} ##{id}", { policy = issue.policy.name, id = issue.id }), 3.241 - module = "issue", 3.242 - view = "show", 3.243 - id = issue.id 3.244 - } 3.245 - 3.246 - end } 3.247 - end 3.248 - 3.249 - if mode ~= "timeline" 3.250 - or event.state == "finished_with_winner" 3.251 - or event.state == "finished_without_winner" 3.252 - then 3.253 - local initiative = issue.initiatives[1] 3.254 - if initiative then 3.255 - util.initiative_pie(initiative) 3.256 - end 3.257 - end 3.258 - 3.259 - if mode == "issue" then 3.260 - ui.container{ attr = { class = class }, content = function () 3.261 - ui.tag { content = event_name } 3.262 - slot.put ( " " ) 3.263 - ui.tag{ attr = { class = "event_time" }, content = days_ago_text } 3.264 - end } 3.265 - elseif mode == "timeline" 3.266 - and not for_issue 3.267 - and event.event ~= "issue_state_changed" 3.268 - then 3.269 - slot.put("<br />") 3.270 - end 3.271 - 3.272 - if event.suggestion_id then 3.273 - ui.container{ attr = { class = "suggestion" }, content = function() 3.274 - ui.link{ 3.275 - text = format.string(event.suggestion.name, { 3.276 - truncate_at = 160, truncate_suffix = true 3.277 - }), 3.278 - module = "initiative", view = "show", id = event.initiative.id, 3.279 - params = { suggestion_id = event.suggestion_id }, 3.280 - anchor = "s" .. event.suggestion_id 3.281 - } 3.282 - end } 3.283 - end 3.284 - 3.285 - if not for_initiative and (not for_issue or event.initiative_id) then 3.286 - 3.287 - ui.container{ attr = { class = "initiative_list" }, content = function() 3.288 - if event.initiative_id then 3.289 - local initiative = event.initiative 3.290 - 3.291 - execute.view{ module = "initiative", view = "_list", params = { 3.292 - issue = issue, 3.293 - initiative = initiative, 3.294 - for_event = mode == "timeline" and not (event.state == issue.state) 3.295 - 3.296 - } } 3.297 - else 3.298 - local initiatives = issue.initiatives 3.299 - execute.view{ module = "initiative", view = "_list", params = { 3.300 - issue = issue, 3.301 - initiatives = initiatives, 3.302 - for_event = mode == "timeline" and not (event.state == issue.state) 3.303 - } } 3.304 - end 3.305 - end } 3.306 - end 3.307 - 3.308 - end } 3.309 - end 3.310 - 3.311 - if mode == "timeline" then 3.312 - if for_sidebar then 3.313 - ui.container { attr = { class = row_class }, content = function () 3.314 - ui.link{ 3.315 - attr = { class = "moreLink" }, 3.316 - text = _"Show full history", 3.317 - module = "initiative", view = "history", id = for_initiative.id 3.318 - } 3.319 - end } 3.320 - elseif #items > limit then 3.321 - ui.container { attr = { class = row_class }, content = function () 3.322 - local params = request.get_param_strings() 3.323 - ui.link{ 3.324 - attr = { class = "moreLink" }, 3.325 - text = _"Show older events", 3.326 - module = request.get_module(), 3.327 - view = request.get_view(), 3.328 - id = for_unit and for_unit.id or for_area and for_area.id or for_issue and for_issue.id or for_member and for_member.id, 3.329 - params = { 3.330 - mode = "timeline", 3.331 - event_max_id = last_event_id, 3.332 - tab = params["tab"], 3.333 - phase = params["phase"], 3.334 - closed = params["closed"] 3.335 - } 3.336 - } 3.337 - end } 3.338 - elseif #items < 1 then 3.339 - ui.container { attr = { class = row_class }, content = _"No more events available" } 3.340 - end 3.341 - end 3.342 - 3.343 - end } 3.344 - 3.345 -end 3.346 - 3.347 - 3.348 -local filters = {} 3.349 - 3.350 -if not for_initiative and not for_issue and not no_filter then 3.351 - 3.352 - filters = execute.chunk{ 3.353 - module = "issue", chunk = "_filters", params = { 3.354 - for_events = mode == "timeline" and true or false, 3.355 - member = app.session.member, 3.356 - for_member = for_member, 3.357 - state = for_state, 3.358 - for_unit = for_unit and true or false, 3.359 - for_area = for_area and true or false 3.360 - }} 3.361 -end 3.362 - 3.363 -filters.opened = true 3.364 -filters.selector = selector 3.365 - 3.366 -if mode == "timeline" then 3.367 - filters.content = doit 3.368 -else 3.369 - filters.content = function() 3.370 - ui.paginate{ 3.371 - selector = selector, 3.372 - per_page = 25, 3.373 - content = doit 3.374 - } 3.375 - end 3.376 -end 3.377 - 3.378 -ui.filters(filters) 3.379 -
4.1 --- a/app/main/unit/show.lua Sun Jan 31 22:12:27 2021 +0100 4.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 4.3 @@ -1,98 +0,0 @@ 4.4 -local unit_id = config.single_unit_id or param.get_id() 4.5 - 4.6 -local unit = Unit:by_id(unit_id) 4.7 - 4.8 -if not unit or unit.attr.hidden then 4.9 - execute.view { module = "index", view = "404" } 4.10 - request.set_status("404 Not Found") 4.11 - return 4.12 -end 4.13 - 4.14 -app.current_unit = unit 4.15 - 4.16 -unit:load_delegation_info_once_for_member_id(app.session.member_id) 4.17 - 4.18 -local areas_selector = Area:build_selector{ active = true, unit_id = unit_id } 4.19 -areas_selector:add_order_by("member_weight DESC") 4.20 - 4.21 -local members_selector = Member:build_selector{ 4.22 - active = true, 4.23 - voting_right_for_unit_id = unit.id 4.24 -} 4.25 - 4.26 -local delegations_selector = Delegation:new_selector() 4.27 - :join("member", "truster", "truster.id = delegation.truster_id AND truster.active") 4.28 - :join("privilege", "truster_privilege", "truster_privilege.member_id = truster.id AND truster_privilege.unit_id = delegation.unit_id AND truster_privilege.voting_right") 4.29 - :join("member", "trustee", "trustee.id = delegation.trustee_id AND truster.active") 4.30 - :join("privilege", "trustee_privilege", "trustee_privilege.member_id = trustee.id AND trustee_privilege.unit_id = delegation.unit_id AND trustee_privilege.voting_right") 4.31 - :add_where{ "delegation.unit_id = ?", unit.id } 4.32 - 4.33 -local open_issues_selector = Issue:new_selector() 4.34 - :join("area", nil, "area.id = issue.area_id") 4.35 - :add_where{ "area.unit_id = ?", unit.id } 4.36 - :add_where("issue.closed ISNULL") 4.37 - :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now()") 4.38 - 4.39 -local closed_issues_selector = Issue:new_selector() 4.40 - :join("area", nil, "area.id = issue.area_id") 4.41 - :add_where{ "area.unit_id = ?", unit.id } 4.42 - :add_where("issue.closed NOTNULL") 4.43 - :add_order_by("issue.closed DESC") 4.44 - 4.45 - ui.container{ attr = { class = "mdl-grid" }, content = function() 4.46 - ui.container{ attr = { class = "mdl-cell mdl-cell--12-col" }, content = function() 4.47 - 4.48 - ui.heading{ content = unit.name } 4.49 - 4.50 - execute.view { module = "unit", view = "_head", params = { unit = unit } } 4.51 - 4.52 - execute.view { 4.53 - module = "unit", view = "_sidebar", params = { 4.54 - unit = unit 4.55 - } 4.56 - } 4.57 - 4.58 - execute.view { 4.59 - module = "unit", view = "_sidebar_whatcanido", params = { 4.60 - unit = unit 4.61 - } 4.62 - } 4.63 - 4.64 - execute.view { 4.65 - module = "unit", view = "_sidebar_members", params = { 4.66 - unit = unit 4.67 - } 4.68 - } 4.69 - 4.70 - execute.view { 4.71 - module = "issue", 4.72 - view = "_list", 4.73 - params = { for_unit = unit, head = function () 4.74 - ui.heading { attr = { class = "left" }, level = 1, content = unit.name } 4.75 - end } 4.76 - } 4.77 - end } 4.78 - end } 4.79 - 4.80 ---[[ 4.81 -if app.session:has_access("all_pseudonymous") then 4.82 - tabs[#tabs+1] = { 4.83 - name = "eligible_voters", 4.84 - label = _"Eligible voters", 4.85 - module = "member", 4.86 - view = "_list", 4.87 - params = { members_selector = members_selector } 4.88 - } 4.89 - 4.90 - tabs[#tabs+1] = { 4.91 - name = "delegations", 4.92 - label = _"Delegations", 4.93 - module = "delegation", 4.94 - view = "_list", 4.95 - params = { delegations_selector = delegations_selector } 4.96 - } 4.97 -end 4.98 - 4.99 -ui.tabs(tabs) 4.100 - 4.101 ---]]