liquid_feedback_frontend
view app/main/suggestion/show.lua @ 1204:6f2c0eb25773
merge
| author | jbe | 
|---|---|
| date | Sun Jul 12 20:49:47 2015 +0200 (2015-07-12) | 
| parents | f03fbffc1800 | 
| children | 4188405c2425 | 
 line source
     1 local suggestion = Suggestion:by_id(param.get_id())
     3 -- redirect to initiative if suggestion does not exist anymore
     4 if not suggestion then
     5   local initiative_id = param.get('initiative_id', atom.integer)
     6   if initiative_id then
     7     slot.reset_all{except={"notice", "error"}}
     8     request.redirect{
     9       module='initiative',
    10       view='show',
    11       id=initiative_id,
    12       params = { tab = "suggestions" }
    13     }
    14   else
    15     slot.put_into('error', _"Suggestion does not exist anymore")
    16   end
    17   return
    18 end
    20 local initiative = suggestion.initiative
    22 initiative:load_everything_for_member_id(app.session.member_id)
    23 initiative.issue:load_everything_for_member_id(app.session.member_id)
    26 execute.view{ module = "issue", view = "_sidebar_state", params = {
    27   initiative = initiative
    28 } }
    30 execute.view { 
    31   module = "issue", view = "_sidebar_issue", 
    32   params = {
    33     issue = initiative.issue,
    34     highlight_initiative_id = initiative.id
    35   }
    36 }
    38 execute.view {
    39   module = "issue", view = "_sidebar_whatcanido",
    40   params = { initiative = initiative }
    41 }
    43 execute.view { 
    44   module = "issue", view = "_sidebar_members", params = {
    45     issue = initiative.issue, initiative = initiative
    46   }
    47 }
    51 execute.view {
    52   module = "issue", view = "_head", params = {
    53     issue = initiative.issue
    54   }
    55 }
    58 ui.section( function()
    59   ui.sectionHead( function()
    60     ui.link{
    61       module = "initiative", view = "show", id = initiative.id,
    62       content = function ()
    63         ui.heading { 
    64           level = 1,
    65           content = initiative.display_name
    66         }
    67       end
    68     }
    69     ui.heading { level = 2, content = _("Suggestion for improvement #{id}", { id = suggestion.id }) }
    70   end )
    71   ui.sectionRow( function()
    73     ui.heading{ level = 2, content = suggestion.name }
    74     if app.session:has_access("authors_pseudonymous") and suggestion.author then 
    75       util.micro_avatar(suggestion.author)
    76     end
    77   end )
    78   ui.sectionRow( function()
    79     ui.container{
    80       attr = { class = "suggestion_content wiki" },
    81       content = function()
    82         slot.put(suggestion:get_content("html"))
    83       end
    84     }
    86   end )
    87 end )
    89 ui.section( function()
    90   ui.sectionHead( function()
    91     ui.heading { level = 2, content = _"Collective rating" }
    92   end )
    93   ui.sectionRow( function()
    95     execute.view{
    96       module = "suggestion",
    97       view = "_list_element",
    98       params = {
    99         suggestions_selector = Suggestion:new_selector():add_where{ "id = ?", suggestion.id },
   100         initiative = suggestion.initiative,
   101         show_name = false,
   102         show_filter = false
   103       }
   104     }
   105   end)
   106 end)
   108 if app.session:has_access("all_pseudonymous") then
   109   ui.section( function()
   110     ui.sectionHead( function()
   111       ui.heading { level = 2, content = _"Individual ratings" }
   112     end )
   113     ui.sectionRow( function()
   115       execute.view{
   116         module = "opinion",
   117         view = "_list",
   118         params = { 
   119           opinions_selector = Opinion:new_selector()
   120             :add_where{ "suggestion_id = ?", suggestion.id }
   121             :join("member", nil, "member.id = opinion.member_id")
   122             :add_order_by("member.id DESC")
   123         }
   124       }
   126     end)
   127   end)
   128 end
