liquid_feedback_frontend

view app/main/issue/show.lua @ 1234:8288027edb54

Added support for min_admission_time and max_admission_time
author bsw
date Fri Dec 04 14:19:28 2015 +0100 (2015-12-04)
parents 701a5cf6b067
children 32cc544d5a5b
line source
1 local issue = Issue:by_id ( param.get_id () )
3 if not issue then
4 execute.view { module = "index", view = "404" }
5 request.set_status("404 Not Found")
6 return
7 end
9 local initiatives = issue.initiatives
11 if app.session.member_id then
12 issue:load_everything_for_member_id ( app.session.member_id )
13 initiatives:load_everything_for_member_id ( app.session.member_id )
14 end
16 if not app.html_title.title then
17 app.html_title.title = _("Issue ##{id}", { id = issue.id })
18 end
20 execute.view {
21 module = "issue", view = "_head",
22 params = { issue = issue, member = app.session.member }
23 }
25 execute.view{ module = "issue", view = "_sidebar_state", params = {
26 issue = issue
27 } }
29 execute.view {
30 module = "issue", view = "_sidebar_whatcanido", params = {
31 issue = issue
32 }
33 }
35 execute.view {
36 module = "issue", view = "_sidebar_members", params = {
37 issue = issue
38 }
39 }
41 ui.section( function ()
43 execute.view{
44 module = "issue", view = "_head2", params = {
45 issue = issue
46 }
47 }
49 if issue.initiatives[1].rank == 1 then
50 execute.view{ module = "initiative", view = "_sidebar_state", params = {
51 initiative = issue.initiatives[1]
52 } }
53 end
55 ui.sectionRow( function ()
56 execute.view {
57 module = "initiative", view = "_list",
58 params = {
59 issue = issue,
60 initiatives = initiatives
61 }
62 }
63 end )
65 end )
67 ui.section(function()
68 ui.sectionHead( function()
69 ui.heading { level = 1, content = _"Details" }
70 end )
71 local policy = issue.policy
72 ui.form{
73 record = issue,
74 readonly = true,
75 attr = { class = "sectionRow form" },
76 content = function()
77 if issue.snapshot then
78 ui.field.timestamp{ label = _"Last counting:", value = issue.snapshot }
79 end
80 ui.field.text{ label = _"Population", name = "population" }
81 ui.field.timestamp{ label = _"Created at", name = "created" }
82 if policy.polling then
83 ui.field.text{ label = _"Admission time", value = _"Implicitly admitted" }
84 else
85 ui.field.text{ label = _"Minimum admission time", value = format.interval_text(issue.min_admission_time_text) }
86 ui.field.text{ label = _"Maximum admission time", value = format.interval_text(issue.max_admission_time_text) }
87 ui.field.text{
88 label = _"Issue quorum",
89 value = format.percentage(policy.issue_quorum_num / policy.issue_quorum_den)
90 }
91 if issue.population then
92 ui.field.text{
93 label = _"Currently required",
94 value = math.ceil(issue.population * policy.issue_quorum_num / policy.issue_quorum_den)
95 }
96 end
97 end
98 if issue.accepted then
99 ui.field.timestamp{ label = _"Accepted at", name = "accepted" }
100 end
101 ui.field.text{ label = _"Discussion time", value = format.interval_text(issue.discussion_time_text) }
102 if issue.half_frozen then
103 ui.field.timestamp{ label = _"Half frozen at", name = "half_frozen" }
104 end
105 ui.field.text{ label = _"Verification time", value = format.interval_text(issue.verification_time_text) }
106 ui.field.text{
107 label = _"Initiative quorum",
108 value = format.percentage(policy.initiative_quorum_num / policy.initiative_quorum_den)
109 }
110 if issue.population then
111 ui.field.text{
112 label = _"Currently required",
113 value = math.ceil(issue.population * (issue.policy.initiative_quorum_num / issue.policy.initiative_quorum_den)),
114 }
115 end
116 if issue.fully_frozen then
117 ui.field.timestamp{ label = _"Fully frozen at", name = "fully_frozen" }
118 end
119 ui.field.text{ label = _"Voting time", value = format.interval_text(issue.voting_time_text) }
120 if issue.closed then
121 ui.field.timestamp{ label = _"Closed", name = "closed" }
122 end
123 end
124 }
126 end )

Impressum / About Us