| 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 |