From 42a30576e3c2e07e427854b6b53a9d1666de9490 Mon Sep 17 00:00:00 2001 From: zmagod Date: Tue, 11 Oct 2016 08:33:50 +0200 Subject: [PATCH 1/7] removed introductory popup [fixes SCI-534] --- .../javascripts/projects/introdutory_popup.js | 10 ------- app/views/projects/index.html.erb | 4 --- .../index/_introductory_popup.html.erb | 27 ------------------ config/initializers/assets.rb | 1 - config/locales/en.yml | 11 ------- public/images/introductory_popup/image1a.png | Bin 18337 -> 0 bytes public/images/introductory_popup/image2a.png | Bin 9043 -> 0 bytes public/images/introductory_popup/image3a.png | Bin 7043 -> 0 bytes public/images/introductory_popup/image4a.png | Bin 13790 -> 0 bytes 9 files changed, 53 deletions(-) delete mode 100644 app/assets/javascripts/projects/introdutory_popup.js delete mode 100644 app/views/projects/index/_introductory_popup.html.erb delete mode 100644 public/images/introductory_popup/image1a.png delete mode 100644 public/images/introductory_popup/image2a.png delete mode 100644 public/images/introductory_popup/image3a.png delete mode 100644 public/images/introductory_popup/image4a.png diff --git a/app/assets/javascripts/projects/introdutory_popup.js b/app/assets/javascripts/projects/introdutory_popup.js deleted file mode 100644 index 95b11a1cc..000000000 --- a/app/assets/javascripts/projects/introdutory_popup.js +++ /dev/null @@ -1,10 +0,0 @@ -(function(){ - // display introductory modal - if( Cookies.get('popup-release-shown') !== 'yes'){ - $("#introductory-popup-modal").modal('show',{ - backdrop: true, - keyboard: false, - }); - Cookies.set('popup-release-shown', 'yes', { expires: 7300 }); - } -})(); diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb index e102948ab..cf0129a2c 100644 --- a/app/views/projects/index.html.erb +++ b/app/views/projects/index.html.erb @@ -132,10 +132,6 @@ <% end %> - -<%= render partial: 'projects/index/introductory_popup' %> -<%= javascript_include_tag 'projects/introdutory_popup' %> - <% if @projects_by_orgs.length > 0 %> <% @projects_by_orgs.each do |org, projects| %> <%= render partial: "projects/index/org_projects", locals: {org: org, projects: projects} %> diff --git a/app/views/projects/index/_introductory_popup.html.erb b/app/views/projects/index/_introductory_popup.html.erb deleted file mode 100644 index 6498e0848..000000000 --- a/app/views/projects/index/_introductory_popup.html.erb +++ /dev/null @@ -1,27 +0,0 @@ - - diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 11ad88bd0..f1a105b3b 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -58,7 +58,6 @@ Rails.application.config.assets.precompile += %w(jszip.min.js) Rails.application.config.assets.precompile += %w(assets.js) Rails.application.config.assets.precompile += %w(comments.js) Rails.application.config.assets.precompile += %w(projects/show.js) -Rails.application.config.assets.precompile += %w(projects/introdutory_popup.js) Rails.application.config.assets.precompile += %w(notifications.js) # Libraries needed for Handsontable formulas diff --git a/config/locales/en.yml b/config/locales/en.yml index c4a28e4ec..c34d5e3b6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1498,17 +1498,6 @@ en: archive_project_html: "Archive Demo project - qPCR by clicking on the down arrow . You can always access the Archive by clicking the icon on the top right side of the Dashboard and restore any item you have archived." goodbye_message: "To repeat the tutorial, go to your Settings and open My preferences tab. Click on the Repeat tutorial button and watch the tutorial as many times needed." - introductory: - popup-title: "Release notes - sciNote version 1.3" - sentence_one_html: "For this sciNote version we focused on improving Tables in Protocol steps and Results. Tables now support basic math operations (addition, subtraction, multiplication, division) just like Excel spreadsheets do. " - sentence_two_html: "You can also use the functions listed below:
Some other improvements have been made in sciNote as well. Let’s take a look at them." - sentence_three_html: "Extended length of text field
You can now write names of Experiments and Protocol steps with limitation of 255 characters and descriptions with 10,000 characters." - sentence_four_html: "Redesigned Navigation pane
We have added the connecting line of Experiments in the Navigation pane, where you can expand or collapse the Experiments and get a better overview." - sentence_five_html: "Reorder of Comments and Messages
The Comments section in Protocols steps and Results has been moved bellow the description (it’s not in a separate tab any more). Also the order of Messages in the Project and Task cards has been changed. The most recent Messages are now seen at the end of the correspondence." - sentence_six_html: "Deleting Results
You can now delete Results. First you archive them, then you go to the Archive and delete them. This way you have a \"safety net\" against deleting Results by accident." - sentence_seven_html: "Info tab
In the upper right corner of the Dashboard you can now access the Info button, where you can find links to support on how to use sciNote features (e.g., Tutorials, FAQ) or how to change your current sciNote Plan (e.g., Professional support and customization, Plans). In case you have some other questions or suggestions, click on the Contact us link." - confim: "OK, got it" - notifications: title: "Notifications" form: diff --git a/public/images/introductory_popup/image1a.png b/public/images/introductory_popup/image1a.png deleted file mode 100644 index 30abdba182c1b275e2847c15bf0e80e084ea8923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18337 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 diff --git a/public/images/introductory_popup/image2a.png b/public/images/introductory_popup/image2a.png deleted file mode 100644 index 9ecf63324101be2830c9fcd95210adb369302d30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9043 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 F{sUWb^{D^= diff --git a/public/images/introductory_popup/image4a.png b/public/images/introductory_popup/image4a.png deleted file mode 100644 index 446678a47822201b854c7b0bc3de956a76d62ba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13790 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 b=mn%lHrb8eE`i_4LVKyCsrXagGW@>*Tpewb From ea305b356aeab9ed539fc16f1cecccb54afe62d0 Mon Sep 17 00:00:00 2001 From: zmagod Date: Tue, 11 Oct 2016 09:10:12 +0200 Subject: [PATCH 2/7] fixes protocol steps [fixes SCI-548] --- app/views/steps/_step.html.erb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/views/steps/_step.html.erb b/app/views/steps/_step.html.erb index 00ae5e601..ba6ed12a8 100644 --- a/app/views/steps/_step.html.erb +++ b/app/views/steps/_step.html.erb @@ -31,8 +31,6 @@
- <% if @protocol.in_module? %> -
<% if step.description.blank? %> <%= t("protocols.steps.no_description") %> @@ -126,8 +124,6 @@
<% end %> - - <% end %>
From 8dc956010cdbf8aeebd56f2f343c880d0ca1fea6 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Wed, 5 Oct 2016 10:52:27 +0200 Subject: [PATCH 3/7] Initial code commit [SCI-443] --- app/helpers/notifications_helper.rb | 4 ++++ app/mailers/app_mailer.rb | 10 +++++++++- app/models/user_notification.rb | 12 ++++++++++++ app/views/users/mailer/notification.html.erb | 9 +++++++++ config/locales/en.yml | 7 +++++-- 5 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 app/views/users/mailer/notification.html.erb diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb index 19364cd8d..e1f3eb61c 100644 --- a/app/helpers/notifications_helper.rb +++ b/app/helpers/notifications_helper.rb @@ -13,4 +13,8 @@ module NotificationsHelper notification.save! end end + + def send_email_notification(user, notification) + AppMailer.delay.notification(user, notification) + end end diff --git a/app/mailers/app_mailer.rb b/app/mailers/app_mailer.rb index fcee5ca57..b0f0a8ef6 100644 --- a/app/mailers/app_mailer.rb +++ b/app/mailers/app_mailer.rb @@ -12,4 +12,12 @@ class AppMailer < Devise::Mailer headers = { to: @user.email, subject: (I18n.t('mailer.invitation_to_organization.subject')) }.merge(opts) mail(headers) end -end \ No newline at end of file + + def notification(user, notification) + @user = user + @notification = notification + headers = { to: @user.email, + subject: "#{I18n.t('notifications.email_title')} - #{notification.title}" } + mail(headers) + end +end diff --git a/app/models/user_notification.rb b/app/models/user_notification.rb index a99b05895..4fbce6ffd 100644 --- a/app/models/user_notification.rb +++ b/app/models/user_notification.rb @@ -1,7 +1,11 @@ class UserNotification < ActiveRecord::Base + include NotificationsHelper + belongs_to :user belongs_to :notification + after_save :send_email + def self.last_notifications(user, last_notification_id = nil, per_page = 10) last_notification_id = 999999999999999999999999 if last_notification_id < 1 Notification.joins(:user_notifications) @@ -25,4 +29,12 @@ class UserNotification < ActiveRecord::Base def self.seen_by_user(user) where(user: user).where(checked: false).update_all(checked: true) end + + 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 + send_email_notification(self.user, self.notification) + end + end end diff --git a/app/views/users/mailer/notification.html.erb b/app/views/users/mailer/notification.html.erb new file mode 100644 index 000000000..b5bc5464a --- /dev/null +++ b/app/views/users/mailer/notification.html.erb @@ -0,0 +1,9 @@ +

Hello <%= @user.name %>!

+ +

You got new notification!

+ +

Type: <%= I18n.t("notifications.types.#{@notification.type_of}") %>

+ +

<%= @notification.title %>

+ +

<%= @notification.message %>

diff --git a/config/locales/en.yml b/config/locales/en.yml index c4a28e4ec..cb025fa2a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1514,12 +1514,15 @@ en: form: assignments: "Assignments notifications" recent_notification: "Change notifications" - filter: "Filter" show_all: "Show all notifications" show_more: "Show more notifications" no_notifications: "No notifications." no_recent: "No recent notifications." - + types: + assignment: "Assignment" + recent_changes: "Recent changes" + system_message: "sciNote system message" + email_title: "sciNote notification" # This section contains general words that can be used in any parts of # application. From 5399033fce690ba5a52add51b6b74263cd555a39 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Thu, 6 Oct 2016 13:47:48 +0200 Subject: [PATCH 4/7] Added user settings for email notifications [SCI-443] --- .../javascripts/users/settings/preferences.js | 61 +++++++++++++------ app/controllers/users/settings_controller.rb | 9 ++- app/models/user_notification.rb | 3 +- app/views/users/settings/preferences.html.erb | 7 +++ config/locales/en.yml | 1 + ...add_email_notification_settings_to_user.rb | 14 +++++ db/schema.rb | 28 +++++---- 7 files changed, 89 insertions(+), 34 deletions(-) create mode 100644 db/migrate/20161006065203_add_email_notification_settings_to_user.rb diff --git a/app/assets/javascripts/users/settings/preferences.js b/app/assets/javascripts/users/settings/preferences.js index 20c108e00..b0c7827f7 100644 --- a/app/assets/javascripts/users/settings/preferences.js +++ b/app/assets/javascripts/users/settings/preferences.js @@ -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); } } diff --git a/app/controllers/users/settings_controller.rb b/app/controllers/users/settings_controller.rb index bd89daef8..7e8f13c3c 100644 --- a/app/controllers/users/settings_controller.rb +++ b/app/controllers/users/settings_controller.rb @@ -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| diff --git a/app/models/user_notification.rb b/app/models/user_notification.rb index 4fbce6ffd..b9819ca59 100644 --- a/app/models/user_notification.rb +++ b/app/models/user_notification.rb @@ -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 diff --git a/app/views/users/settings/preferences.html.erb b/app/views/users/settings/preferences.html.erb index b0df12566..d9c2ec581 100644 --- a/app/views/users/settings/preferences.html.erb +++ b/app/views/users/settings/preferences.html.erb @@ -59,6 +59,13 @@ <%= f.label t('notifications.form.assignments'), class: 'visible-sm visible-xs' %> <%= check_box_tag :assignments_notification, @user.assignments_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 %> +
<% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index cb025fa2a..3bef47e81 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -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." diff --git a/db/migrate/20161006065203_add_email_notification_settings_to_user.rb b/db/migrate/20161006065203_add_email_notification_settings_to_user.rb new file mode 100644 index 000000000..31f9e8bad --- /dev/null +++ b/db/migrate/20161006065203_add_email_notification_settings_to_user.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index 4a0b0e388..02905cd39 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: 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 From 3f219e1bfecca9612c45a2be96d75d793bbaca57 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Thu, 6 Oct 2016 14:07:40 +0200 Subject: [PATCH 5/7] Hound code style fixes [SCI-443] --- app/models/user_notification.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/models/user_notification.rb b/app/models/user_notification.rb index b9819ca59..082df8cd7 100644 --- a/app/models/user_notification.rb +++ b/app/models/user_notification.rb @@ -31,11 +31,11 @@ class UserNotification < ActiveRecord::Base end def send_email - if self.notification.type_of == 'system_message' - send_email_notification(self.user, self.notification) - elsif self.user.assignments_notification_email || - self.user.recent_notification_email - send_email_notification(self.user, self.notification) + if notification.type_of == 'system_message' + send_email_notification(user, notification) + elsif user.assignments_notification_email || + user.recent_notification_email + send_email_notification(user, notification) end end end From 90c853743ce64784b0d49351329489ea167378ab Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Fri, 7 Oct 2016 09:45:30 +0200 Subject: [PATCH 6/7] Additional fixes to email markup and logic [SCI-443] --- app/mailers/app_mailer.rb | 6 ++++-- app/models/user_notification.rb | 16 ++++++++++++---- app/views/users/mailer/notification.html.erb | 2 +- config/locales/en.yml | 2 +- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/mailers/app_mailer.rb b/app/mailers/app_mailer.rb index b0f0a8ef6..d72873ea2 100644 --- a/app/mailers/app_mailer.rb +++ b/app/mailers/app_mailer.rb @@ -16,8 +16,10 @@ class AppMailer < Devise::Mailer def notification(user, notification) @user = user @notification = notification - headers = { to: @user.email, - subject: "#{I18n.t('notifications.email_title')} - #{notification.title}" } + headers = { + to: @user.email, + subject: I18n.t('notifications.email_title') + } mail(headers) end end diff --git a/app/models/user_notification.rb b/app/models/user_notification.rb index 082df8cd7..d56cb3998 100644 --- a/app/models/user_notification.rb +++ b/app/models/user_notification.rb @@ -31,11 +31,19 @@ class UserNotification < ActiveRecord::Base end def send_email - if notification.type_of == 'system_message' - send_email_notification(user, notification) - elsif user.assignments_notification_email || - user.recent_notification_email + case notification.type_of + when 'system_message' send_email_notification(user, notification) + when 'assignment' + send_email_notification( + user, + notification + ) if user.assignments_notification_email + when 'recent_changes' + send_email_notification( + user, + notification + ) if user.recent_notification_email end end end diff --git a/app/views/users/mailer/notification.html.erb b/app/views/users/mailer/notification.html.erb index b5bc5464a..b517ee70e 100644 --- a/app/views/users/mailer/notification.html.erb +++ b/app/views/users/mailer/notification.html.erb @@ -1,6 +1,6 @@

Hello <%= @user.name %>!

-

You got new notification!

+

<%= I18n.t("notifications.email_title") %>

Type: <%= I18n.t("notifications.types.#{@notification.type_of}") %>

diff --git a/config/locales/en.yml b/config/locales/en.yml index 3bef47e81..68e7f012f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1523,7 +1523,7 @@ en: assignment: "Assignment" recent_changes: "Recent changes" system_message: "sciNote system message" - email_title: "sciNote notification" + email_title: "You've received a sciNote notification!" # This section contains general words that can be used in any parts of # application. From 4c6a60c2491df25d4dbd14e2ce92c9ee7117b6da Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Tue, 11 Oct 2016 16:46:20 +0200 Subject: [PATCH 7/7] Added html_safe to notification email template --- app/views/users/mailer/notification.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/users/mailer/notification.html.erb b/app/views/users/mailer/notification.html.erb index b517ee70e..f8ad84d77 100644 --- a/app/views/users/mailer/notification.html.erb +++ b/app/views/users/mailer/notification.html.erb @@ -4,6 +4,6 @@

Type: <%= I18n.t("notifications.types.#{@notification.type_of}") %>

-

<%= @notification.title %>

+

<%= @notification.title.html_safe %>

-

<%= @notification.message %>

+

<%= @notification.message.html_safe %>