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 %>
- + <%= 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