liquid_feedback_frontend
view app/main/lf2/_sidebar_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 | 4f6e6b213fb8 |
| children | 7ea52c710503 |
line source
1 local issue = param.get("issue", "table")
2 local initiative_id = param.get("initiative_id", atom.integer)
4 local alternative_initiatives = param.get("alternative_initiatives", "table")
6 local initiatives = issue.initiatives
8 local interested_members_selector = Member:new_selector()
9 :join("direct_interest_snapshot", "dis", { "dis.issue_id = ? AND dis.member_id = member.id and dis.event = (select latest_snapshot_event from issue where id = ?)", issue.id, issue.id })
10 :add_field("dis.weight", "weight")
11 :add_order_by("dis.weight DESC")
12 local interested_members = interested_members_selector:exec()
14 local interest = issue.interest
16 local trustees = Member:new_selector()
17 :add_field("delegation_chain.*")
18 :join("delegation_chain(" .. tostring(app.session.member.id) .. ", NULL, NULL, " .. tostring(issue.id or "NULL") .. ")", "delegation_chain", "member.id = delegation_chain.member_id")
19 :add_order_by("index")
20 :exec()
22 local delegating_interest = issue.delegating_interest
24 ui.box{ class = "issue", content = function()
26 ui.box_row{ class = "issue_id head", content = function() ui.box_col{ class = "head", content = function()
27 if interest then
28 local text
29 if issue.close then
30 text = _"You were interested in this issue"
31 else
32 text = _"You are interested in this issue"
33 end
34 ui.image{ attr = { title = text, alt = text}, static = "lf2/icon_star.png" }
35 slot.put(" ")
36 elseif delegating_interest then
37 local text
38 if issue.closed then
39 text = _"Someone in your delegation chain was interested"
40 else
41 text = _"Someone in your delegation chain is interested"
42 end
43 ui.image{ attr = { title = text, alt = text}, static = "lf2/icon_delegated_star.png" }
44 slot.put(" ")
45 end
46 ui.link{
47 module = "lf2", view = "issue", id = issue.id,
48 content = _("Issue ##{id}", { id = issue.id })
49 }
50 end } end }
52 if #trustees > 1 then
53 ui.box_row{ class = "delegation", content = function() ui.box_col{ content = function()
54 execute.view{ module = "lf2", view = "_avatars", params = { members = trustees, arrows = true, size = "small", issue_id = issue.id } }
55 end } end }
56 end
58 if not issue.closed then
59 ui.box_row{ class = "interest", content = function() ui.box_col{ content = function()
60 if interest then
61 ui.link{
62 module = "interest", action = "update", params = { issue_id = issue.id, delete = true },
63 routing = { default = {
64 mode = "redirect", module = "lf2", view = initiative_id and "initiative" or "issue", id = initiative_id or issue.id,
65 } },
66 content = _"Remove my interest"
67 }
68 else
69 ui.link{
70 module = "interest", action = "update", params = { issue_id = issue.id },
71 routing = { default = {
72 mode = "redirect", module = "lf2", view = initiative_id and "initiative" or "issue", id = initiative_id or issue.id,
73 } },
74 content = _"Add my interest"
75 }
76 end
77 end } end }
78 end
80 if not issue.closed then
81 ui.box_row{ class = "interest", content = function() ui.box_col{ content = function()
82 if #trustees > 1 and trustees[1].scope_out == "issue" then
83 ui.link{
84 module = "lf2", view = "delegation", params = { issue_id = issue.id, initiative_id = initiative_id },
85 content = _"Set issue delegation"
86 }
87 else
88 ui.link{
89 module = "lf2", view = "delegation", params = { issue_id = issue.id, initiative_id = initiative_id },
90 content = _"Change or remove delegation"
91 }
92 end
94 end } end }
95 end
97 ui.box_row{ class = "unit_name", content = function() ui.box_col{ content = function()
98 ui.link{
99 module = "lf2", view = "index", id = 1,
100 content = "DE / Berlin / Friedrichshain-Kreuzberg"
101 }
102 end } end }
104 ui.box_row{ class = "area_name", content = function() ui.box_col{ content = function()
105 ui.link{
106 module = "lf2", view = "area", id = issue.area_id,
107 content = issue.area.name
108 }
109 end } end }
111 ui.box_row{ class = "policy_name", content = function() ui.box_col{ content = function()
112 ui.link{
113 module = "lf2", view = "policy", id = issue.policy_id,
114 content = issue.policy.name
115 }
116 end } end }
118 ui.box_row{ class = "time_left", content = function()
119 ui.box_col{ class = "left", content = function()
120 ui.tag{ content = issue.state_name }
121 slot.put(" · ")
122 ui.tag{ content = issue.closed and _("since #{date}", { date = format.date(issue.closed.date) }) or _("#{time_left} left", { time_left = issue.state_time_left }) }
123 end }
124 end }
126 ui.box_row{ class = "subhead", content = function() ui.box_col{ class = "head", content = _"Initiatives" } end }
127 ui.box_row{ class = "initiatives last", content = function()
128 ui.box_col{ id = "resizable", class = "scrolled", content = function()
129 execute.view{ module = "lf2", view = "_issue_initiatives", params = { initiatives = alternative_initiatives, current_initiative_id = initiative_id } }
130 end }
131 end }
133 ui.script{ script = "$(function() { $( '#resizable' ).resizable(); });" }
135 end }
