bsw/jbe@0: slot.select("title", function() bsw@10: if app.session.member then bsw@10: execute.view{ bsw@10: module = "member_image", bsw@10: view = "_show", bsw@10: params = { bsw@10: member = app.session.member, bsw@10: image_type = "avatar" bsw@10: } bsw/jbe@4: } bsw@10: end 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@15: for i, lang in ipairs{"en", "de", "eo"} 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@19: text = _('Select language "#{langcode}"', { langcode = lang }), 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@10: if app.session.member then bsw@10: ui.link{ bsw@10: content = function() bsw@10: ui.image{ static = "icons/16/application_form.png" } bsw@10: slot.put(_"Edit my profile") bsw@10: end, bsw@10: module = "member", bsw@10: view = "edit" bsw@10: } bsw@10: bsw/jbe@6: ui.link{ bsw/jbe@6: content = function() bsw@10: ui.image{ static = "icons/16/user_gray.png" } bsw@10: slot.put(_"Upload images") bsw/jbe@6: end, bsw@10: module = "member", bsw@10: view = "edit_images" bsw@10: } bsw@10: bsw@10: execute.view{ bsw@10: module = "delegation", bsw@10: view = "_show_box" bsw/jbe@6: } bsw@10: bsw@10: ui.link{ bsw@10: content = function() bsw@10: ui.image{ static = "icons/16/wrench.png" } bsw@10: slot.put(_"Settings") bsw@10: end, bsw@10: module = "member", bsw@10: view = "settings" bsw@10: } bsw@10: bsw@10: if config.download_dir then bsw@10: ui.link{ bsw@10: content = function() bsw@10: ui.image{ static = "icons/16/database_save.png" } bsw@10: slot.put(_"Download") bsw@10: end, bsw@10: module = "index", bsw@10: view = "download" bsw@10: } bsw@10: end bsw@10: 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: local areas = {} bsw@10: if app.session.member then bsw@10: local selector = Area:new_selector() bsw@10: :reset_fields() bsw@10: :add_field("area.id", nil, { "grouped" }) bsw@10: :add_field("area.name", nil, { "grouped" }) bsw@10: :add_field("membership.member_id NOTNULL", "is_member", { "grouped" }) bsw@10: :add_field("count(issue.id)", "issues_to_vote_count") bsw@10: :add_field("count(interest.member_id)", "interested_issues_to_vote_count") bsw@10: :join("issue", nil, "issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL") bsw@10: :left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) bsw@10: :add_where{ "direct_voter.member_id ISNULL" } bsw@10: :left_join("interest", nil, { "interest.issue_id = issue.id AND interest.member_id = ?", app.session.member.id }) bsw@10: :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ? ", app.session.member.id }) bsw@10: bsw@10: for i, area in ipairs(selector:exec()) do bsw@10: if area.is_member or area.interested_issues_to_vote_count > 0 then bsw@10: areas[#areas+1] = area bsw@10: end 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@10: local initiatives_selector = Initiative:new_selector() bsw@10: :join("initiator", nil, { "initiator.initiative_id = initiative.id AND initiator.member_id = ? AND initiator.accepted ISNULL", app.session.member.id }) bsw@10: bsw@10: if initiatives_selector:count() > 0 then bsw@10: ui.container{ bsw@10: attr = { style = "font-weight: bold;" }, bsw@10: content = _"Initiatives that invited you to become initiator:" bsw@10: } bsw/jbe@0: bsw@10: execute.view{ bsw@10: module = "initiative", bsw@10: view = "_list", bsw@10: params = { initiatives_selector = initiatives_selector } bsw@10: } bsw@10: end bsw@10: bsw@10: bsw@10: if app.session.member then bsw@10: execute.view{ bsw@10: module = "member", bsw@10: view = "_show", bsw@10: params = { member = app.session.member } bsw@10: } bsw@10: end