liquid_feedback_frontend
annotate app/main/member/show_tab.lua @ 154:6b6c82f9ca9f
speedup member image loading when non set
we can add the location of the default file directy instead of going through another slow request
we can add the location of the default file directy instead of going through another slow request
author | Daniel Poelzleithner <poelzi@poelzi.org> |
---|---|
date | Fri Oct 08 15:25:10 2010 +0200 (2010-10-08) |
parents | ccdf197b3f9b |
children | 329425e4128e |
rev | line source |
---|---|
bsw@57 | 1 local show_as_homepage = param.get("show_as_homepage", atom.boolean) |
bsw@57 | 2 |
bsw/jbe@19 | 3 local member |
bsw/jbe@19 | 4 |
bsw/jbe@19 | 5 if request.get_json_request_slots() then |
bsw/jbe@19 | 6 member = Member:by_id(param.get("member_id")) |
bsw/jbe@19 | 7 else |
bsw/jbe@19 | 8 member = param.get("member", "table") |
bsw/jbe@19 | 9 end |
bsw/jbe@19 | 10 |
bsw@57 | 11 local tabs = { |
bsw@57 | 12 module = "member", |
bsw@57 | 13 view = "show_tab", |
bsw@57 | 14 static_params = { |
bsw@57 | 15 member_id = member.id, |
bsw@57 | 16 show_as_homepage = show_as_homepage |
bsw@57 | 17 } |
bsw@57 | 18 } |
bsw@57 | 19 |
bsw@57 | 20 if show_as_homepage and app.session.member_id == member.id then |
bsw@62 | 21 |
bsw@75 | 22 if app.session.member.notify_email_unconfirmed then |
bsw@75 | 23 tabs[#tabs+1] = { |
bsw@75 | 24 class = "yellow", |
bsw@75 | 25 name = "email_unconfirmed", |
bsw@75 | 26 label = _"Email unconfirmed", |
bsw@75 | 27 icon = { static = "icons/16/bell.png" }, |
bsw@75 | 28 module = "member", |
bsw@75 | 29 view = "_email_unconfirmed", |
bsw@75 | 30 params = {} |
bsw@75 | 31 } |
bsw@75 | 32 end |
bsw@75 | 33 |
bsw@69 | 34 if config.motd_intern then |
bsw@62 | 35 tabs[#tabs+1] = { |
bsw@62 | 36 class = "yellow", |
bsw@62 | 37 name = "motd", |
bsw@62 | 38 label = _"Message of the day", |
bsw@62 | 39 icon = { static = "icons/16/bell.png" }, |
bsw@62 | 40 module = "index", |
bsw@62 | 41 view = "_motd", |
bsw@62 | 42 params = {} |
bsw@62 | 43 } |
bsw@62 | 44 end |
bsw@57 | 45 |
poelzi@151 | 46 local broken_delegations = Delegation:new_selector() |
poelzi@151 | 47 :join("member", nil, "delegation.trustee_id = member.id") |
poelzi@152 | 48 :add_where{"delegation.truster_id = ?", member.id} |
poelzi@152 | 49 if config.delegation_warning_time then |
poelzi@152 | 50 broken_delegations:add_where{"member.active = 'f' OR (member.last_login IS NULL OR age(member.last_login) > ?::interval)", config.delegation_warning_time} |
poelzi@152 | 51 else |
poelzi@152 | 52 broken_delegations:add_where{"member.active = 'f'"} |
poelzi@152 | 53 end |
poelzi@151 | 54 |
poelzi@151 | 55 if broken_delegations:count() then |
poelzi@151 | 56 tabs[#tabs+1] = { |
poelzi@151 | 57 class = "red", |
poelzi@151 | 58 name = "problem_delegations", |
poelzi@151 | 59 label = _"Delegation problems" .. " (" .. tostring(broken_delegations:count()) .. ")", |
poelzi@151 | 60 icon = { static = "icons/16/table_go.png" }, |
poelzi@151 | 61 module = "delegation", |
poelzi@151 | 62 view = "_list", |
poelzi@151 | 63 params = { delegations_selector = broken_delegations, outgoing = true }, |
poelzi@151 | 64 } |
poelzi@151 | 65 end |
poelzi@151 | 66 |
bsw@57 | 67 local selector = Area:new_selector() |
bsw@57 | 68 :reset_fields() |
bsw@57 | 69 :add_field("area.id", nil, { "grouped" }) |
bsw@57 | 70 :add_field("area.name", nil, { "grouped" }) |
bsw@57 | 71 :add_field("membership.member_id NOTNULL", "is_member", { "grouped" }) |
bsw@57 | 72 :add_field("count(issue.id)", "issues_to_vote_count") |
bsw@57 | 73 :add_field("count(interest.member_id)", "interested_issues_to_vote_count") |
bsw@57 | 74 :add_field("count(interest.member_id NOTNULL OR interest.member_id NOTNULL)", "issues_to_vote_count_sum") |
bsw@57 | 75 :join("issue", nil, "issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL") |
bsw@57 | 76 :left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) |
bsw@57 | 77 :add_where{ "direct_voter.member_id ISNULL" } |
bsw@57 | 78 :left_join("interest", nil, { "interest.issue_id = issue.id AND interest.member_id = ?", app.session.member.id }) |
bsw@57 | 79 :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ? ", app.session.member.id }) |
bsw@57 | 80 |
bsw@57 | 81 local not_voted_areas = {} |
bsw@57 | 82 local issues_to_vote_count = 0 |
bsw@57 | 83 for i, area in ipairs(selector:exec()) do |
bsw@57 | 84 if area.is_member or area.interested_issues_to_vote_count > 0 then |
bsw@57 | 85 not_voted_areas[#not_voted_areas+1] = area |
bsw@57 | 86 end |
bsw@67 | 87 if area.is_member then |
bsw@67 | 88 issues_to_vote_count = issues_to_vote_count + area.issues_to_vote_count_sum |
bsw@67 | 89 end |
bsw@57 | 90 end |
bsw@57 | 91 |
bsw@57 | 92 if issues_to_vote_count > 0 then |
bsw@57 | 93 tabs[#tabs+1] = { |
bsw@57 | 94 class = "yellow", |
bsw@57 | 95 name = "not_voted_issues", |
bsw@57 | 96 label = _"Not voted issues" .. " (" .. tostring(issues_to_vote_count) .. ")", |
bsw@57 | 97 icon = { static = "icons/16/email_open.png" }, |
bsw@57 | 98 module = "index", |
bsw@57 | 99 view = "_not_voted_issues", |
bsw@57 | 100 params = { |
bsw@57 | 101 areas = not_voted_areas |
bsw@57 | 102 } |
bsw@57 | 103 } |
bsw@57 | 104 end |
bsw@57 | 105 |
bsw@57 | 106 local initiator_invites_selector = Initiative:new_selector() |
bsw@57 | 107 :join("issue", "_issue_state", "_issue_state.id = initiative.issue_id") |
bsw@57 | 108 :join("initiator", nil, { "initiator.initiative_id = initiative.id AND initiator.member_id = ? AND initiator.accepted ISNULL", app.session.member.id }) |
bsw@57 | 109 :add_where("_issue_state.closed ISNULL AND _issue_state.half_frozen ISNULL") |
bsw@57 | 110 |
bsw@57 | 111 if initiator_invites_selector:count() > 0 then |
bsw@57 | 112 tabs[#tabs+1] = { |
bsw@57 | 113 class = "yellow", |
bsw@57 | 114 name = "initiator_invites", |
bsw@57 | 115 label = _"Initiator invites" .. " (" .. tostring(initiator_invites_selector:count()) .. ")", |
bsw@57 | 116 icon = { static = "icons/16/user_add.png" }, |
bsw@57 | 117 module = "index", |
bsw@57 | 118 view = "_initiator_invites", |
bsw@57 | 119 params = { |
bsw@57 | 120 initiatives_selector = initiator_invites_selector |
bsw@57 | 121 } |
bsw@57 | 122 } |
bsw@57 | 123 end |
bsw@57 | 124 |
bsw@57 | 125 local updated_drafts_selector = Initiative:new_selector() |
bsw@57 | 126 :join("issue", "_issue_state", "_issue_state.id = initiative.issue_id AND _issue_state.closed ISNULL AND _issue_state.fully_frozen ISNULL") |
bsw@57 | 127 :join("current_draft", "_current_draft", "_current_draft.initiative_id = initiative.id") |
bsw@57 | 128 :join("supporter", "supporter", { "supporter.member_id = ? AND supporter.initiative_id = initiative.id AND supporter.draft_id < _current_draft.id", app.session.member_id }) |
bsw@75 | 129 :add_where("initiative.revoked ISNULL") |
bsw@57 | 130 |
bsw@57 | 131 if updated_drafts_selector:count() > 0 then |
bsw@57 | 132 tabs[#tabs+1] = { |
bsw@57 | 133 class = "yellow", |
bsw@57 | 134 name = "updated_drafts", |
bsw@57 | 135 label = _"Updated drafts" .. " (" .. tostring(updated_drafts_selector:count()) .. ")", |
bsw@57 | 136 icon = { static = "icons/16/script.png" }, |
bsw@57 | 137 module = "index", |
bsw@57 | 138 view = "_updated_drafts", |
bsw@57 | 139 params = { |
bsw@57 | 140 initiatives_selector = updated_drafts_selector |
bsw@57 | 141 } |
bsw@57 | 142 } |
bsw@57 | 143 end |
bsw@57 | 144 end |
bsw@57 | 145 |
bsw@57 | 146 tabs[#tabs+1] = { |
bsw@57 | 147 name = "profile", |
bsw@57 | 148 label = _"Profile", |
bsw@57 | 149 icon = { static = "icons/16/application_form.png" }, |
bsw@57 | 150 module = "member", |
bsw@57 | 151 view = "_profile", |
bsw@57 | 152 params = { member = member }, |
bsw@57 | 153 } |
bsw@57 | 154 |
bsw/jbe@19 | 155 local areas_selector = member:get_reference_selector("areas") |
bsw@57 | 156 tabs[#tabs+1] = { |
bsw@57 | 157 name = "areas", |
bsw@57 | 158 label = _"Areas" .. " (" .. tostring(areas_selector:count()) .. ")", |
bsw@57 | 159 icon = { static = "icons/16/package.png" }, |
bsw@57 | 160 module = "area", |
bsw@57 | 161 view = "_list", |
bsw@57 | 162 params = { areas_selector = areas_selector }, |
bsw@57 | 163 } |
bsw@57 | 164 |
bsw/jbe@19 | 165 local issues_selector = member:get_reference_selector("issues") |
bsw@57 | 166 tabs[#tabs+1] = { |
bsw@57 | 167 name = "issues", |
bsw@57 | 168 label = _"Issues" .. " (" .. tostring(issues_selector:count()) .. ")", |
bsw@57 | 169 icon = { static = "icons/16/folder.png" }, |
bsw@57 | 170 module = "issue", |
bsw@57 | 171 view = "_list", |
bsw@57 | 172 params = { issues_selector = issues_selector }, |
bsw@57 | 173 } |
bsw@57 | 174 |
bsw/jbe@19 | 175 local supported_initiatives_selector = member:get_reference_selector("supported_initiatives") |
bsw@95 | 176 |
bsw@57 | 177 tabs[#tabs+1] = { |
bsw@57 | 178 name = "supported_initiatives", |
bsw@57 | 179 label = _"Supported initiatives" .. " (" .. tostring(supported_initiatives_selector:count()) .. ")", |
bsw@57 | 180 icon = { static = "icons/16/thumb_up_green.png" }, |
bsw@95 | 181 module = "member", |
bsw@95 | 182 view = "_list_supported_initiatives", |
poelzi@137 | 183 params = { initiatives_selector = supported_initiatives_selector, |
poelzi@137 | 184 member = member }, |
bsw@57 | 185 } |
bsw@57 | 186 |
bsw/jbe@19 | 187 local initiated_initiatives_selector = member:get_reference_selector("initiated_initiatives"):add_where("initiator.accepted = true") |
bsw@57 | 188 tabs[#tabs+1] = { |
bsw@57 | 189 name = "initiatied_initiatives", |
bsw@57 | 190 label = _"Initiated initiatives" .. " (" .. tostring(initiated_initiatives_selector:count()) .. ")", |
bsw@57 | 191 icon = { static = "icons/16/user_edit.png" }, |
bsw@95 | 192 module = "member", |
bsw@95 | 193 view = "_list_supported_initiatives", |
poelzi@137 | 194 params = { initiatives_selector = initiated_initiatives_selector, |
poelzi@137 | 195 member = member}, |
bsw@57 | 196 } |
bsw@57 | 197 |
bsw/jbe@19 | 198 local incoming_delegations_selector = member:get_reference_selector("incoming_delegations") |
bsw/jbe@19 | 199 :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id") |
bsw/jbe@19 | 200 :add_where("_member_showtab_issue.closed ISNULL") |
bsw@57 | 201 tabs[#tabs+1] = { |
bsw@57 | 202 name = "incoming_delegations", |
bsw@57 | 203 label = _"Incoming delegations" .. " (" .. tostring(incoming_delegations_selector:count()) .. ")", |
bsw@57 | 204 icon = { static = "icons/16/table_go.png" }, |
bsw@57 | 205 module = "delegation", |
bsw@57 | 206 view = "_list", |
bsw@57 | 207 params = { delegations_selector = incoming_delegations_selector, incoming = true }, |
bsw@57 | 208 } |
bsw@57 | 209 |
bsw/jbe@19 | 210 local outgoing_delegations_selector = member:get_reference_selector("outgoing_delegations") |
bsw/jbe@19 | 211 :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id") |
bsw/jbe@19 | 212 :add_where("_member_showtab_issue.closed ISNULL") |
bsw@57 | 213 tabs[#tabs+1] = { |
bsw@57 | 214 name = "outgoing_delegations", |
bsw@57 | 215 label = _"Outgoing delegations" .. " (" .. tostring(outgoing_delegations_selector:count()) .. ")", |
bsw@57 | 216 icon = { static = "icons/16/table_go.png" }, |
bsw@57 | 217 module = "delegation", |
bsw@57 | 218 view = "_list", |
bsw@57 | 219 params = { delegations_selector = outgoing_delegations_selector, outgoing = true }, |
bsw@57 | 220 } |
bsw/jbe@19 | 221 |
bsw@57 | 222 local contacts_selector = member:get_reference_selector("saved_members"):add_where("public") |
bsw@57 | 223 tabs[#tabs+1] = { |
bsw@57 | 224 name = "contacts", |
bsw@57 | 225 label = _"Contacts" .. " (" .. tostring(contacts_selector:count()) .. ")", |
bsw@57 | 226 icon = { static = "icons/16/book_edit.png" }, |
bsw/jbe@19 | 227 module = "member", |
bsw@57 | 228 view = "_list", |
bsw@57 | 229 params = { members_selector = contacts_selector }, |
bsw/jbe@19 | 230 } |
bsw@57 | 231 |
bsw@57 | 232 ui.tabs(tabs) |