settings: Added setting to turn on and off realm name in email subject.

Users having only account in one realm will not be distracted by realm
name in subject lines of every email.  Users who have multiple
accounts in realms can turn this setting on and receive a
corresponding realm name in email's subject.

Tweaked by tabbott to rebase and address a few small issues.

Fixes #5489.
This commit is contained in:
Roman Godov 2018-01-07 01:30:43 +03:00 committed by Tim Abbott
parent ecbb763e79
commit b875fe07eb
11 changed files with 53 additions and 10 deletions

View File

@ -1006,6 +1006,7 @@ function render(template_name, args) {
enable_offline_push_notifications: true, enable_online_push_notifications: true, enable_offline_push_notifications: true, enable_online_push_notifications: true,
enable_digest_emails: true, enable_digest_emails: true,
default_desktop_notifications: true, default_desktop_notifications: true,
realm_name_in_notifications: true,
}; };
var page_params = $.extend(page_param_checkbox_options, { var page_params = $.extend(page_param_checkbox_options, {
full_name: "Alyssa P. Hacker", password_auth_enabled: true, full_name: "Alyssa P. Hacker", password_auth_enabled: true,
@ -1018,7 +1019,8 @@ function render(template_name, args) {
"enable_sounds", "enable_offline_push_notifications", "enable_sounds", "enable_offline_push_notifications",
"enable_online_push_notifications", "enable_online_push_notifications",
"enable_digest_emails", "enable_digest_emails",
"default_desktop_notifications"]; "default_desktop_notifications",
"realm_name_in_notifications"];
// Render with all booleans set to true. // Render with all booleans set to true.
var html = render('settings_tab', {page_params: page_params}); var html = render('settings_tab', {page_params: page_params});

View File

@ -678,6 +678,8 @@ exports.handle_global_notification_updates = function (notification_name, settin
page_params.enable_digest_emails = setting; page_params.enable_digest_emails = setting;
} else if (notification_name === "pm_content_in_desktop_notifications") { } else if (notification_name === "pm_content_in_desktop_notifications") {
page_params.pm_content_in_desktop_notifications = setting; page_params.pm_content_in_desktop_notifications = setting;
} else if (notification_name === "realm_name_in_notifications") {
page_params.realm_name_in_notifications = setting;
} }
}; };

View File

