mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-27 15:36:39 +08:00
Added user settings for email notifications [SCI-443]
This commit is contained in:
parent
8dc956010c
commit
5399033fce
7 changed files with 89 additions and 34 deletions
|
@ -95,28 +95,53 @@
|
|||
|
||||
// Setup notification checkbox buttons
|
||||
function notificationsSettings() {
|
||||
var recent_notification = $('[name="recent_notification"]');
|
||||
recent_notification
|
||||
.checkboxpicker({
|
||||
onActiveCls: 'btn-primary'
|
||||
});
|
||||
var notification_settings = [ "recent_notification",
|
||||
"assignments_notification" ]
|
||||
|
||||
if ( recent_notification.attr('value') === 'true' ) {
|
||||
recent_notification.prop('checked', true);
|
||||
} else {
|
||||
recent_notification.prop('checked', false);
|
||||
for (var i = 0; i < notification_settings.length; i++ ) {
|
||||
var setting = $('[name="' + notification_settings[i] + '"]');
|
||||
var dependant = $('[name="' + notification_settings[i] + '_email"]');
|
||||
setting
|
||||
.checkboxpicker({
|
||||
onActiveCls: 'btn-primary'
|
||||
}).change(function() {
|
||||
if ( $(this).prop('checked') ) {
|
||||
enableDependant($('[name="' + $(this).attr('name') + '_email"]'));
|
||||
} else {
|
||||
disableDependant($('[name="' + $(this).attr('name') + '_email"]'));
|
||||
}
|
||||
});
|
||||
|
||||
if ( setting.attr('value') === 'true' ) {
|
||||
setting.prop('checked', true);
|
||||
} else {
|
||||
setting.prop('checked', false);
|
||||
disableDependant(dependant);
|
||||
}
|
||||
|
||||
setEmailSwitch(dependant);
|
||||
}
|
||||
|
||||
var assignments_notification = $('[name="assignments_notification"]');
|
||||
assignments_notification
|
||||
.checkboxpicker({
|
||||
onActiveCls: 'btn-primary'
|
||||
});
|
||||
function setEmailSwitch(setting) {
|
||||
setting
|
||||
.checkboxpicker({
|
||||
onActiveCls: 'btn-primary'
|
||||
});
|
||||
if ( setting.attr('value') === 'true' ) {
|
||||
setting.prop('checked', true);
|
||||
enableDependant(setting);
|
||||
} else {
|
||||
setting.prop('checked', false);
|
||||
}
|
||||
}
|
||||
|
||||
if ( assignments_notification.attr('value') === 'true' ) {
|
||||
assignments_notification.prop('checked', true);
|
||||
} else {
|
||||
assignments_notification.prop('checked', false);
|
||||
function disableDependant(dependant) {
|
||||
dependant.checkboxpicker().prop('disabled', true);
|
||||
dependant.checkboxpicker().prop('checked', false);
|
||||
}
|
||||
|
||||
function enableDependant(dependant) {
|
||||
dependant.checkboxpicker().prop('disabled', false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -458,8 +458,13 @@ class Users::SettingsController < ApplicationController
|
|||
end
|
||||
|
||||
def notifications_settings
|
||||
@user.assignments_notification = params[:assignments_notification]
|
||||
@user.recent_notification = params[:recent_notification]
|
||||
@user.assignments_notification =
|
||||
params[:assignments_notification] ? true : false
|
||||
@user.recent_notification = params[:recent_notification] ? true : false
|
||||
@user.recent_notification_email =
|
||||
params[:recent_notification_email] ? true : false
|
||||
@user.assignments_notification_email =
|
||||
params[:assignments_notification_email] ? true : false
|
||||
|
||||
if @user.save
|
||||
respond_to do |format|
|
||||
|
|
|
@ -33,7 +33,8 @@ class UserNotification < ActiveRecord::Base
|
|||
def send_email
|
||||
if self.notification.type_of == 'system_message'
|
||||
send_email_notification(self.user, self.notification)
|
||||
elsif self.user.assignments_notification || self.user.recent_notification
|
||||
elsif self.user.assignments_notification_email ||
|
||||
self.user.recent_notification_email
|
||||
send_email_notification(self.user, self.notification)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -59,6 +59,13 @@
|
|||
<%= f.label t('notifications.form.assignments'), class: 'visible-sm visible-xs' %>
|
||||
<%= check_box_tag :assignments_notification, @user.assignments_notification %>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-3 col-text-center">
|
||||
<h5 class="hidden-sm hidden-xs"><%= t('notifications.form.email_settings') %></h5>
|
||||
<%= f.label t('notifications.form.recent_notification'), class: 'visible-sm visible-xs'%> <br>
|
||||
<%= check_box_tag :recent_notification_email, @user.recent_notification_email %> <br>
|
||||
<%= f.label t('notifications.form.assignments'), class: 'visible-sm visible-xs' %>
|
||||
<%= check_box_tag :assignments_notification_email, @user.assignments_notification_email %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
@ -1514,6 +1514,7 @@ en:
|
|||
form:
|
||||
assignments: "Assignments notifications"
|
||||
recent_notification: "Change notifications"
|
||||
email_settings: "E-mail notifications"
|
||||
show_all: "Show all notifications"
|
||||
show_more: "Show more notifications"
|
||||
no_notifications: "No notifications."
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
class AddEmailNotificationSettingsToUser < ActiveRecord::Migration
|
||||
def up
|
||||
add_column :users, :assignments_notification_email, :boolean, default: false
|
||||
add_column :users, :recent_notification_email, :boolean, default: false
|
||||
|
||||
User.update_all(assignments_notification_email: false,
|
||||
recent_notification_email: false)
|
||||
end
|
||||
|
||||
def down
|
||||
remove_column :users, :assignments_notification_email
|
||||
remove_column :users, :recent_notification_email
|
||||
end
|
||||
end
|
28
db/schema.rb
28
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: 20161004074754) do
|
||||
ActiveRecord::Schema.define(version: 20161006065203) 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: 20161004074754) 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: 20161004074754) 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,10 +658,12 @@ ActiveRecord::Schema.define(version: 20161004074754) 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.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
|
||||
end
|
||||
|
||||
add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree
|
||||
|
|
Loading…
Add table
Reference in a new issue