| rev | 
   line source | 
| 
bsw/jbe@0
 | 
     1 slot.select("title", function()
 | 
| 
bsw@10
 | 
     2   if app.session.member then
 | 
| 
bsw@10
 | 
     3     execute.view{
 | 
| 
bsw@10
 | 
     4       module = "member_image",
 | 
| 
bsw@10
 | 
     5       view = "_show",
 | 
| 
bsw@10
 | 
     6       params = {
 | 
| 
bsw@10
 | 
     7         member = app.session.member,
 | 
| 
bsw@10
 | 
     8         image_type = "avatar"
 | 
| 
bsw@10
 | 
     9       }
 | 
| 
bsw/jbe@4
 | 
    10     }
 | 
| 
bsw@10
 | 
    11   end
 | 
| 
bsw/jbe@0
 | 
    12 end)
 | 
| 
bsw/jbe@0
 | 
    13 
 | 
| 
bsw/jbe@0
 | 
    14 slot.select("title", function()
 | 
| 
bsw/jbe@0
 | 
    15   ui.container{
 | 
| 
bsw/jbe@0
 | 
    16     attr = { class = "lang_chooser" },
 | 
| 
bsw/jbe@0
 | 
    17     content = function()
 | 
| 
bsw@15
 | 
    18       for i, lang in ipairs{"en", "de", "eo"} do
 | 
| 
bsw/jbe@0
 | 
    19         ui.link{
 | 
| 
bsw/jbe@0
 | 
    20           content = function()
 | 
| 
bsw/jbe@0
 | 
    21             ui.image{
 | 
| 
bsw/jbe@0
 | 
    22               static = "lang/" .. lang .. ".png",
 | 
| 
bsw/jbe@0
 | 
    23               attr = { style = "margin-left: 0.5em;", alt = lang }
 | 
| 
bsw/jbe@0
 | 
    24             }
 | 
| 
bsw/jbe@0
 | 
    25           end,
 | 
| 
bsw/jbe@0
 | 
    26           module = "index",
 | 
| 
bsw/jbe@0
 | 
    27           action = "set_lang",
 | 
| 
bsw/jbe@0
 | 
    28           params = { lang = lang },
 | 
| 
bsw/jbe@0
 | 
    29           routing = {
 | 
| 
bsw/jbe@0
 | 
    30             default = {
 | 
| 
bsw/jbe@0
 | 
    31               mode = "redirect",
 | 
| 
bsw/jbe@0
 | 
    32               module = request.get_module(),
 | 
| 
bsw/jbe@0
 | 
    33               view = request.get_view(),
 | 
| 
bsw/jbe@0
 | 
    34               id = param.get_id_cgi(),
 | 
| 
bsw/jbe@0
 | 
    35               params = param.get_all_cgi()
 | 
| 
bsw/jbe@0
 | 
    36             }
 | 
| 
bsw/jbe@0
 | 
    37           }
 | 
| 
bsw/jbe@0
 | 
    38         }
 | 
| 
bsw/jbe@0
 | 
    39       end
 | 
| 
bsw/jbe@0
 | 
    40     end
 | 
| 
bsw/jbe@0
 | 
    41   }
 | 
| 
bsw/jbe@0
 | 
    42 end)
 | 
| 
bsw/jbe@0
 | 
    43 
 | 
| 
bsw/jbe@0
 | 
    44 slot.put_into("title", encode.html(config.app_title))
 | 
| 
bsw/jbe@0
 | 
    45 
 | 
