bsw/jbe@0: local member = Member:by_id(param.get_id()) bsw/jbe@0: bsw@286: if not member or not member.activated then bsw@1045: execute.view { module = "index", view = "404" } bsw@1045: request.set_status("404 Not Found") bsw@1045: return bsw@286: end bsw@286: bsw@1045: local limit = 25 bsw@1045: bsw@1045: local initiated_initiatives = Initiative:new_selector() bsw@1045: :join("initiator", nil, { "initiator.initiative_id = initiative.id and initiator.member_id = ?", member.id }) bsw@1045: :join("issue", nil, "issue.id = initiative.issue_id") bsw@1045: :add_order_by("initiative.id DESC") bsw@1045: :limit(limit+1) bsw@1045: :exec() bsw@1045: bsw@1045: initiated_initiatives:load("issue") bsw@1045: initiated_initiatives:load_everything_for_member_id(member.id) bsw@1045: bsw@1045: local supported_initiatives = Initiative:new_selector() bsw@1045: :join("supporter", nil, { "supporter.initiative_id = initiative.id and supporter.member_id = ?", member.id }) bsw@1045: :join("issue", nil, "issue.id = initiative.issue_id") bsw@1045: :add_where("issue.closed ISNULL") bsw@1045: :add_order_by("initiative.id DESC") bsw@1045: :limit(limit+1) bsw@1045: :exec() bsw@1045: bsw@1045: supported_initiatives:load("issue") bsw@1045: supported_initiatives:load_everything_for_member_id(member.id) bsw@1045: bsw@1045: local voted_initiatives = Initiative:new_selector() bsw@1045: :add_where("initiative.rank = 1") bsw@1045: :join("direct_voter", nil, { "direct_voter.issue_id = initiative.issue_id and direct_voter.member_id = ?", member.id }) bsw@1045: :join("vote", nil, { "vote.initiative_id = initiative.id and vote.member_id = ?", member.id }) bsw@1045: :join("issue", nil, "issue.id = initiative.issue_id") bsw@1045: :add_order_by("issue.closed DESC, initiative.id DESC") bsw@1045: :add_field("vote.grade", "vote_grade") bsw@1045: :add_field("vote.first_preference", "vote_first_preference") bsw@1045: :limit(limit+1) bsw@1045: :exec() bsw@1045: bsw@1045: voted_initiatives:load("issue") bsw@1045: voted_initiatives:load_everything_for_member_id(member.id) bsw@1045: bsw@1045: local incoming_delegations_selector = member:get_reference_selector("incoming_delegations") bsw@1045: :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id AND _member_showtab_issue.closed ISNULL") bsw@1045: :add_where("_member_showtab_issue.closed ISNULL") bsw@1045: :add_order_by("delegation.unit_id, delegation.area_id, delegation.issue_id") bsw@1045: :limit(limit+1) bsw@1045: bsw@1045: local outgoing_delegations_selector = member:get_reference_selector("outgoing_delegations") bsw@1045: :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id AND _member_showtab_issue.closed ISNULL") bsw@1045: :add_where("_member_showtab_issue.closed ISNULL") bsw@1045: :add_order_by("delegation.unit_id, delegation.area_id, delegation.issue_id") bsw@1045: :limit(limit+1) bsw@1045: bsw@1045: jorges@103: app.html_title.title = member.name jorges@103: app.html_title.subtitle = _("Member") jorges@103: bsw@1045: ui.titleMember(member) bsw@1045: bsw/jbe@1309: ui.grid{ content = function() bsw/jbe@1309: ui.cell_main{ content = function() bsw/jbe@1309: ui.container{ attr = { class = "mdl-card mdl-card__fullwidth mdl-shadow--2dp" }, content = function() bsw/jbe@1309: 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 = function() bsw/jbe@1309: execute.view{ bsw/jbe@1309: module = "member_image", bsw/jbe@1309: view = "_show", bsw/jbe@1309: params = { bsw/jbe@1309: member = member, bsw/jbe@1309: image_type = "avatar", bsw/jbe@1309: show_dummy = true, bsw/jbe@1309: class = "left", bsw/jbe@1309: force_update = app.session.member_id == member.id bsw/jbe@1309: } bsw/jbe@1309: } bsw/jbe@1309: slot.put(" ") bsw/jbe@1309: ui.tag{ content = member.name } bsw/jbe@1309: end } bsw/jbe@1309: ui.container { bsw/jbe@1309: attr = { class = "float-right" }, bsw/jbe@1309: content = function() bsw/jbe@1309: ui.link{ bsw/jbe@1309: content = _"Account history", bsw/jbe@1309: module = "member", view = "history", id = member.id bsw/jbe@1309: } bsw/jbe@1309: end bsw/jbe@1309: } bsw/jbe@1309: end } bsw/jbe@1309: bsw/jbe@1309: ui.container{ attr = { class = "mdl-card__content" }, content = function() bsw@564: bsw/jbe@1309: if member.identification then bsw/jbe@1309: ui.container{ content = member.identification } bsw/jbe@1309: end bsw@1045: bsw/jbe@1309: execute.view{ bsw/jbe@1309: module = "member", bsw/jbe@1309: view = "_profile", bsw/jbe@1309: params = { member = member } bsw/jbe@1309: } bsw@1045: bsw/jbe@1309: --[[ bsw/jbe@1309: execute.view { bsw/jbe@1309: module = "member", view = "_timeline", bsw/jbe@1309: params = { member = member } bsw@1045: } bsw/jbe@1309: --]] bsw/jbe@1309: end } bsw/jbe@1309: end } bsw/jbe@1309: bsw/jbe@1309: if #initiated_initiatives > 0 then 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 = _"Initiatives created by this member" } bsw/jbe@1309: end } bsw/jbe@1309: ui.container{ attr = { class = "initiative_list" }, content = function() bsw/jbe@1309: execute.view { bsw/jbe@1309: module = "initiative", view = "_list", bsw/jbe@1309: params = { initiatives = initiated_initiatives, for_member = member }, bsw/jbe@1309: } bsw/jbe@1309: end } bsw/jbe@1309: end } bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: if #supported_initiatives > 0 then 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 = _"What this member is currently supporting" } bsw/jbe@1309: end } bsw/jbe@1309: ui.container{ attr = { class = "initiative_list" }, content = function() bsw/jbe@1309: execute.view { bsw/jbe@1309: module = "initiative", view = "_list", bsw/jbe@1309: params = { initiatives = supported_initiatives, for_member = member }, bsw/jbe@1309: } bsw/jbe@1309: end } bsw/jbe@1309: end } bsw@609: end bsw/jbe@1309: bsw/jbe@1309: if #voted_initiatives > 0 then 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 = _"How this member voted" } bsw/jbe@1309: end } bsw/jbe@1309: ui.container{ attr = { class = "initiative_list" }, content = function() bsw/jbe@1309: execute.view { bsw/jbe@1309: module = "initiative", view = "_list", bsw/jbe@1309: params = { initiatives = voted_initiatives, for_member = member }, bsw/jbe@1309: } bsw/jbe@1309: end } bsw/jbe@1309: end } bsw/jbe@1309: end bsw/jbe@1309: --[[ 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 = _"Outgoing delegations" } bsw/jbe@1309: end } bsw/jbe@1309: ui.container{ attr = { class = "mdl-card__content" }, content = function() bsw/jbe@1309: execute.view { bsw/jbe@1309: module = "delegation", view = "_list", bsw/jbe@1309: params = { delegations_selector = outgoing_delegations_selector, outgoing = true }, bsw/jbe@1309: } bsw/jbe@1309: end } bsw/jbe@1309: end } 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 = _"Incoming delegations" } bsw/jbe@1309: end } bsw/jbe@1309: ui.container{ attr = { class = "mdl-card__content" }, content = function() bsw/jbe@1309: execute.view { bsw/jbe@1309: module = "delegation", view = "_list", bsw/jbe@1309: params = { delegations_selector = incoming_delegations_selector, incoming = true }, bsw/jbe@1309: } bsw/jbe@1309: end } bsw/jbe@1309: end } bsw/jbe@1309: --]] bsw/jbe@1309: end } bsw/jbe@1309: bsw/jbe@1309: ui.cell_sidebar{ content = function() bsw/jbe@1309: execute.view { bsw/jbe@1309: module = "member", view = "_sidebar_whatcanido", params = { bsw@1045: member = member bsw@564: } bsw/jbe@1309: } bsw@1045: bsw/jbe@1309: execute.view { bsw/jbe@1309: module = "member", view = "_sidebar_contacts", params = { bsw@1045: member = member bsw@1045: } bsw/jbe@1309: } bsw/jbe@1309: end } bsw@9: bsw/jbe@1309: end } bsw@1148: bsw@1214: if app.session.member_id == member.id then bsw@1148: ui.script{ script = [[ bsw@1148: var url = $(".microAvatar")[0].src; bsw@1148: var onload = function() { bsw@1148: this.contentWindow.location.reload(true); bsw@1148: this.removeEventListener("load", onload, false); bsw@1148: this.parentElement.removeChild(this); bsw@1148: } bsw@1148: var iframeEl = document.createElement("iframe"); bsw@1148: iframeEl.style.display = "none"; bsw@1148: iframeEl.src = url; bsw@1148: iframeEl.addEventListener("load", onload, false); bsw@1148: document.body.appendChild(iframeEl); bsw@1148: ]] } bsw@1148: end