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