liquid_feedback_frontend
view app/main/issue/show.lua @ 11:77d58efe99fd
Version beta7
Important security fixes:
- Added missing HTML encoding to postal address of member
- Link to discussion URL only if it starts with http(s)://
Other bugfixes:
- Fixed wrong display of 2nd level delegating voters for an initiative
- Do not display invited initiators as initiators while voting
- Added missing translation
New features:
- Public message of the day
- Both direct and indirect supporter count is shown in tab heads
- Support shown in initiative lists
Language chooser at the login page has been added (again)
Important security fixes:
- Added missing HTML encoding to postal address of member
- Link to discussion URL only if it starts with http(s)://
Other bugfixes:
- Fixed wrong display of 2nd level delegating voters for an initiative
- Do not display invited initiators as initiators while voting
- Added missing translation
New features:
- Public message of the day
- Both direct and indirect supporter count is shown in tab heads
- Support shown in initiative lists
Language chooser at the login page has been added (again)
| author | bsw | 
|---|---|
| date | Fri Jan 22 12:00:00 2010 +0100 (2010-01-22) | 
| 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 }
