local initiative = param.get("initiative", "table") local member = param.get("member", "table") or app.session.member -- TODO performance local initiator if member then initiator = Initiator:by_pk(initiative.id, member.id) end local initiators_members_selector = initiative:get_reference_selector("initiating_members") :add_field("initiator.accepted", "accepted") :add_order_by("member.name") if initiator and initiator.accepted then initiators_members_selector:add_where("initiator.accepted ISNULL OR initiator.accepted") else initiators_members_selector:add_where("initiator.accepted") end local initiators = initiators_members_selector:exec() ui.container{ attr = { class = "mdl-card__title mdl-card--has-fab mdl-card--border" }, content = function () ui.heading { attr = { class = "mdl-card__title-text" }, level = 2, content = function() ui.tag{ content = initiative.display_name } end } if app.session.member and app.session.member:has_voting_right_for_unit_id(initiative.issue.area.unit_id) then if not initiative.issue.closed and not initiative.member_info.supported then if not initiative.issue.fully_frozen then ui.link { attr = { class = "mdl-button mdl-js-button mdl-button--fab mdl-button--colored" , style = "position: absolute; right: 20px; bottom: -27px;" }, module = "initiative", action = "add_support", routing = { default = { mode = "redirect", module = "initiative", view = "show", id = initiative.id } }, id = initiative.id, content = function() ui.tag{ tag = "i", attr = { class = "material-icons" }, content = "thumb_up" } end } end end if initiative.issue.fully_frozen and not initiative.issue.closed and not initiative.issue.member_info.direct_voted then ui.link { attr = { class = "mdl-button mdl-js-button mdl-button--fab mdl-button--colored" , style = "position: absolute; right: 20px; bottom: -27px;" }, module = "vote", view = "list", params = { issue_id = initiative.issue_id }, content = function() ui.tag{ tag = "i", attr = { class = "material-icons" }, content = config.voting_icon or "mail_outline" } end } end end end } ui.container{ attr = { class = "mdl-card__content mdl-card--border" }, content = function () if not config.voting_only and app.session:has_access("authors_pseudonymous") then ui.tag{ content = _"by" } slot.put(" ") for i, member in ipairs(initiators) do if i > 1 then slot.put(" ") end ui.link{ module = "member", view = "show", id = member.id, content = member.name } end -- for i, member end if member then ui.container { attr = { class = "mySupport float-right right" }, content = function () if initiative.issue.fully_frozen then slot.put("
") if initiative.issue.member_info.direct_voted then ui.tag { content = _"You have voted" } slot.put("
") if not initiative.issue.closed then ui.link { module = "vote", view = "list", params = { issue_id = initiative.issue.id }, text = _"change vote" } else ui.link { module = "vote", view = "list", params = { issue_id = initiative.issue.id }, text = _"show vote" } end slot.put(" ") elseif active_trustee_id then ui.tag { content = _"You have voted via delegation" } ui.link { content = _"Show voting ballot", module = "vote", view = "list", params = { issue_id = initiative.issue.id, member_id = active_trustee_id } } elseif not initiative.issue.closed then ui.link { attr = { class = "btn btn-default" }, module = "vote", view = "list", params = { issue_id = initiative.issue.id }, text = _"vote now" } end elseif initiative.member_info.supported then ui.container{ content = function() ui.tag{ content = _"You are supporter" } slot.put(" ") if initiative.member_info.satisfied then ui.tag{ tag = "i", attr = { class = "material-icons" }, content = "thumb_up" } else ui.tag{ tag = "i", attr = { class = "material-icons" }, content = "thumb_up" } end end } if initiative.issue.member_info.own_participation then ui.link { attr = { class = "btn-link" }, module = "initiative", action = "remove_support", routing = { default = { mode = "redirect", module = "initiative", view = "show", id = initiative.id } }, id = initiative.id, text = _"remove my support" } else ui.link { module = "delegation", view = "show", params = { issue_id = initiative.issue_id, initiative_id = initiative.id }, content = _"via delegation" } end slot.put(" ") end end } end if config.initiative_abstract then local abstract = string.match(initiative.current_draft.content, "(.+)") if abstract then ui.container{ attr = { class = "abstract", style = "padding-right: 140px;" }, content = function() slot.put(abstract) end } end end ui.container { attr = { class = "support" }, content = function () if not config.voting_only then execute.view { module = "initiative", view = "_bargraph", params = { initiative = initiative } } slot.put(" ") ui.supporter_count(initiative) end end } end } execute.view { module = "initiative", view = "_sidebar_state", params = { initiative = initiative } }