| 
bsw/jbe@0
 | 
    46 slot.select("actions", function()
 | 
| 
bsw/jbe@4
 | 
    47 
 | 
| 
bsw@10
 | 
    48   if app.session.member then
 | 
| 
bsw@10
 | 
    49     ui.link{
 | 
| 
bsw@10
 | 
    50       content = function()
 | 
| 
bsw@10
 | 
    51           ui.image{ static = "icons/16/application_form.png" }
 | 
| 
bsw@10
 | 
    52           slot.put(_"Edit my profile")
 | 
| 
bsw@10
 | 
    53       end,
 | 
| 
bsw@10
 | 
    54       module = "member",
 | 
| 
bsw@10
 | 
    55       view = "edit"
 | 
| 
bsw@10
 | 
    56     }
 | 
| 
bsw@10
 | 
    57   
 | 
| 
bsw/jbe@6
 | 
    58     ui.link{
 | 
| 
bsw/jbe@6
 | 
    59       content = function()
 | 
| 
bsw@10
 | 
    60           ui.image{ static = "icons/16/user_gray.png" }
 | 
| 
bsw@10
 | 
    61           slot.put(_"Upload images")
 | 
| 
bsw/jbe@6
 | 
    62       end,
 | 
| 
bsw@10
 | 
    63       module = "member",
 | 
| 
bsw@10
 | 
    64       view = "edit_images"
 | 
| 
bsw@10
 | 
    65     }
 | 
| 
bsw@10
 | 
    66   
 | 
| 
bsw@10
 | 
    67     execute.view{
 | 
| 
bsw@10
 | 
    68       module = "delegation",
 | 
| 
bsw@10
 | 
    69       view = "_show_box"
 | 
| 
bsw/jbe@6
 | 
    70     }
 | 
| 
bsw@10
 | 
    71   
 | 
| 
bsw@10
 | 
    72     ui.link{
 | 
| 
bsw@10
 | 
    73       content = function()
 | 
| 
bsw@10
 | 
    74           ui.image{ static = "icons/16/wrench.png" }
 | 
| 
bsw@10
 | 
    75           slot.put(_"Settings")
 | 
| 
bsw@10
 | 
    76       end,
 | 
| 
bsw@10
 | 
    77       module = "member",
 | 
| 
bsw@10
 | 
    78       view = "settings"
 | 
| 
bsw@10
 | 
    79     }
 | 
| 
bsw@10
 | 
    80   
 | 
| 
bsw@10
 | 
    81     if config.download_dir then
 | 
| 
bsw@10
 | 
    82       ui.link{
 | 
| 
bsw@10
 | 
    83         content = function()
 | 
| 
bsw@10
 | 
    84             ui.image{ static = "icons/16/database_save.png" }
 | 
| 
bsw@10
 | 
    85             slot.put(_"Download")
 | 
| 
bsw@10
 | 
    86         end,
 | 
| 
bsw@10
 | 
    87         module = "index",
 | 
| 
bsw@10
 | 
    88         view = "download"
 | 
| 
bsw@10
 | 
    89       }
 | 
| 
bsw@10
 | 
    90     end 
 | 
| 
bsw@10
 | 
    91   end
 | 
| 
bsw/jbe@0
 | 
    92 end)
 | 
| 
bsw/jbe@0
 | 
    93 
 | 
| 
bsw/jbe@4
 | 
    94 local lang = locale.get("lang")
 | 
| 
bsw/jbe@4
 | 
    95 local basepath = request.get_app_basepath() 
 | 
| 
bsw/jbe@4
 | 
    96 local file_name = basepath .. "/locale/motd/" .. lang .. ".txt"
 | 
| 
bsw/jbe@4
 | 
    97 local file = io.open(file_name)
 | 
| 
bsw/jbe@4
 | 
    98 if file ~= nil then
 | 
| 
bsw/jbe@4
 | 
    99   local help_text = file:read("*a")
 | 
| 
bsw/jbe@4
 | 
   100   if #help_text > 0 then
 | 
| 
bsw/jbe@4
 | 
   101     ui.container{
 | 
| 
bsw/jbe@4
 | 
   102       attr = { class = "motd wiki" },
 | 
| 
bsw/jbe@4
 | 
   103       content = function()
 | 
| 
bsw/jbe@4
 | 
   104         slot.put(format.wiki_text(help_text))
 | 
| 
bsw/jbe@4
 | 
   105       end
 | 
| 
bsw/jbe@4
 | 
   106     }
 | 
| 
bsw/jbe@4
 | 
   107   end
 | 
| 
bsw/jbe@4
 | 
   108 end
 | 
| 
bsw/jbe@4
 | 
   109 
 | 
| 
bsw/jbe@4
 | 
   110 
 | 
| 
bsw/jbe@4
 | 
   111 util.help("index.index", _"Home")
 | 
| 
bsw/jbe@4
 | 
   112 
 | 
| 
bsw/jbe@5
 | 
   113 local areas = {}
 | 
| 
bsw@10
 | 
   114 if app.session.member then
 | 
| 
bsw@10
 | 
   115   local selector = Area:new_selector()
 | 
| 
bsw@10
 | 
   116     :reset_fields()
 | 
