diff --git a/app/assets/javascripts/users/settings/preferences.js b/app/assets/javascripts/users/settings/preferences.js
index 88de044f6..0677cb7f6 100644
--- a/app/assets/javascripts/users/settings/preferences.js
+++ b/app/assets/javascripts/users/settings/preferences.js
@@ -144,6 +144,7 @@
dependant.checkboxpicker().prop('disabled', false);
}
+ // Initialize system messages
var system_message_notification = $('[name="system_message_notification"]');
system_message_notification
.checkboxpicker({
@@ -151,6 +152,17 @@
});
system_message_notification.prop('checked', true);
system_message_notification.prop('disabled', true);
+
+ // Initialize system messages email
+ var system_message_notification_mail = $('[name="system_message_notification_email"]');
+ system_message_notification_mail
+ .checkboxpicker({
+ onActiveCls: 'btn-primary'
+ });
+ system_message_notification_mail.prop(
+ 'checked',
+ system_message_notification_mail.attr('value') === 'true'
+ );
}
// triggers submit action when the user clicks
diff --git a/app/controllers/users/settings_controller.rb b/app/controllers/users/settings_controller.rb
index 7e8f13c3c..aa65437c2 100644
--- a/app/controllers/users/settings_controller.rb
+++ b/app/controllers/users/settings_controller.rb
@@ -465,6 +465,8 @@ class Users::SettingsController < ApplicationController
params[:recent_notification_email] ? true : false
@user.assignments_notification_email =
params[:assignments_notification_email] ? true : false
+ @user.system_message_notification_email =
+ params[:system_message_notification_email] ? true : false
if @user.save
respond_to do |format|
diff --git a/app/models/user_notification.rb b/app/models/user_notification.rb
index d56cb3998..8ef982b3d 100644
--- a/app/models/user_notification.rb
+++ b/app/models/user_notification.rb
@@ -33,7 +33,10 @@ class UserNotification < ActiveRecord::Base
def send_email
case notification.type_of
when 'system_message'
- send_email_notification(user, notification)
+ send_email_notification(
+ user,
+ notification
+ ) if user.system_message_notification_email
when 'assignment'
send_email_notification(
user,
diff --git a/app/views/users/settings/preferences.html.erb b/app/views/users/settings/preferences.html.erb
index e5bfe2b6b..638a49dfd 100644
--- a/app/views/users/settings/preferences.html.erb
+++ b/app/views/users/settings/preferences.html.erb
@@ -64,11 +64,13 @@
<%= check_box_tag :system_message_notification %>
-
<%= t('notifications.form.email_settings') %>
+ <%= t('notifications.email_settings') %>
<%= f.label t('notifications.form.recent_notification'), class: 'visible-sm visible-xs'%>
<%= check_box_tag :recent_notification_email, @user.recent_notification_email %>
<%= f.label t('notifications.form.assignments'), class: 'visible-sm visible-xs' %>
- <%= check_box_tag :assignments_notification_email, @user.assignments_notification_email %>
+ <%= check_box_tag :assignments_notification_email, @user.assignments_notification_email %>
+ <%= f.label t('notifications.form.system_message'), class: 'visible-sm visible-xs' %>
+ <%= check_box_tag :system_message_notification_email, @user.system_message_notification_email %>
<% end %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 411592bcf..3505fb942 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1500,10 +1500,11 @@ en:
notifications:
title: "Notifications"
+ email_settings: "E-mail notifications"
form:
assignments: "Assignments notifications"
recent_notification: "Change notifications"
- email_settings: "E-mail notifications"
+ system_message: "Update notifications"
show_all: "Show all notifications"
show_more: "Show more notifications"
no_notifications: "No notifications."
diff --git a/db/migrate/20161012112900_add_email_system_notification_setting_to_user.rb b/db/migrate/20161012112900_add_email_system_notification_setting_to_user.rb
new file mode 100644
index 000000000..90e760b2e
--- /dev/null
+++ b/db/migrate/20161012112900_add_email_system_notification_setting_to_user.rb
@@ -0,0 +1,14 @@
+class AddEmailSystemNotificationSettingToUser < ActiveRecord::Migration
+ def up
+ add_column :users,
+ :system_message_notification_email,
+ :boolean,
+ default: false
+
+ User.update_all(system_message_notification_email: false)
+ end
+
+ def down
+ remove_column :users, :system_message_notification_email
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 02905cd39..4b05fc448 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20161006065203) do
+ActiveRecord::Schema.define(version: 20161012112900) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -628,20 +628,20 @@ ActiveRecord::Schema.define(version: 20161006065203) do
add_index "user_projects", ["user_id"], name: "index_user_projects_on_user_id", using: :btree
create_table "users", force: :cascade do |t|
- t.string "full_name", null: false
- t.string "initials", null: false
- t.string "email", default: "", null: false
- t.string "encrypted_password", default: "", null: false
+ t.string "full_name", null: false
+ t.string "initials", null: false
+ t.string "email", default: "", null: false
+ t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
- t.integer "sign_in_count", default: 0, null: false
+ t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.string "avatar_file_name"
t.string "avatar_content_type"
t.integer "avatar_file_size"
@@ -650,7 +650,7 @@ ActiveRecord::Schema.define(version: 20161006065203) do
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "unconfirmed_email"
- t.string "time_zone", default: "UTC"
+ t.string "time_zone", default: "UTC"
t.string "invitation_token"
t.datetime "invitation_created_at"
t.datetime "invitation_sent_at"
@@ -658,12 +658,13 @@ ActiveRecord::Schema.define(version: 20161006065203) do
t.integer "invitation_limit"
t.integer "invited_by_id"
t.string "invited_by_type"
- t.integer "invitations_count", default: 0
- t.integer "tutorial_status", default: 0, null: false
- t.boolean "assignments_notification", default: true
- t.boolean "recent_notification", default: true
- t.boolean "assignments_notification_email", default: false
- t.boolean "recent_notification_email", default: false
+ t.integer "invitations_count", default: 0
+ t.integer "tutorial_status", default: 0, null: false
+ t.boolean "assignments_notification", default: true
+ t.boolean "recent_notification", default: true
+ t.boolean "assignments_notification_email", default: false
+ t.boolean "recent_notification_email", default: false
+ t.boolean "system_message_notification_email", default: false
end
add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree