FEATURE: More granular mailing list mode (#4068)

* Rearrange frontend to account for mailing list mode

* Allow update of user preference for mailing list frequency

* Add mailing list frequency estimate

* Simplify frequency estimate; disable activity summary for mailing list mode

* Remove combined updates

* Add specs for enqueue mailing list mode job

* Write mailing list method for mailer

* Fix linting error

* Account for stale topics

* Add translations for default mailing list setting

* One query for mailing list topics

* Fix failing spec

* WIP

* Flesh out html template

* First pass at text-based mailing list summary

* Add user avatar

* Properly format posts for mailing list

* Move make_all_links_absolute into Email::Styles

* Apply first_seen_at to user

* Send mailing list email summary hourly based on first_seen_at

* Branch and test cleanup

* Use existing mailing list mode estimate

* Fix failing specs
This commit is contained in:
James Kiesel
2016-05-21 06:17:54 -07:00
committed by Régis Hanol
parent 4eeae880b6
commit feffe23cc5
28 changed files with 567 additions and 79 deletions

View File

@@ -504,7 +504,17 @@ en:
suspended_notice: "This user is suspended until {{date}}."
suspended_reason: "Reason: "
github_profile: "Github"
mailing_list_mode: "Send me an email for every new post (unless I mute the topic or category)"
email_activity_summary: "Activity Summary"
mailing_list_mode:
label: "Mailing list mode"
enabled: "Enable mailing list mode."
instructions: |
This setting overrides the activity summary.<br />
Muted topics and categories are not included in these emails.
daily: "Send daily updates."
individual: "Send an email for every new post."
many_per_day: "Send me an email for every new post (about {{dailyEmailEstimate}} per day)."
few_per_day: "Send me an email for every new post (less than 2 per day)."
watched_categories: "Watched"
watched_categories_instructions: "You will automatically watch all new topics in these categories. You will be notified of all new posts and topics, and a count of new posts will also appear next to the topic."
tracked_categories: "Tracked"

View File

@@ -28,6 +28,7 @@ en:
short_no_year: "%B %-d"
# Format directives: http://ruby-doc.org/core-2.2.0/Time.html#method-i-strftime
date_only: "%B %-d, %Y"
long: "%B %-d, %Y, %l:%M%P"
date:
# Do not remove the brackets and commas and do not translate the first month name. It should be "null".
month_names:
@@ -35,6 +36,8 @@ en:
<<: *datetime_formats
time:
<<: *datetime_formats
am: "am"
pm: "pm"
title: "Discourse"
topics: "Topics"
@@ -1300,6 +1303,7 @@ en:
default_email_private_messages: "Send an email when someone messages the user by default."
default_email_direct: "Send an email when someone quotes/replies to/mentions or invites the user by default."
default_email_mailing_list_mode: "Send an email for every new post by default."
default_email_mailing_list_mode_frequency: "Users who enable mailing list mode will receive emails this often by default."
disable_mailing_list_mode: "Disallow users from enabling mailing list mode."
default_email_always: "Send an email notification even when the user is active by default."
default_email_previous_replies: "Include previous replies in emails by default."
@@ -2278,6 +2282,15 @@ en:
more_topics: "There were %{new_topics_since_seen} other new topics."
more_topics_category: "More new topics:"
mailing_list:
why: "All activity on %{site_link} for %{date}"
subject_template: "[%{site_name}] Summary for %{date}"
unsubscribe: "This summary is sent daily due to mailing list mode being enabled. To unsubscribe %{unsubscribe_link}."
from: "%{site_name} summary"
new_topics: "New topics"
topic_updates: "Topic updates"
view_this_topic: "View this topic"
back_to_top: "Back to top"
forgot_password:
subject_template: "[%{site_name}] Password reset"
text_body_template: |

View File

@@ -1128,6 +1128,9 @@ user_preferences:
default_email_private_messages: true
default_email_direct: true
default_email_mailing_list_mode: false
default_email_mailing_list_mode_frequency:
enum: 'MailingListModeSiteSetting'
default: 1
disable_mailing_list_mode:
default: false
client: true