| 
bsw@10
 | 
   117     :add_field("area.id", nil, { "grouped" })
 | 
| 
bsw@10
 | 
   118     :add_field("area.name", nil, { "grouped" })
 | 
| 
bsw@10
 | 
   119     :add_field("membership.member_id NOTNULL", "is_member", { "grouped" })
 | 
| 
bsw@10
 | 
   120     :add_field("count(issue.id)", "issues_to_vote_count")
 | 
| 
bsw@10
 | 
   121     :add_field("count(interest.member_id)", "interested_issues_to_vote_count")
 | 
| 
bsw@10
 | 
   122     :join("issue", nil, "issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL")
 | 
| 
bsw@10
 | 
   123     :left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id })
 | 
| 
bsw@10
 | 
   124     :add_where{ "direct_voter.member_id ISNULL" }
 | 
| 
bsw@10
 | 
   125     :left_join("interest", nil, { "interest.issue_id = issue.id AND interest.member_id = ?", app.session.member.id })
 | 
| 
bsw@10
 | 
   126     :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ? ", app.session.member.id })
 | 
| 
bsw@10
 | 
   127   
 | 
| 
bsw@10
 | 
   128   for i, area in ipairs(selector:exec()) do
 | 
| 
bsw@10
 | 
   129     if area.is_member or area.interested_issues_to_vote_count > 0 then
 | 
