liquid_feedback_frontend
view app/main/issue/show.lua @ 9:0ee1e0c42d4c
Version beta5
Minor security fix: Added missing security filter for admin section. Reading of member listing including login names was possible for all users. Write access has not been possible though.
Changing of name and login is possible while a history of these changes is written and accessible by all users.
Statistics shown in area list
Trimming of user input also converts multiple whitespaces to single space character.
Minor security fix: Added missing security filter for admin section. Reading of member listing including login names was possible for all users. Write access has not been possible though.
Changing of name and login is possible while a history of these changes is written and accessible by all users.
Statistics shown in area list
Trimming of user input also converts multiple whitespaces to single space character.
author | bsw |
---|---|
date | Mon Jan 04 12:00:00 2010 +0100 (2010-01-04) |
parents | afd9f769c7ae |
children | 559c6be0e1e9 |
line source
1 local issue = Issue:by_id(param.get_id())
3 execute.view{
4 module = "issue",
5 view = "_show_head",
6 params = { issue = issue }
7 }
9 util.help("issue.show")
11 ui.tabs{
12 {
13 name = "initiatives",
14 label = _"Initiatives",
15 content = function()
16 execute.view{
17 module = "initiative",
18 view = "_list",
19 params = {
20 issue = issue,
21 initiatives_selector = issue:get_reference_selector("initiatives")
22 }
23 }
24 slot.put("<br />")
25 if not issue.fully_frozen and not issue.closed then
26 ui.link{
27 attr = { class = "action" },
28 content = function()
29 ui.image{ static = "icons/16/script_add.png" }
30 slot.put(_"Add new initiative to issue")
31 end,
32 module = "initiative",
33 view = "new",
34 params = { issue_id = issue.id }
35 }
36 end
37 end
38 },
39 --[[ {
40 name = "voting_requests",
41 label = _"Voting requests",
42 content = function()
43 execute.view{
44 module = "issue_voting_request",
45 view = "_list",
46 params = { issue = issue }
47 }
48 end
49 },
50 --]]
51 {
52 name = "interested_members",
53 label = _"Interested members",
54 content = function()
55 execute.view{
56 module = "member",
57 view = "_list",
58 params = {
59 issue = issue,
60 members_selector = issue:get_reference_selector("interested_members_snapshot")
61 :join("issue", nil, "issue.id = direct_interest_snapshot.issue_id")
62 :add_field("direct_interest_snapshot.weight")
63 :add_where("direct_interest_snapshot.event = issue.latest_snapshot_event")
64 }
65 }
66 end
67 },
68 {
69 name = "delegations",
70 label = _"Delegations",
71 content = function()
72 execute.view{
73 module = "delegation",
74 view = "_list",
75 params = { delegations_selector = issue:get_reference_selector("delegations") }
76 }
77 end
78 },
79 {
80 name = "details",
81 label = _"Details",
82 content = function()
83 local policy = issue.policy
84 ui.form{
85 record = issue,
86 readonly = true,
87 attr = { class = "vertical" },
88 content = function()
89 ui.field.text{ label = _"State", name = "state" }
90 ui.field.timestamp{ label = _"Created at", name = "created" }
91 ui.field.text{ label = _"Admission time", value = policy.admission_time }
92 ui.field.text{
93 label = _"Issue quorum",
94 value = format.percentage(policy.issue_quorum_num / policy.issue_quorum_den)
95 }
96 ui.field.timestamp{ label = _"Accepted at", name = "accepted" }
97 ui.field.text{ label = _"Discussion time", value = policy.discussion_time }
98 ui.field.vote_now{ label = _"Vote now", name = "vote_now" }
99 ui.field.vote_later{ label = _"Vote later", name = "vote_later" }
100 ui.field.timestamp{ label = _"Half frozen at", name = "half_frozen" }
101 ui.field.text{ label = _"Verification time", value = policy.verification_time }
102 ui.field.text{
103 label = _"Initiative quorum",
104 value = format.percentage(policy.initiative_quorum_num / policy.initiative_quorum_den)
105 }
106 ui.field.timestamp{ label = _"Fully frozen at", name = "fully_frozen" }
107 ui.field.text{ label = _"Voting time", value = policy.voting_time }
108 ui.field.timestamp{ label = _"Closed", name = "closed" }
109 end
110 }
111 ui.form{
112 record = issue.policy,
113 readonly = true,
114 content = function()
115 end
116 }
117 end
118 },
119 }