bsw/jbe@1309: local limit = 50 bsw/jbe@1309: bsw@1045: if not app.session:has_access("all_pseudonymous") then bsw@1045: return bsw@1045: end bsw@1045: bsw/jbe@1309: local unit_id = request.get_param{ name = "unit" } bsw/jbe@1309: if unit_id == "all" then bsw/jbe@1309: unit_id = nil bsw/jbe@1309: end bsw@1075: bsw/jbe@1309: local selector = Member:new_selector() bsw/jbe@1309: :add_where("active") bsw/jbe@1309: :add_order_by("last_login DESC NULLS LAST, id DESC") bsw/jbe@1309: bsw/jbe@1309: if unit_id then bsw/jbe@1309: selector:join("privilege", nil, "privilege.member_id = member.id") bsw/jbe@1309: selector:add_where{ "privilege.unit_id = ?", unit_id } bsw@1075: end bsw@1075: bsw/jbe@1309: local member_count = selector:count() bsw/jbe@1309: bsw/jbe@1309: selector:limit(limit) bsw/jbe@1309: bsw/jbe@1309: bsw/jbe@1309: ui.container{ attr = { class = "mdl-card mdl-shadow--2dp mdl-card__fullwidth" }, content = function() bsw/jbe@1309: bsw/jbe@1309: ui.container{ attr = { class = "mdl-card__title mdl-card--border" }, content = function() bsw/jbe@1309: local text bsw/jbe@1309: if unit_id then bsw/jbe@1309: text = _("Eligible members (#{count})", { count = selector:count() }) bsw/jbe@1309: else bsw/jbe@1309: text = _("Registered members (#{count})", { count = selector:count() }) bsw/jbe@1309: end bsw/jbe@1309: ui.container{ bsw/jbe@1309: attr = { class = "mdl-card__title-text" }, bsw/jbe@1309: content = text bsw@1045: } bsw/jbe@1309: end } bsw@1045: bsw/jbe@1309: ui.container{ attr = { class = "mdl-card__content" }, content = function() bsw/jbe@1309: execute.view { bsw/jbe@1309: module = 'member', view = '_list', params = { bsw/jbe@1309: members_selector = selector, bsw/jbe@1309: no_filter = true, no_paginate = true, bsw/jbe@1309: member_class = "sidebarRow sidebarRowNarrow" bsw/jbe@1309: } bsw@1045: } bsw/jbe@1309: end } bsw@1045: bsw/jbe@1309: if member_count > limit then bsw/jbe@1309: ui.container{ attr = { class = "mdl-card__actions mdl-card--border" }, content = function() bsw/jbe@1309: ui.link { bsw/jbe@1309: attr = { class = "mdl-button mdl-js-button" }, bsw/jbe@1309: text = _"Show full member list", bsw@1426: module = "member", view = "list", params = { bsw@1426: unit_id = unit_id bsw@1426: } bsw/jbe@1309: } bsw/jbe@1309: end } bsw/jbe@1309: end bsw/jbe@1309: end }