| 
bsw@10
 | 
   130       areas[#areas+1] = area
 | 
| 
bsw@10
 | 
   131     end
 | 
| 
bsw/jbe@5
 | 
   132   end
 | 
| 
bsw/jbe@5
 | 
   133 end
 | 
| 
bsw/jbe@5
 | 
   134 
 | 
| 
bsw/jbe@5
 | 
   135 if #areas > 0 then
 | 
| 
bsw/jbe@5
 | 
   136   ui.container{
 | 
| 
bsw/jbe@5
 | 
   137     attr = { style = "font-weight: bold;" },
 | 
| 
bsw/jbe@5
 | 
   138     content = _"Current votings in areas you are member of and issues you are interested in:"
 | 
| 
bsw/jbe@5
 | 
   139   }
 | 
| 
bsw/jbe@5
 | 
   140   
 | 
| 
bsw/jbe@5
 | 
   141   ui.list{
 | 
| 
bsw/jbe@5
 | 
   142     records = areas,
 | 
| 
bsw/jbe@5
 | 
   143     columns = {
 | 
| 
bsw/jbe@5
 | 
   144       {
 | 
| 
bsw/jbe@5
 | 
   145         name = "name"
 | 
| 
bsw/jbe@5
 | 
   146       },
 | 
| 
bsw/jbe@5
 | 
   147       {
 | 
| 
bsw/jbe@5
 | 
   148         content = function(record)
 | 
| 
bsw/jbe@5
 | 
   149           if record.is_member and record.issues_to_vote_count > 0 then
 | 
| 
bsw/jbe@5
 | 
   150             ui.link{
 | 
| 
bsw/jbe@5
 | 
   151               content = function()
 | 
| 
bsw/jbe@5
 | 
   152                 if record.issues_to_vote_count > 1 then
 | 
| 
bsw/jbe@5
 | 
   153                   slot.put(_("#{issues_to_vote_count} issue(s)", { issues_to_vote_count = record.issues_to_vote_count }))
 | 
| 
bsw/jbe@5
 | 
   154                 else
 | 
| 
bsw/jbe@5
 | 
   155                   slot.put(_("One issue"))
 | 
| 
bsw/jbe@5
 | 
   156                 end
 | 
| 
bsw/jbe@5
 | 
   157               end,
 | 
| 
bsw/jbe@5
 | 
   158               module = "area",
 | 
| 
bsw/jbe@5
 | 
   159               view = "show",
 | 
| 
bsw/jbe@5
 | 
   160               id = record.id,
 | 
| 
bsw/jbe@5
 | 
   161               params = { 
 | 
| 
bsw/jbe@5
 | 
   162                 filter = "frozen",
 | 
| 
bsw/jbe@5
 | 
   163                 filter_voting = "not_voted"
 | 
| 
bsw/jbe@5
 | 
   164               }
 | 
| 
bsw/jbe@5
 | 
   165             }
 | 
| 
bsw/jbe@5
 | 
   166           else
 | 
| 
bsw/jbe@5
 | 
   167             slot.put(_"Not a member")
 | 
| 
bsw/jbe@5
 | 
   168           end
 | 
| 
bsw/jbe@5
 | 
   169         end
 | 
| 
bsw/jbe@5
 | 
   170       },
 | 
| 
bsw/jbe@5
 | 
   171       {
 | 
| 
bsw/jbe@5
 | 
   172         content = function(record)
 | 
| 
bsw/jbe@5
 | 
   173           if record.interested_issues_to_vote_count > 0 then
 | 
| 
bsw/jbe@5
 | 
   174             ui.link{
 | 
| 
bsw/jbe@5
 | 
   175               content = function()
 | 
| 
bsw/jbe@5
 | 
   176                 if record.interested_issues_to_vote_count > 1 then
 | 
| 
bsw/jbe@5
 | 
   177                   slot.put(_("#{interested_issues_to_vote_count} issue(s) you are interested in", { interested_issues_to_vote_count = record.interested_issues_to_vote_count }))
 | 
| 
bsw/jbe@5
 | 
   178                 else
 | 
| 
bsw/jbe@5
 | 
   179                   slot.put(_"One issue you are interested in")
 | 
| 
bsw/jbe@5
 | 
   180                 end
 | 
| 
bsw/jbe@5
 | 
   181               end,
 | 
| 
bsw/jbe@5
 | 
   182               module = "area",
 | 
| 
bsw/jbe@5
 | 
   183               view = "show",
 | 
| 
bsw/jbe@5
 | 
   184               id = record.id,
 | 
| 
bsw/jbe@5
 | 
   185               params = { 
 | 
| 
bsw/jbe@5
 | 
   186                 filter = "frozen",
 | 
| 
bsw/jbe@5
 | 
   187                 filter_interest = "my",
 | 
| 
bsw/jbe@5
 | 
   188                 filter_voting = "not_voted"
 | 
| 
bsw/jbe@5
 | 
   189               }
 | 
| 
bsw/jbe@5
 | 
   190             }
 | 
| 
bsw/jbe@5
 | 
   191           end
 | 
| 
bsw/jbe@5
 | 
   192         end
 | 
| 
bsw/jbe@5
 | 
   193       },
 | 
| 
bsw/jbe@5
 | 
   194     }
 | 
| 
bsw/jbe@5
 | 
   195   }
 | 
| 
bsw/jbe@5
 | 
   196 end
 | 
| 
bsw/jbe@5
 | 
   197 
 | 
| 
bsw@10
 | 
   198 local initiatives_selector = Initiative:new_selector()
 | 
| 
bsw@10
 | 
   199   :join("initiator", nil, { "initiator.initiative_id = initiative.id AND initiator.member_id = ? AND initiator.accepted ISNULL", app.session.member.id })
 | 
| 
bsw@10
 | 
   200 
 | 
| 
bsw@10
 | 
   201 if initiatives_selector:count() > 0 then
 | 
| 
bsw@10
 | 
   202   ui.container{
 | 
| 
bsw@10
 | 
   203     attr = { style = "font-weight: bold;" },
 | 
| 
bsw@10
 | 
   204     content = _"Initiatives that invited you to become initiator:"
 | 
| 
bsw@10
 | 
   205   }
 | 
| 
bsw/jbe@0
 | 
   206 
 | 
| 
bsw@10
 | 
   207   execute.view{
 | 
| 
bsw@10
 | 
   208     module = "initiative",
 | 
| 
bsw@10
 | 
   209     view = "_list",
 | 
| 
bsw@10
 | 
   210     params = { initiatives_selector = initiatives_selector }
 | 
| 
bsw@10
 | 
   211   }
 | 
| 
bsw@10
 | 
   212 end
 | 
| 
bsw@10
 | 
   213 
 | 
| 
bsw@10
 | 
   214 
 | 
| 
bsw@10
 | 
   215 if app.session.member then
 | 
| 
bsw@10
 | 
   216   execute.view{
 | 
| 
bsw@10
 | 
   217     module = "member",
 | 
| 
bsw@10
 | 
   218     view = "_show",
 | 
| 
bsw@10
 | 
   219     params = { member = app.session.member }
 | 
| 
bsw@10
 | 
   220   }
 | 
| 
bsw@10
 | 
   221 end
 |