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 +

Impressum / About Us