bsw/jbe@0: slot.select("title", function() bsw/jbe@4: execute.view{ bsw/jbe@4: module = "member_image", bsw/jbe@4: view = "_show", bsw/jbe@4: params = { bsw/jbe@4: member = app.session.member, bsw/jbe@4: image_type = "avatar" bsw/jbe@4: } bsw/jbe@0: } bsw/jbe@0: end) bsw/jbe@0: bsw/jbe@0: slot.select("title", function() bsw/jbe@0: ui.container{ bsw/jbe@0: attr = { class = "lang_chooser" }, bsw/jbe@0: content = function() bsw/jbe@0: for i, lang in ipairs{"en", "de"} do bsw/jbe@0: ui.link{ bsw/jbe@0: content = function() bsw/jbe@0: ui.image{ bsw/jbe@0: static = "lang/" .. lang .. ".png", bsw/jbe@0: attr = { style = "margin-left: 0.5em;", alt = lang } bsw/jbe@0: } bsw/jbe@0: end, bsw/jbe@0: module = "index", bsw/jbe@0: action = "set_lang", bsw/jbe@0: params = { lang = lang }, bsw/jbe@0: routing = { bsw/jbe@0: default = { bsw/jbe@0: mode = "redirect", bsw/jbe@0: module = request.get_module(), bsw/jbe@0: view = request.get_view(), bsw/jbe@0: id = param.get_id_cgi(), bsw/jbe@0: params = param.get_all_cgi() bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: end bsw/jbe@0: } bsw/jbe@0: end) bsw/jbe@0: bsw/jbe@0: slot.put_into("title", encode.html(config.app_title)) bsw/jbe@0: bsw/jbe@0: slot.select("actions", function() bsw/jbe@4: bsw/jbe@4: ui.link{ bsw/jbe@4: content = function() bsw/jbe@4: ui.image{ static = "icons/16/application_form.png" } bsw/jbe@4: slot.put(_"Edit my profile") bsw/jbe@4: end, bsw/jbe@4: module = "member", bsw/jbe@4: view = "edit" bsw/jbe@4: } bsw/jbe@0: bsw/jbe@0: ui.link{ bsw/jbe@0: content = function() bsw/jbe@0: ui.image{ static = "icons/16/user_gray.png" } bsw/jbe@4: slot.put(_"Upload images") bsw/jbe@0: end, bsw/jbe@0: module = "member", bsw/jbe@4: view = "edit_images" bsw/jbe@0: } bsw/jbe@0: bsw/jbe@4: execute.view{ bsw/jbe@4: module = "delegation", bsw/jbe@4: view = "_show_box" bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: ui.link{ bsw/jbe@0: content = function() bsw/jbe@0: ui.image{ static = "icons/16/key.png" } bsw/jbe@0: slot.put(_"Change password") bsw/jbe@0: end, bsw/jbe@0: module = "index", bsw/jbe@0: view = "change_password" bsw/jbe@0: } bsw/jbe@4: bsw/jbe@6: if config.download_dir then bsw/jbe@6: ui.link{ bsw/jbe@6: content = function() bsw/jbe@6: ui.image{ static = "icons/16/database_save.png" } bsw/jbe@6: slot.put(_"Download") bsw/jbe@6: end, bsw/jbe@6: module = "index", bsw/jbe@6: view = "download" bsw/jbe@6: } bsw/jbe@6: end bsw/jbe@0: end) bsw/jbe@0: bsw/jbe@4: local lang = locale.get("lang") bsw/jbe@4: local basepath = request.get_app_basepath() bsw/jbe@4: local file_name = basepath .. "/locale/motd/" .. lang .. ".txt" bsw/jbe@4: local file = io.open(file_name) bsw/jbe@4: if file ~= nil then bsw/jbe@4: local help_text = file:read("*a") bsw/jbe@4: if #help_text > 0 then bsw/jbe@4: ui.container{ bsw/jbe@4: attr = { class = "motd wiki" }, bsw/jbe@4: content = function() bsw/jbe@4: slot.put(format.wiki_text(help_text)) bsw/jbe@4: end bsw/jbe@4: } bsw/jbe@4: end bsw/jbe@4: end bsw/jbe@4: bsw/jbe@4: bsw/jbe@4: util.help("index.index", _"Home") bsw/jbe@4: bsw/jbe@5: bsw/jbe@5: local selector = Area:new_selector() bsw/jbe@5: :reset_fields() bsw/jbe@5: :add_field("area.id", nil, { "grouped" }) bsw/jbe@5: :add_field("area.name", nil, { "grouped" }) bsw/jbe@5: :add_field("membership.member_id NOTNULL", "is_member", { "grouped" }) bsw/jbe@5: :add_field("count(issue.id)", "issues_to_vote_count") bsw/jbe@5: :add_field("count(interest.member_id)", "interested_issues_to_vote_count") bsw/jbe@5: :join("issue", nil, "issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL") bsw/jbe@5: :left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) bsw/jbe@5: :add_where{ "direct_voter.member_id ISNULL" } bsw/jbe@5: :left_join("interest", nil, { "interest.issue_id = issue.id AND interest.member_id = ?", app.session.member.id }) bsw/jbe@5: :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ? ", app.session.member.id }) bsw/jbe@5: bsw/jbe@5: local areas = {} bsw/jbe@5: for i, area in ipairs(selector:exec()) do bsw/jbe@5: if area.is_member or area.interested_issues_to_vote_count > 0 then bsw/jbe@5: areas[#areas+1] = area bsw/jbe@5: end bsw/jbe@5: end bsw/jbe@5: bsw/jbe@5: if #areas > 0 then bsw/jbe@5: ui.container{ bsw/jbe@5: attr = { style = "font-weight: bold;" }, bsw/jbe@5: content = _"Current votings in areas you are member of and issues you are interested in:" bsw/jbe@5: } bsw/jbe@5: bsw/jbe@5: ui.list{ bsw/jbe@5: records = areas, bsw/jbe@5: columns = { bsw/jbe@5: { bsw/jbe@5: name = "name" bsw/jbe@5: }, bsw/jbe@5: { bsw/jbe@5: content = function(record) bsw/jbe@5: if record.is_member and record.issues_to_vote_count > 0 then bsw/jbe@5: ui.link{ bsw/jbe@5: content = function() bsw/jbe@5: if record.issues_to_vote_count > 1 then bsw/jbe@5: slot.put(_("#{issues_to_vote_count} issue(s)", { issues_to_vote_count = record.issues_to_vote_count })) bsw/jbe@5: else bsw/jbe@5: slot.put(_("One issue")) bsw/jbe@5: end bsw/jbe@5: end, bsw/jbe@5: module = "area", bsw/jbe@5: view = "show", bsw/jbe@5: id = record.id, bsw/jbe@5: params = { bsw/jbe@5: filter = "frozen", bsw/jbe@5: filter_voting = "not_voted" bsw/jbe@5: } bsw/jbe@5: } bsw/jbe@5: else bsw/jbe@5: slot.put(_"Not a member") bsw/jbe@5: end bsw/jbe@5: end bsw/jbe@5: }, bsw/jbe@5: { bsw/jbe@5: content = function(record) bsw/jbe@5: if record.interested_issues_to_vote_count > 0 then bsw/jbe@5: ui.link{ bsw/jbe@5: content = function() bsw/jbe@5: if record.interested_issues_to_vote_count > 1 then bsw/jbe@5: 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: else bsw/jbe@5: slot.put(_"One issue you are interested in") bsw/jbe@5: end bsw/jbe@5: end, bsw/jbe@5: module = "area", bsw/jbe@5: view = "show", bsw/jbe@5: id = record.id, bsw/jbe@5: params = { bsw/jbe@5: filter = "frozen", bsw/jbe@5: filter_interest = "my", bsw/jbe@5: filter_voting = "not_voted" bsw/jbe@5: } bsw/jbe@5: } bsw/jbe@5: end bsw/jbe@5: end bsw/jbe@5: }, bsw/jbe@5: } bsw/jbe@5: } bsw/jbe@5: end bsw/jbe@5: bsw/jbe@0: execute.view{ bsw/jbe@0: module = "member", bsw/jbe@0: view = "_show", bsw/jbe@0: params = { member = app.session.member } bsw/jbe@0: } bsw/jbe@0: