liquid_feedback_frontend

view app/main/index/_notifications.lua @ 989:5a712ec1a7f1

Added support for login name recovery by email address
author bsw
date Sat Apr 20 18:51:28 2013 +0200 (2013-04-20)
parents 81bde33c2256
children 77873f08d94f
line source
1 local notification_links = {}
3 if app.session.member.notify_email_unconfirmed then
4 notification_links[#notification_links+1] = {
5 module = "index", view = "email_unconfirmed",
6 text = _"Please confirm your email address"
7 }
8 end
10 if app.session.member.notify_level == nil then
11 notification_links[#notification_links+1] = {
12 module = "member", view = "settings_notification",
13 text = _"Please select your preferred notification level"
14 }
15 end
17 if config.check_delegations_interval_soft then
18 local member = Member:new_selector()
19 :add_where({ "id = ?", app.session.member_id })
20 :add_field({ "now() > COALESCE(last_delegation_check, activated) + ?::interval", config.check_delegations_interval_soft }, "needs_delegation_check_soft")
21 :single_object_mode()
22 :exec()
24 if member.needs_delegation_check_soft then
25 notification_links[#notification_links+1] = {
26 module = "index", view = "check_delegations",
27 text = _"Check your delegations!"
28 }
29 end
30 end
32 local broken_delegations_count = Delegation:selector_for_broken(app.session.member_id):count()
34 if broken_delegations_count > 0 then
35 notification_links[#notification_links+1] = {
36 module = "index", view = "broken_delegations",
37 text = _("#{count} of your outgoing delegation(s) are broken", { count = broken_delegations_count })
38 }
40 end
42 local selector = Issue:new_selector()
43 :join("area", nil, "area.id = issue.area_id")
44 :join("privilege", nil, { "privilege.unit_id = area.unit_id AND privilege.member_id = ? AND privilege.voting_right", app.session.member_id })
45 :left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id })
46 :left_join("non_voter", nil, { "non_voter.issue_id = issue.id AND non_voter.member_id = ?", app.session.member.id })
47 :left_join("interest", nil, { "interest.issue_id = issue.id AND interest.member_id = ?", app.session.member.id })
48 :add_where{ "direct_voter.member_id ISNULL" }
49 :add_where{ "non_voter.member_id ISNULL" }
50 :add_where{ "interest.member_id NOTNULL" }
51 :add_where{ "issue.fully_frozen NOTNULL" }
52 :add_where{ "issue.closed ISNULL" }
53 :add_order_by{ "issue.fully_frozen + issue.voting_time ASC" }
55 local issues_to_vote_count = selector:count()
56 if issues_to_vote_count > 0 then
57 notification_links[#notification_links+1] = {
58 module = "index", view = "index",
59 params = {
60 tab = "open", filter = "frozen", filter_interest = "issue", filter_delegation = "direct", filter_voting = "not_voted"
61 },
62 text = _("You have not voted #{count} issue(s) you were interested in", { count = issues_to_vote_count })
63 }
64 end
66 local initiator_invites_count = Initiator:selector_for_invites(app.session.member_id):count()
68 if initiator_invites_count > 0 then
69 notification_links[#notification_links+1] = {
70 module = "index", view = "initiator_invites",
71 text = _("You are invited to #{count} initiative(s)", { count = initiator_invites_count })
72 }
73 end
75 updated_drafts_count = Initiative:selector_for_updated_drafts(app.session.member_id):count()
77 if updated_drafts_count > 0 then
78 notification_links[#notification_links+1] = {
79 module = "index", view = "updated_drafts",
80 text = _("New drafts for #{count} initiative(s) you are supporting", { count = updated_drafts_count })
81 }
82 end
84 if #notification_links > 0 then
85 ui.container{ attr = { class = "notifications" }, content = function()
86 ui.tag{ tag = "ul", attr = { class = "notifications" }, content = function()
87 for i, notification_link in ipairs(notification_links) do
88 ui.tag{ tag = "li", content = function()
89 ui.link(notification_link)
90 end }
91 end
92 end }
93 end }
94 end

Impressum / About Us