@ -13,6 +13,7 @@ var notification_settings = [
"enable_stream_push_notifications", "enable_stream_push_notifications",
"enable_stream_sounds", "enable_stream_sounds",
"pm_content_in_desktop_notifications", "pm_content_in_desktop_notifications",
"realm_name_in_notifications",
]; ];
function maybe_bulk_update_stream_notification_setting(notification_checkbox, function maybe_bulk_update_stream_notification_setting(notification_checkbox,
@ -36,7 +37,7 @@ exports.set_up = function () {
notify_settings_status.hide(); notify_settings_status.hide();
if (!page_params.realm_show_digest_email) { if (!page_params.realm_show_digest_email) {
$("#other_notifications").hide(); $("#digest_container").hide();
} }
_.each(notification_settings, function (setting) { _.each(notification_settings, function (setting) {

View File

@ -153,9 +153,23 @@
{{t "Digest emails when I'm away" }} {{t "Digest emails when I'm away" }}
</label> </label>
</div> </div>
{{!-- If you add another control group here, make sure to change
$("#other_notifications").hide(); in settings.js to <div class="input-group" id="realm_name_in_notifications_container">
$("#digest_container").hide(); <label class="checkbox">
<input type="checkbox" name="realm_name_in_notifications" id="realm_name_in_notifications"
{{#if page_params.realm_name_in_notifications}}
checked="checked"
{{/if}} />
<span></span>
</label>
<label for="realm_name_in_notifications" class="inline-block">
{{t "Include organization name in subject of missed message emails" }}
</label>
</div>
{{!-- If we end up removing the last control group, make sure to change
$("#digest_container").hide(); in settings_notifications.js to
$("#other_notifications").hide();
--}} --}}
</div> </div>
</form> </form>

View File

@ -7,7 +7,7 @@ conversations and new users, while you were away.
{!go-to-the.md!} [Notifications](/#settings/notifications) {!go-to-the.md!} [Notifications](/#settings/notifications)
{!settings.md!} {!settings.md!}
2. Select the **Digest emails when I'm away** option under the 2. Select the **Send digest emails when I'm away** option under the
**Other notifications I want** section. **Other notification settings** section.
{!save-changes.md!} notification settings. {!save-changes.md!} notification settings.

View File

@ -297,6 +297,7 @@ def do_send_missedmessage_events_reply_in_zulip(user_profile: UserProfile,
'message_count': message_count, 'message_count': message_count,
'mention': missed_messages[0].is_stream_message(), 'mention': missed_messages[0].is_stream_message(),
'unsubscribe_link': unsubscribe_link, 'unsubscribe_link': unsubscribe_link,
'realm_name_in_notifications': user_profile.realm_name_in_notifications,
}) })
# If this setting (email mirroring integration) is enabled, only then # If this setting (email mirroring integration) is enabled, only then

View File

@ -41,7 +41,6 @@ def build_email(template_prefix: str, to_user_id: Optional[int]=None,
context = {} context = {}
context.update({ context.update({
'realm_name_in_notifications': False,
'support_email': FromAddress.SUPPORT, 'support_email': FromAddress.SUPPORT,
'email_images_base_uri': settings.ROOT_DOMAIN_URI + '/static/images/emails', 'email_images_base_uri': settings.ROOT_DOMAIN_URI + '/static/images/emails',
'physical_address': settings.PHYSICAL_ADDRESS, 'physical_address': settings.PHYSICAL_ADDRESS,

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-21 08:47
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('zerver', '0137_realm_upload_quota_gb'),
]
operations = [
migrations.AddField(
model_name='userprofile',
name='realm_name_in_notifications',
field=models.BooleanField(default=False),
),
]

View File

@ -561,6 +561,7 @@ class UserProfile(AbstractBaseUser, PermissionsMixin):
enable_online_push_notifications = models.BooleanField(default=False) # type: bool enable_online_push_notifications = models.BooleanField(default=False) # type: bool
enable_digest_emails = models.BooleanField(default=True) # type: bool enable_digest_emails = models.BooleanField(default=True) # type: bool
realm_name_in_notifications = models.BooleanField(default=False) # type: bool
# Old notification field superseded by existence of stream notification # Old notification field superseded by existence of stream notification
# settings. # settings.
@ -661,6 +662,7 @@ class UserProfile(AbstractBaseUser, PermissionsMixin):
enable_stream_push_notifications=bool, enable_stream_push_notifications=bool,
enable_stream_sounds=bool, enable_stream_sounds=bool,
pm_content_in_desktop_notifications=bool, pm_content_in_desktop_notifications=bool,
realm_name_in_notifications=bool,
) )
class Meta: class Meta:

View File

@ -135,6 +135,7 @@ class HomeTest(ZulipTestCase):
"realm_message_retention_days", "realm_message_retention_days",
"realm_name", "realm_name",
"realm_name_changes_disabled", "realm_name_changes_disabled",
"realm_name_in_notifications",
"realm_non_active_users", "realm_non_active_users",
"realm_notifications_stream_id", "realm_notifications_stream_id",
"realm_password_auth_enabled", "realm_password_auth_enabled",

View File

@ -169,8 +169,9 @@ def json_change_notify_settings(
enable_offline_push_notifications: Optional[bool]=REQ(validator=check_bool, default=None), enable_offline_push_notifications: Optional[bool]=REQ(validator=check_bool, default=None),
enable_online_push_notifications: Optional[bool]=REQ(validator=check_bool, default=None), enable_online_push_notifications: Optional[bool]=REQ(validator=check_bool, default=None),
enable_digest_emails: Optional[bool]=REQ(validator=check_bool, default=None), enable_digest_emails: Optional[bool]=REQ(validator=check_bool, default=None),
pm_content_in_desktop_notifications: Optional[bool]=REQ(validator=check_bool, default=None) pm_content_in_desktop_notifications: Optional[bool]=REQ(validator=check_bool, default=None),
) -> HttpResponse: realm_name_in_notifications: Optional[bool]=REQ(validator=check_bool, default=None)) \
-> HttpResponse:
result = {} result = {}
# Stream notification settings. # Stream notification settings.