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