liquid_feedback_frontend

annotate app/main/lf2/_issue.lua @ 217:73dbc9e2bfd4

Cummulative patch for enhancements at next generation frontend
author bsw
date Sat Mar 12 19:22:50 2011 +0100 (2011-03-12)
parents
children 7ea52c710503
rev   line source
bsw@217 1 local issue = param.get("issue", "table")
bsw@217 2 local for_list = param.get("for_list", atom.boolean)
bsw@217 3
bsw@217 4 local initiatives = issue.initiatives
bsw@217 5
bsw@217 6 local interested_members = issue.interested_members
bsw@217 7
bsw@217 8 -- prepare interest of current user
bsw@217 9 local interest = issue.interest
bsw@217 10
bsw@217 11 -- prepare trustees
bsw@217 12 local trustees = Member:new_selector()
bsw@217 13 :add_field("delegation_chain.*")
bsw@217 14 :join({ "delegation_chain(?, null, null, " .. tostring(issue.id or "NULL") .. ")", app.session.member.id }, "delegation_chain", "member.id = delegation_chain.member_id")
bsw@217 15 :add_order_by("index")
bsw@217 16 :exec()
bsw@217 17
bsw@217 18 local global_delegation
bsw@217 19 local area_delegation
bsw@217 20 local issue_delegation
bsw@217 21
bsw@217 22 for i, delegation in ipairs(issue.outgoing_delegations) do
bsw@217 23 if delegation.scope == "global" then global_delegation = delegation
bsw@217 24 elseif delegation.scope == "area" then area_delegation = delegation
bsw@217 25 elseif delegation.scope == "issue" then issue_delegation = delegation
bsw@217 26 end
bsw@217 27 end
bsw@217 28
bsw@217 29 local delegation = issue_delegation or area_delegation or global_delegation
bsw@217 30
bsw@217 31 local delegating_interest = issue.delegating_interest
bsw@217 32 --[[
bsw@217 33 local current_delegating_interest = false
bsw@217 34
bsw@217 35 for i, trustee in ipairs(trustees) do
bsw@217 36 if i > 1 and trustee.participation then
bsw@217 37 delegating_interest = true
bsw@217 38 end
bsw@217 39 end
bsw@217 40 --]]
bsw@217 41 local row_count = #initiatives + 3
bsw@217 42 if #trustees > 1 then
bsw@217 43 row_count = row_count + 1
bsw@217 44 end
bsw@217 45
bsw@217 46 ui.box{ class = "issue", content = function()
bsw@217 47 ui.box_row{ class = "head", content = function()
bsw@217 48
bsw@217 49 ui.box_col{ class = "issue_id left head", content = function()
bsw@217 50 if interest then
bsw@217 51 local text
bsw@217 52 if issue.close then
bsw@217 53 text = _"You were interested in this issue"
bsw@217 54 else
bsw@217 55 text = _"You are interested in this issue"
bsw@217 56 end
bsw@217 57 ui.image{ attr = { title = text, alt = text}, static = "lf2/icon_star.png" }
bsw@217 58 elseif delegating_interest then
bsw@217 59 local text
bsw@217 60 if issue.closed then
bsw@217 61 text = _"Someone in your delegation chain was interested"
bsw@217 62 else
bsw@217 63 text = _"Someone in your delegation chain is interested"
bsw@217 64 end
bsw@217 65 ui.image{ attr = { title = text, alt = text}, static = "lf2/icon_delegated_star.png" }
bsw@217 66 end
bsw@217 67 slot.put(" ")
bsw@217 68 ui.link{
bsw@217 69 module = "lf2", view = "issue", id = issue.id,
bsw@217 70 content = _("Issue ##{id}", { id = issue.id })
bsw@217 71 }
bsw@217 72 end }
bsw@217 73
bsw@217 74 end }
bsw@217 75
bsw@217 76 if #trustees > 1 then
bsw@217 77 ui.box_row{ class = "head2", content = function()
bsw@217 78 ui.box_col{ class = "head left", content = function()
bsw@217 79 execute.view{ module = "lf2", view = "_avatars", params = { members = trustees, arrows = true, size = "small", issue_id = issue.id } }
bsw@217 80 end }
bsw@217 81 end }
bsw@217 82 end
bsw@217 83
bsw@217 84 if not issue.closed and not issue.fully_frozen then
bsw@217 85 ui.box_row{ content = function()
bsw@217 86 ui.box_col{ class = "head", content = function()
bsw@217 87 if interest then
bsw@217 88 ui.link{
bsw@217 89 text = _"Remove interest",
bsw@217 90 module = "interest", action = "update", params = { issue_id = issue.id, delete = true },
bsw@217 91 routing = { default = { mode = "redirect", module = "lf2", view = "issue", id = issue.id } }
bsw@217 92 }
bsw@217 93 elseif not issue.closed and not issue.fully_frozen then
bsw@217 94 ui.link{
bsw@217 95 text = _"Add my interest",
bsw@217 96 module = "interest", action = "update", params = { issue_id = issue.id },
bsw@217 97 routing = { default = { mode = "redirect", module = "lf2", view = "issue", id = issue.id } }
bsw@217 98 }
bsw@217 99 end
bsw@217 100 if #trustees == 1 then
bsw@217 101 ui.link{
bsw@217 102 text = _"Set issue delegation",
bsw@217 103 module = "lf2", view = "delegation", params = { issue_id = issue.id }
bsw@217 104 }
bsw@217 105 end
bsw@217 106 slot.put(" · ")
bsw@217 107 if not issue.closed and not issue.fully_frozen then
bsw@217 108 if trustees[1].scope_out == "issue" then
bsw@217 109 text = _"Change or revoke issue delegation"
bsw@217 110 else
bsw@217 111 text = _"Set issue delegation"
bsw@217 112 end
bsw@217 113 ui.link{
bsw@217 114 text = text,
bsw@217 115 module = "lf2", view = "delegation", params = { issue_id = issue.id }
bsw@217 116 }
bsw@217 117 end
bsw@217 118 end }
bsw@217 119
bsw@217 120 end }
bsw@217 121 end
bsw@217 122
bsw@217 123 ui.box_row{ content = function()
bsw@217 124 ui.box_col{ class = "unit_name left", content = function()
bsw@217 125 ui.link{
bsw@217 126 module = "lf2", view = "index", id = issue.area.unit_id,
bsw@217 127 params = { phase = issue.phase },
bsw@217 128 text = issue.area.unit.name
bsw@217 129 }
bsw@217 130 end }
bsw@217 131 ui.box_col{ class = "policy_name right", content = function()
bsw@217 132 ui.link{
bsw@217 133 module = "lf2", view = "policy", id = issue.policy_id,
bsw@217 134 content = issue.policy.name
bsw@217 135 }
bsw@217 136 end }
bsw@217 137 end }
bsw@217 138
bsw@217 139 ui.box_row{ content = function()
bsw@217 140 ui.box_col{ class = "area_name left", content = function()
bsw@217 141 ui.link{
bsw@217 142 module = "lf2", view = "area", id = issue.area_id,
bsw@217 143 params = { phase = issue.phase },
bsw@217 144 text = issue.area.name
bsw@217 145 }
bsw@217 146 end }
bsw@217 147 ui.box_col{ class = "state_time_left right", content = function()
bsw@217 148 ui.tag{ content = issue.state_name }
bsw@217 149 slot.put(" · ")
bsw@217 150 ui.tag{ content = issue.closed and _("since #{date}", { date = format.date(issue.closed.date) }) or _("#{time_left} left", { time_left = issue.state_time_left }) }
bsw@217 151 end }
bsw@217 152 end }
bsw@217 153
bsw@217 154
bsw@217 155 ui.box_row{ class = "subhead", content = function()
bsw@217 156 ui.box_col{ class = "head", content = _"Initiatives" }
bsw@217 157 end }
bsw@217 158
bsw@217 159 for i, initiative in ipairs(issue.initiatives) do
bsw@217 160 ui.box_row{ class = "initiative", content = function() ui.box_col { content = function()
bsw@217 161 execute.view{ module = "lf2", view = "_initiative", params = { initiative = initiative } }
bsw@217 162 end } end }
bsw@217 163 end
bsw@217 164 if not for_list then
bsw@217 165 -- TODO bugfix for not working reference loader
bsw@217 166 interested_members = issue:get_reference_selector("interested_members_snapshot"):exec()
bsw@217 167
bsw@217 168 ui.box_row{ class = "subhead", content = function()
bsw@217 169 ui.box_col{ class = "head left", content = _"Members, interested in this issue" }
bsw@217 170 ui.box_col{ class = "right", content = _("#{count} members", { count = #interested_members }) }
bsw@217 171 end }
bsw@217 172 ui.box_row{ class = "interested", content = function()
bsw@217 173 ui.box_col{ class = "", content = function()
bsw@217 174 execute.view{ module = "lf2", view = "_avatars", params = { members = interested_members, issue_id = issue.id } }
bsw@217 175 end }
bsw@217 176 end }
bsw@217 177 end
bsw@217 178 end }

Impressum / About Us