bsw@1045: local member = param.get("member", "table") bsw@1045: bsw@1045: local public_contacts_selector = Contact:build_selector{ bsw@1045: public = true, bsw@1045: member_id = member.id, bsw@1045: order = "name" bsw@1045: } bsw@1045: bsw@1045: local private_contacts_selector = Contact:build_selector{ bsw@1045: public = false, bsw@1045: member_id = member.id, bsw@1045: order = "name" bsw@1045: } bsw@1045: bsw/jbe@1309: ui.container{ attr = { class = "mdl-card mdl-card__fullwidth mdl-shadow--2dp" }, content = function() bsw/jbe@1309: ui.container{ attr = { class = "mdl-card__title mdl-card--border" }, content = function() bsw/jbe@1309: ui.heading { attr = { class = "mdl-card__title-text" }, level = 2, content = _"Published contacts" } bsw/jbe@1309: end } bsw@1045: bsw/jbe@1309: ui.container { attr = { class = "mdl-card__content mdl-card--border" }, content = function() bsw/jbe@1309: ui.container{ content = _"Published contacts" } bsw@1045: if public_contacts_selector:count() == 0 then bsw/jbe@1309: ui.container{ content = _"No published contacts" } bsw@1045: else bsw@1045: ui.paginate{ bsw@1045: selector = public_contacts_selector, bsw@1045: name = "contacts", bsw@1045: content = function() bsw@1045: local contacts = public_contacts_selector:exec() bsw@1045: for i, contact in ipairs(contacts) do bsw/jbe@1309: ui.container{ content = function() bsw@1045: execute.view{ module = "member_image", view = "_show", params = { bsw@1045: member_id = contact.other_member.id, class = "micro_avatar", bsw@1045: popup_text = contact.other_member.name, bsw@1045: image_type = "avatar", show_dummy = true, bsw@1045: } } bsw@1045: slot.put(" ") bsw@1045: ui.link{ bsw@1045: content = contact.other_member.name, bsw@1045: module = "member", bsw@1045: view = "show", bsw@1045: id = contact.other_member.id bsw@1045: } bsw/jbe@1309: if app.session.member_id == member.id then bsw/jbe@1309: ui.link{ bsw/jbe@1309: content = function() bsw/jbe@1309: ui.tag{ tag = "i", attr = { class = "material-icons" }, content = "get_app" } bsw/jbe@1309: end, bsw/jbe@1309: module = "contact", bsw/jbe@1309: action = "add_member", bsw/jbe@1309: id = contact.other_member_id, bsw/jbe@1309: params = { public = false }, bsw/jbe@1309: routing = { bsw/jbe@1309: default = { bsw/jbe@1309: mode = "redirect", bsw/jbe@1309: module = request.get_module(), bsw/jbe@1309: view = request.get_view(), bsw/jbe@1309: id = request.get_id_string(), bsw/jbe@1309: params = request.get_param_strings() bsw/jbe@1309: } bsw/jbe@1309: } bsw/jbe@1309: } bsw/jbe@1309: ui.link{ bsw/jbe@1309: content = function() bsw/jbe@1309: ui.tag{ tag = "i", attr = { class = "material-icons" }, content = "delete" } bsw/jbe@1309: end, bsw/jbe@1309: module = "contact", bsw/jbe@1309: action = "remove_member", bsw/jbe@1309: id = contact.other_member_id, bsw/jbe@1309: routing = { bsw/jbe@1309: default = { bsw/jbe@1309: mode = "redirect", bsw/jbe@1309: module = request.get_module(), bsw/jbe@1309: view = request.get_view(), bsw/jbe@1309: id = request.get_id_string(), bsw/jbe@1309: params = request.get_param_strings() bsw/jbe@1309: } bsw/jbe@1309: } bsw/jbe@1309: } bsw/jbe@1309: end bsw/jbe@1309: end } bsw@1045: end bsw@1045: end bsw@1045: } bsw@1045: end bsw/jbe@1309: end } bsw/jbe@1309: bsw/jbe@1309: if member.id == app.session.member_id then bsw/jbe@1309: ui.container { attr = { class = "mdl-card__content mdl-card--border" }, content = function() bsw/jbe@1309: ui.tag{ content = _"Private contacts" } bsw/jbe@1309: bsw/jbe@1309: if app.session.member_id and app.session.member_id == member.id bsw/jbe@1309: and private_contacts_selector:count() > 0 bsw/jbe@1309: then bsw@1045: bsw/jbe@1309: ui.paginate{ bsw/jbe@1309: selector = private_contacts_selector, bsw/jbe@1309: name = "contacts", bsw/jbe@1309: content = function() bsw/jbe@1309: local contacts = private_contacts_selector:exec() bsw/jbe@1309: for i, contact in ipairs(contacts) do bsw/jbe@1309: ui.container{ content = function() bsw/jbe@1309: execute.view{ module = "member_image", view = "_show", params = { bsw/jbe@1309: member_id = contact.other_member.id, class = "micro_avatar", bsw/jbe@1309: popup_text = contact.other_member.name, bsw/jbe@1309: image_type = "avatar", show_dummy = true, bsw/jbe@1309: } } bsw/jbe@1309: slot.put(" ") bsw/jbe@1309: ui.link{ bsw/jbe@1309: content = contact.other_member.name, bsw/jbe@1309: module = "member", bsw/jbe@1309: view = "show", bsw/jbe@1309: id = contact.other_member.id bsw/jbe@1309: } bsw/jbe@1309: slot.put(" ") bsw/jbe@1309: ui.link{ bsw/jbe@1309: content = function() bsw/jbe@1309: ui.tag{ tag = "i", attr = { class = "material-icons" }, content = "publish" } bsw/jbe@1309: end, bsw/jbe@1309: module = "contact", bsw/jbe@1309: action = "add_member", bsw/jbe@1309: id = contact.other_member_id, bsw/jbe@1309: params = { public = true }, bsw/jbe@1309: routing = { bsw/jbe@1309: default = { bsw/jbe@1309: mode = "redirect", bsw/jbe@1309: module = request.get_module(), bsw/jbe@1309: view = request.get_view(), bsw/jbe@1309: id = request.get_id_string(), bsw/jbe@1309: params = request.get_param_strings() bsw/jbe@1309: } bsw/jbe@1309: } bsw/jbe@1309: } bsw/jbe@1309: ui.link{ bsw/jbe@1309: content = function() bsw/jbe@1309: ui.tag{ tag = "i", attr = { class = "material-icons" }, content = "delete" } bsw/jbe@1309: end, bsw/jbe@1309: module = "contact", bsw/jbe@1309: action = "remove_member", bsw/jbe@1309: id = contact.other_member_id, bsw/jbe@1309: routing = { bsw/jbe@1309: default = { bsw/jbe@1309: mode = "redirect", bsw/jbe@1309: module = request.get_module(), bsw/jbe@1309: view = request.get_view(), bsw/jbe@1309: id = request.get_id_string(), bsw/jbe@1309: params = request.get_param_strings() bsw/jbe@1309: } bsw/jbe@1309: } bsw/jbe@1309: } bsw/jbe@1309: end } bsw/jbe@1309: end bsw/jbe@1309: end bsw/jbe@1309: } bsw@1045: end bsw/jbe@1309: end } bsw@1045: end bsw/jbe@1309: end }