bsw@1045: local initiative = param.get("initiative", "table") bsw@1045: local member = param.get("member", "table") or app.session.member bsw@1045: bsw@1045: -- TODO performance bsw@1045: local initiator bsw@1045: if member then bsw@1045: initiator = Initiator:by_pk(initiative.id, member.id) bsw@1045: end bsw@1045: bsw@1045: local initiators_members_selector = initiative:get_reference_selector("initiating_members") bsw@1045: :add_field("initiator.accepted", "accepted") bsw@1045: :add_order_by("member.name") bsw@1045: if initiator and initiator.accepted then bsw@1045: initiators_members_selector:add_where("initiator.accepted ISNULL OR initiator.accepted") bsw@1045: else bsw@1045: initiators_members_selector:add_where("initiator.accepted") bsw@1045: end bsw@1045: bsw@1045: local initiators = initiators_members_selector:exec() bsw@1045: bsw@1045: bsw@1045: ui.sectionHead( "initiativeInfo", function () bsw@1045: bsw@1045: ui.heading { bsw@1045: level = 1, bsw@1045: content = initiative.display_name bsw@1045: } bsw@1045: bsw@1045: ui.container { attr = { class = "support" }, content = function () bsw@1045: if initiative.supporter_count == nil then bsw@1045: ui.tag { bsw@1045: attr = { class = "supporterCount" }, bsw@1045: content = _"[calculating]" bsw@1045: } bsw@1045: elseif initiative.issue.closed == nil then bsw@1045: ui.tag { bsw@1045: attr = { class = "satisfiedSupporterCount" }, bsw@1045: content = _("#{count} supporter", { count = initiative.satisfied_supporter_count }) bsw@1045: } bsw@1045: if initiative.potential_supporter_count and bsw@1045: initiative.potential_supporter_count > 0 bsw@1045: then bsw@1045: slot.put ( " " ) bsw@1045: ui.tag { bsw@1045: attr = { class = "potentialSupporterCount" }, bsw@1045: content = _("(+ #{count} potential)", { count = initiative.potential_supporter_count }) bsw@1045: } bsw@1045: end bsw@1045: bsw@1045: end bsw@1045: bsw@1045: slot.put ( "
" ) bsw@1045: bsw@1045: execute.view { bsw@1045: module = "initiative", view = "_bargraph", params = { bsw@1045: initiative = initiative bsw@1045: } bsw@1045: } bsw@1045: end } bsw@1045: bsw@1045: if member then bsw@1045: ui.container { attr = { class = "mySupport right" }, content = function () bsw@1045: if initiative.issue.fully_frozen then bsw@1045: if initiative.issue.member_info.direct_voted then bsw@1045: --ui.image { attr = { class = "icon48 right" }, static = "icons/48/voted_ok.png" } bsw@1045: ui.tag { content = _"You have voted" } bsw@1045: slot.put("
") bsw@1045: if not initiative.issue.closed then bsw@1045: ui.link { bsw@1045: module = "vote", view = "list", bsw@1045: params = { issue_id = initiative.issue.id }, bsw@1045: text = _"change vote" bsw@1045: } bsw@1045: else bsw@1045: ui.link { bsw@1045: module = "vote", view = "list", bsw@1045: params = { issue_id = initiative.issue.id }, bsw@1045: text = _"show vote" bsw@1045: } bsw@1045: end bsw@1045: slot.put(" ") bsw@1045: elseif active_trustee_id then bsw@1045: ui.tag { content = _"You have voted via delegation" } bsw@1045: ui.link { bsw@1045: content = _"Show voting ballot", bsw@1045: module = "vote", view = "list", params = { bsw@1045: issue_id = initiative.issue.id, member_id = active_trustee_id bsw@1045: } bsw@1045: } bsw@1045: elseif not initiative.issue.closed then bsw@1045: ui.link { bsw@1045: attr = { class = "btn btn-default" }, bsw@1045: module = "vote", view = "list", bsw@1045: params = { issue_id = initiative.issue.id }, bsw@1045: text = _"vote now" bsw@1045: } bsw@1045: end bsw@1045: elseif initiative.member_info.supported then bsw@1045: if initiative.member_info.satisfied then bsw@1045: ui.image { attr = { class = "icon48 right" }, static = "icons/32/support_satisfied.png" } bsw@1045: else bsw@1045: ui.image { attr = { class = "icon48 right" }, static = "icons/32/support_unsatisfied.png" } bsw@1045: end bsw@1045: ui.container { content = _"You are supporter" } bsw@1045: bsw@1045: if initiative.issue.member_info.own_participation then bsw@1045: ui.link { bsw@1045: attr = { class = "btn-link" }, bsw@1045: module = "initiative", action = "remove_support", bsw@1045: routing = { default = { bsw@1045: mode = "redirect", module = "initiative", view = "show", id = initiative.id bsw@1045: } }, bsw@1045: id = initiative.id, bsw@1123: text = _"remove my support" bsw@1045: } bsw@1045: bsw@1045: else bsw@1045: bsw@1045: ui.link { bsw@1045: module = "delegation", view = "show", params = { bsw@1045: issue_id = initiative.issue_id, bsw@1045: initiative_id = initiative.id bsw@1045: }, bsw@1045: content = _"via delegation" bsw@1045: } bsw@1045: bsw@1045: end bsw@1045: bsw@1045: slot.put(" ") bsw@1045: bsw@1045: bsw@1045: else bsw@1045: ui.link { bsw@1045: attr = { class = "btn btn-default" }, bsw@1045: module = "initiative", action = "add_support", bsw@1045: routing = { default = { bsw@1045: mode = "redirect", module = "initiative", view = "show", id = initiative.id bsw@1045: } }, bsw@1045: id = initiative.id, bsw@1045: text = _"add my support" bsw@1045: } bsw@1045: bsw@1045: end bsw@1045: end } bsw@1045: bsw@1045: end bsw@1045: bsw@1045: slot.put("
") bsw@1045: bsw@1045: ui.container { bsw@1045: attr = { class = "initiators" }, bsw@1045: content = function () bsw@1045: bsw@1045: if app.session:has_access("authors_pseudonymous") then bsw@1045: for i, member in ipairs(initiators) do bsw@1045: if i > 1 then bsw@1045: slot.put(" ") bsw@1045: end bsw@1045: util.micro_avatar(member) bsw@1045: if member.accepted == nil then bsw@1045: slot.put ( " " ) bsw@1045: ui.tag { content = _"(invited)" } bsw@1045: end bsw@1045: end -- for i, member bsw@1045: bsw@1045: end bsw@1045: bsw@1045: end bsw@1045: } -- ui.container "initiators" bsw@1045: bsw@1045: ui.container { bsw@1045: attr = { class = "links" }, bsw@1045: content = function () bsw@1045: bsw@1045: local drafts_count = initiative:get_reference_selector("drafts"):count() bsw@1045: ui.link { bsw@1045: content = _("suggestions (#{count}) ↓", { bsw@1045: count = # ( initiative.suggestions ) bsw@1045: }), bsw@1045: external = "#suggestions" bsw@1045: } bsw@1045: bsw@1045: slot.put ( " | " ) bsw@1045: bsw@1045: ui.link{ bsw@1045: module = "initiative", view = "history", id = initiative.id, bsw@1045: content = _("draft history (#{count})", { count = drafts_count }) bsw@1045: } bsw@1045: bsw@1045: end bsw@1045: } -- ui.containers "links" bsw@1045: end ) bsw@1045: bsw@1045: execute.view { bsw@1045: module = "initiative", view = "_sidebar_state", bsw@1045: params = { initiative = initiative } bsw@1045: } bsw@1045: