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@1045: execute.view { bsw@1045: module = "member", view = "_sidebar_whatcanido", params = { bsw@1045: member = member bsw@426: } bsw@1045: } bsw@564: bsw@1045: execute.view { bsw@1045: module = "member", view = "_sidebar_contacts", params = { bsw@1045: member = member bsw@1045: } bsw@1045: } bsw@1045: bsw@1045: bsw@1045: ui.section( function() bsw@1045: ui.sectionHead( function() bsw@1045: execute.view{ bsw@1045: module = "member_image", bsw@1045: view = "_show", bsw@1045: params = { bsw@1045: member = member, bsw@1045: image_type = "avatar", bsw@1045: show_dummy = true, bsw@1148: class = "left", bsw@1179: force_update = app.session.member_id == member.id bsw@564: } bsw@1045: } bsw@1045: ui.heading{ level = 1, content = member.name } bsw@1045: slot.put("
") bsw@1045: ui.container { bsw@1045: attr = { class = "right" }, bsw@564: content = function() bsw@1045: ui.link{ bsw@1045: content = _"Account history", bsw@1045: module = "member", view = "history", id = member.id bsw@1045: } bsw@1045: end bsw@426: } bsw@1045: if member.identification then bsw@1045: ui.container{ content = member.identification } bsw@609: end bsw@1045: end ) bsw@1045: ui.sectionRow( function() bsw@1045: execute.view{ bsw@1045: module = "member", bsw@1045: view = "_profile", bsw@1045: params = { member = member } bsw@1045: } bsw@1045: end ) bsw@1045: end ) bsw@1045: bsw@1045: bsw@1045: ui.section( function() bsw@1045: ui.sectionHead( function() bsw@1045: ui.heading { level = 2, content = _"Initiatives created by this member" } bsw@1045: end ) bsw@1045: ui.sectionRow( function() bsw@1045: for i, initiative in ipairs(initiated_initiatives) do bsw@1045: execute.view { bsw@1045: module = "initiative", view = "_list", bsw@1045: params = { initiative = initiative }, bsw@1045: member = member bsw@564: } bsw@564: end bsw@1045: end ) bsw@1045: end ) bsw@1045: bsw@1045: ui.section( function() bsw@1045: ui.sectionHead( function() bsw@1045: ui.heading { level = 2, content = _"What this member is currently supporting" } bsw@1045: end ) bsw@1045: ui.sectionRow( function() bsw@1045: for i, initiative in ipairs(supported_initiatives) do bsw@1045: execute.view { bsw@1045: module = "initiative", view = "_list", bsw@1045: params = { initiative = initiative }, bsw@1045: member = member bsw@1045: } bsw@1045: end bsw@1045: end ) bsw@1045: end ) bsw@1045: bsw@1045: ui.section( function() bsw@1045: ui.sectionHead( function() bsw@1045: ui.heading { level = 2, content = _"How this member voted" } bsw@1045: end ) bsw@1045: ui.sectionRow( function() bsw@1045: for i, initiative in ipairs(voted_initiatives) do bsw@1045: execute.view { bsw@1045: module = "initiative", view = "_list", bsw@1045: params = { initiative = initiative } bsw@1045: } bsw@564: end bsw@1045: end ) bsw@1045: end ) bsw@1045: bsw@9: bsw@1045: ui.section( function() bsw@1045: ui.sectionHead( function() bsw@1045: ui.heading { level = 2, content = _"Outgoing delegations" } bsw@1045: end ) bsw@1045: ui.sectionRow( function() bsw@1045: execute.view { bsw@1045: module = "delegation", view = "_list", bsw@1045: params = { delegations_selector = outgoing_delegations_selector, outgoing = true }, bsw@1045: } bsw@1045: end ) bsw@1045: end ) bsw@1045: bsw/jbe@0: bsw@1045: ui.section( function() bsw@1045: bsw@1045: ui.sectionHead( function() bsw@1045: ui.heading { level = 2, content = _"Incoming delegations" } bsw@1045: end ) bsw@1045: ui.sectionRow( function() bsw@1045: execute.view { bsw@1045: module = "delegation", view = "_list", bsw@1045: params = { delegations_selector = incoming_delegations_selector, incoming = true }, bsw@1045: } bsw@1045: end ) bsw@1045: bsw@1045: end ) bsw@1148: 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