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