liquid_feedback_frontend
diff app/main/issue/show.lua @ 1045:701a5cf6b067
Imported LiquidFeedback Frontend 3.0 branch
author | bsw |
---|---|
date | Thu Jul 10 01:19:48 2014 +0200 (2014-07-10) |
parents | ea2449916c12 |
children | 8288027edb54 |
line diff
1.1 --- a/app/main/issue/show.lua Thu Jul 10 01:02:43 2014 +0200 1.2 +++ b/app/main/issue/show.lua Thu Jul 10 01:19:48 2014 +0200 1.3 @@ -1,52 +1,126 @@ 1.4 -local issue = Issue:by_id(param.get_id()) 1.5 +local issue = Issue:by_id ( param.get_id () ) 1.6 + 1.7 +if not issue then 1.8 + execute.view { module = "index", view = "404" } 1.9 + request.set_status("404 Not Found") 1.10 + return 1.11 +end 1.12 + 1.13 +local initiatives = issue.initiatives 1.14 + 1.15 if app.session.member_id then 1.16 - issue:load_everything_for_member_id(app.session.member_id) 1.17 + issue:load_everything_for_member_id ( app.session.member_id ) 1.18 + initiatives:load_everything_for_member_id ( app.session.member_id ) 1.19 end 1.20 1.21 if not app.html_title.title then 1.22 - app.html_title.title = _("Issue ##{id}", { id = issue.id }) 1.23 + app.html_title.title = _("Issue ##{id}", { id = issue.id }) 1.24 end 1.25 1.26 -slot.select("head", function() 1.27 - execute.view{ module = "area", view = "_head", params = { area = issue.area } } 1.28 -end) 1.29 - 1.30 -util.help("issue.show") 1.31 +execute.view { 1.32 + module = "issue", view = "_head", 1.33 + params = { issue = issue, member = app.session.member } 1.34 +} 1.35 1.36 -slot.select("head", function() 1.37 - execute.view{ module = "issue", view = "_show", params = { issue = issue } } 1.38 -end ) 1.39 - 1.40 -if app.session:has_access("all_pseudonymous") then 1.41 +execute.view{ module = "issue", view = "_sidebar_state", params = { 1.42 + issue = issue 1.43 +} } 1.44 1.45 - ui.container{ attr = { class = "heading" }, content = _"Interested members" } 1.46 - 1.47 - local interested_members_selector = issue:get_reference_selector("interested_members_snapshot") 1.48 - :join("issue", nil, "issue.id = direct_interest_snapshot.issue_id") 1.49 - :add_field("direct_interest_snapshot.weight") 1.50 - :add_where("direct_interest_snapshot.event = issue.latest_snapshot_event") 1.51 +execute.view { 1.52 + module = "issue", view = "_sidebar_whatcanido", params = { 1.53 + issue = issue 1.54 + } 1.55 +} 1.56 1.57 - execute.view{ 1.58 - module = "member", 1.59 - view = "_list", 1.60 - params = { 1.61 - issue = issue, 1.62 - members_selector = interested_members_selector 1.63 +execute.view { 1.64 + module = "issue", view = "_sidebar_members", params = { 1.65 + issue = issue 1.66 + } 1.67 +} 1.68 + 1.69 +ui.section( function () 1.70 + 1.71 + execute.view{ 1.72 + module = "issue", view = "_head2", params = { 1.73 + issue = issue 1.74 } 1.75 } 1.76 1.77 - ui.container{ attr = { class = "heading" }, content = _"Details" } 1.78 - 1.79 - execute.view{ 1.80 - module = "issue", 1.81 - view = "_details", 1.82 - params = { issue = issue } 1.83 - } 1.84 + if issue.initiatives[1].rank == 1 then 1.85 + execute.view{ module = "initiative", view = "_sidebar_state", params = { 1.86 + initiative = issue.initiatives[1] 1.87 + } } 1.88 + end 1.89 1.90 -end 1.91 + ui.sectionRow( function () 1.92 + execute.view { 1.93 + module = "initiative", view = "_list", 1.94 + params = { 1.95 + issue = issue, 1.96 + initiatives = initiatives 1.97 + } 1.98 + } 1.99 + end ) 1.100 + 1.101 +end ) 1.102 1.103 -if issue.snapshot then 1.104 - slot.put("<br />") 1.105 - ui.field.timestamp{ label = _"Last snapshot:", value = issue.snapshot } 1.106 -end 1.107 +ui.section(function() 1.108 + ui.sectionHead( function() 1.109 + ui.heading { level = 1, content = _"Details" } 1.110 + end ) 1.111 + local policy = issue.policy 1.112 + ui.form{ 1.113 + record = issue, 1.114 + readonly = true, 1.115 + attr = { class = "sectionRow form" }, 1.116 + content = function() 1.117 + if issue.snapshot then 1.118 + ui.field.timestamp{ label = _"Last counting:", value = issue.snapshot } 1.119 + end 1.120 + ui.field.text{ label = _"Population", name = "population" } 1.121 + ui.field.timestamp{ label = _"Created at", name = "created" } 1.122 + if policy.polling then 1.123 + ui.field.text{ label = _"Admission time", value = _"Implicitly admitted" } 1.124 + else 1.125 + ui.field.text{ label = _"Admission time", value = format.interval_text(issue.admission_time_text) } 1.126 + ui.field.text{ 1.127 + label = _"Issue quorum", 1.128 + value = format.percentage(policy.issue_quorum_num / policy.issue_quorum_den) 1.129 + } 1.130 + if issue.population then 1.131 + ui.field.text{ 1.132 + label = _"Currently required", 1.133 + value = math.ceil(issue.population * policy.issue_quorum_num / policy.issue_quorum_den) 1.134 + } 1.135 + end 1.136 + end 1.137 + if issue.accepted then 1.138 + ui.field.timestamp{ label = _"Accepted at", name = "accepted" } 1.139 + end 1.140 + ui.field.text{ label = _"Discussion time", value = format.interval_text(issue.discussion_time_text) } 1.141 + if issue.half_frozen then 1.142 + ui.field.timestamp{ label = _"Half frozen at", name = "half_frozen" } 1.143 + end 1.144 + ui.field.text{ label = _"Verification time", value = format.interval_text(issue.verification_time_text) } 1.145 + ui.field.text{ 1.146 + label = _"Initiative quorum", 1.147 + value = format.percentage(policy.initiative_quorum_num / policy.initiative_quorum_den) 1.148 + } 1.149 + if issue.population then 1.150 + ui.field.text{ 1.151 + label = _"Currently required", 1.152 + value = math.ceil(issue.population * (issue.policy.initiative_quorum_num / issue.policy.initiative_quorum_den)), 1.153 + } 1.154 + end 1.155 + if issue.fully_frozen then 1.156 + ui.field.timestamp{ label = _"Fully frozen at", name = "fully_frozen" } 1.157 + end 1.158 + ui.field.text{ label = _"Voting time", value = format.interval_text(issue.voting_time_text) } 1.159 + if issue.closed then 1.160 + ui.field.timestamp{ label = _"Closed", name = "closed" } 1.161 + end 1.162 + end 1.163 + } 1.164 1.165 +end ) 1.166 +