liquid_feedback_frontend
view app/main/member/show_tab.lua @ 519:7492497005bd
Fixed voting for non javascript capable browser, removed browser warning
| author | bsw | 
|---|---|
| date | Mon Apr 16 23:27:07 2012 +0200 (2012-04-16) | 
| parents | a42179662951 | 
| children | 
 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       module = "member",
    28       view = "_email_unconfirmed",
    29       params = {}
    30     }
    31   end
    33   if app.session.member.notify_level == nil then
    34     tabs[#tabs+1] = {
    35       class = "yellow",
    36       name = "notify_level_not_set",
    37       label = _"Notifications",
    38       module = "member",
    39       view = "_notify_level_not_set"
    40     }
    41   end
    43   --[[
    44   if config.motd_intern then
    45     tabs[#tabs+1] = {
    46       class = "yellow",
    47       name = "motd",
    48       label = _"Message of the day",
    49       module = "index",
    50       view = "_motd",
    51       params = {}
    52     }
    53   end
    54   --]]
    56   local broken_delegations = Delegation:new_selector()
    57     :join("issue", nil, "issue.id = delegation.issue_id AND issue.closed ISNULL")
    58     :join("member", nil, "delegation.trustee_id = member.id")
    59     :add_where{"delegation.truster_id = ?", member.id}
    60     :add_where{"member.active = 'f' OR (member.last_activity IS NULL OR age(member.last_activity) > ?::interval)", config.delegation_warning_time }
    62   if broken_delegations:count() > 0 then
    63     tabs[#tabs+1] = {
    64       class = "red",
    65       name = "broken_delegations",
    66       label = _"Delegation problems" .. " (" .. tostring(broken_delegations:count()) .. ")",
    67       icon = { static = "icons/16/table_go.png" },
    68       module = "delegation",
    69       view = "_list",
    70       params = { delegations_selector = broken_delegations, outgoing = true },
    71     }
    72   end
    74   local selector = Area:new_selector()
    75     :reset_fields()
    76     :join("privilege", nil, { "privilege.unit_id = area.unit_id AND privilege.member_id = ? AND privilege.voting_right", app.session.member_id })
    77     :add_field("area.id", nil, { "grouped" })
    78     :add_field("area.name", nil, { "grouped" })
    79     :add_field("membership.member_id NOTNULL", "is_member", { "grouped" })
    80     :add_field("count(issue.id)", "issues_to_vote_count")
    81     :add_field("count(interest.member_id)", "interested_issues_to_vote_count")
    82     :add_field("count(interest.member_id NOTNULL OR interest.member_id NOTNULL)", "issues_to_vote_count_sum")
    83     :join("issue", nil, "issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL")
    84     :left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id })
    85     :add_where{ "direct_voter.member_id ISNULL" }
    86     :left_join("interest", nil, { "interest.issue_id = issue.id AND interest.member_id = ?", app.session.member.id })
    87     :left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ? ", app.session.member.id })
    89   local not_voted_areas = {}
    90   local issues_to_vote_count = 0
    91   for i, area in ipairs(selector:exec()) do
    92     if area.is_member or area.interested_issues_to_vote_count > 0 then
    93       not_voted_areas[#not_voted_areas+1] = area
    94     end
    95     if area.is_member then
    96       issues_to_vote_count = issues_to_vote_count + area.issues_to_vote_count_sum
    97     end
    98   end
   100   if issues_to_vote_count > 0 then
   101     tabs[#tabs+1] = {
   102       class = "yellow",
   103       name = "not_voted_issues",
   104       label = _"Not voted issues" .. " (" .. tostring(issues_to_vote_count) .. ")",
   105       icon = { static = "icons/16/email_open.png" },
   106       module = "index",
   107       view = "_not_voted_issues",
   108       params = {
   109         areas = not_voted_areas
   110       }
   111     }
   112   end
   114   local initiator_invites_selector = Initiative:new_selector()
   115     :join("issue", "_issue_state", "_issue_state.id = initiative.issue_id")
   116     :join("initiator", nil, { "initiator.initiative_id = initiative.id AND initiator.member_id = ? AND initiator.accepted ISNULL", app.session.member.id })
   117     :add_where("_issue_state.closed ISNULL AND _issue_state.half_frozen ISNULL")
   119   if initiator_invites_selector:count() > 0 then
   120     tabs[#tabs+1] = {
   121       class = "yellow",
   122       name = "initiator_invites",
   123       label = _"Initiator invites" .. " (" .. tostring(initiator_invites_selector:count()) .. ")",
   124       icon = { static = "icons/16/user_add.png" },
   125       module = "index",
   126       view = "_initiator_invites",
   127       params = {
   128         initiatives_selector = initiator_invites_selector
   129       }
   130     }
   131   end
   133   local updated_drafts_selector = Initiative:new_selector()
   134     :join("issue", "_issue_state", "_issue_state.id = initiative.issue_id AND _issue_state.closed ISNULL AND _issue_state.fully_frozen ISNULL")
   135     :join("current_draft", "_current_draft", "_current_draft.initiative_id = initiative.id")
   136     :join("supporter", "supporter", { "supporter.member_id = ? AND supporter.initiative_id = initiative.id AND supporter.draft_id < _current_draft.id", app.session.member_id })
   137     :add_where("initiative.revoked ISNULL")
   139   if updated_drafts_selector:count() > 0 then
   140     tabs[#tabs+1] = {
   141       class = "yellow",
   142       name = "updated_drafts",
   143       label = _"Updated drafts" .. " (" .. tostring(updated_drafts_selector:count()) .. ")",
   144       icon = { static = "icons/16/script.png" },
   145       module = "index",
   146       view = "_updated_drafts",
   147       params = {
   148         initiatives_selector = updated_drafts_selector
   149       }
   150     }
   151   end
   152 end
   154 if not show_as_homepage then
   155   tabs[#tabs+1] = {
   156     name = "profile",
   157     label = _"Profile",
   158     icon = { static = "icons/16/application_form.png" },
   159     module = "member",
   160     view = "_profile",
   161     params = { member = member },
   162   }
   163 end
   166 local areas_selector = member:get_reference_selector("areas")
   167 tabs[#tabs+1] = {
   168   name = "areas",
   169   label = _"Areas",
   170   icon = { static = "icons/16/package.png" },
   171   module = "member",
   172   view = "_area_list",
   173   params = { areas_selector = areas_selector, member = member, for_member = not show_as_homepage },
   174 }
   176 if show_as_homepage then
   177   tabs[#tabs+1] = {
   178     name = "timeline",
   179     label = _"Events",
   180     module = "member",
   181     view = "_event_list",
   182     params = { }
   183   }
   184 else
   185   tabs[#tabs+1] = {
   186     name = "timeline",
   187     label = _"Events",
   188     module = "event",
   189     view = "_list",
   190     params = { for_member = member }
   191   }
   192 end
   194 tabs[#tabs+1] = {
   195   name = "open",
   196   label = _"Open issues",
   197   module = "issue",
   198   view = "_list",
   199   link_params = { 
   200     filter_interest = not show_as_homepage and "issue" or nil,
   201   },
   202   params = {
   203     for_state = "open",
   204     for_member = not show_as_homepage and member or nil,
   205     issues_selector = Issue:new_selector()
   206       :add_where("issue.closed ISNULL")
   207       :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now()")
   208   }
   209 }
   211 tabs[#tabs+1] = {
   212   name = "closed",
   213   label = _"Closed issues",
   214   module = "issue",
   215   view = "_list",
   216   link_params = { 
   217     filter_interest = not show_as_homepage and "issue" or nil,
   218   },
   219   params = {
   220     for_state = "closed",
   221     for_member = not show_as_homepage and member or nil,
   222     issues_selector = Issue:new_selector()
   223       :add_where("issue.closed NOTNULL")
   224       :add_order_by("issue.closed DESC")
   226   }
   227 }
   229 if not show_as_homepage then
   230   local outgoing_delegations_selector = member:get_reference_selector("outgoing_delegations")
   231     :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id")
   232     :add_where("_member_showtab_issue.closed ISNULL")
   233   tabs[#tabs+1] = {
   234     name = "outgoing_delegations",
   235     label = _"Outgoing delegations" .. " (" .. tostring(outgoing_delegations_selector:count()) .. ")",
   236     icon = { static = "icons/16/table_go.png" },
   237     module = "delegation",
   238     view = "_list",
   239     params = { delegations_selector = outgoing_delegations_selector, outgoing = true },
   240   }
   242   local incoming_delegations_selector = member:get_reference_selector("incoming_delegations")
   243     :left_join("issue", "_member_showtab_issue", "_member_showtab_issue.id = delegation.issue_id")
   244     :add_where("_member_showtab_issue.closed ISNULL")
   245   tabs[#tabs+1] = {
   246     name = "incoming_delegations",
   247     label = _"Incoming delegations" .. " (" .. tostring(incoming_delegations_selector:count()) .. ")",
   248     icon = { static = "icons/16/table_go.png" },
   249     module = "delegation",
   250     view = "_list",
   251     params = { delegations_selector = incoming_delegations_selector, incoming = true },
   252   }
   254   local contacts_selector = member:get_reference_selector("saved_members"):add_where("public")
   255   tabs[#tabs+1] = {
   256     name = "contacts",
   257     label = _"Contacts" .. " (" .. tostring(contacts_selector:count()) .. ")",
   258     icon = { static = "icons/16/book_edit.png" },
   259     module = "member",
   260     view = "_list",
   261     params = { members_selector = contacts_selector },
   262   }
   263 end
   265 ui.tabs(tabs)
