liquid_feedback_frontend

annotate app/main/index/_notifications.lua @ 1205:2f510599c12f

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

Impressum / About Us