From a2213e23b3e7f77077ecb22bfb3cfc39ee04c210 Mon Sep 17 00:00:00 2001 From: Mojca Lorber Date: Wed, 2 Nov 2016 11:52:41 +0100 Subject: [PATCH 1/5] add notification for removing user from team and removing user from project --- app/controllers/user_projects_controller.rb | 21 +++++++++++++++++++ app/controllers/users/settings_controller.rb | 22 ++++++++++++++------ app/models/activity.rb | 2 +- config/locales/en.yml | 1 + 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/app/controllers/user_projects_controller.rb b/app/controllers/user_projects_controller.rb index 14aadd776..c736795cf 100644 --- a/app/controllers/user_projects_controller.rb +++ b/app/controllers/user_projects_controller.rb @@ -191,6 +191,7 @@ class UserProjectsController < ApplicationController unassigned_by_user: current_user.full_name ) ) + generate_notification(current_user, @up.user, @project) respond_to do |format| format.html { @@ -275,6 +276,26 @@ class UserProjectsController < ApplicationController end end + def generate_notification(user, target_user, project) + title = I18n.t( + "activities.unassign_user_from_project", + unassigned_user: target_user.full_name, + project: project.name, + unassigned_by_user: user.full_name + ) + message = "#{I18n.t('search.index.project')} #{@project.name}" + notification = Notification.create( + type_of: :assignment, + title: + ActionController::Base.helpers.sanitize(title), + message: + ActionController::Base.helpers.sanitize(message) + ) + if target_user.assignments_notification + UserNotification.create(notification: notification, user: target_user) + end + end + def init_gui @users = @project.unassigned_users end diff --git a/app/controllers/users/settings_controller.rb b/app/controllers/users/settings_controller.rb index 931773186..d3d5e03f9 100644 --- a/app/controllers/users/settings_controller.rb +++ b/app/controllers/users/settings_controller.rb @@ -224,8 +224,8 @@ class Users::SettingsController < ApplicationController generate_notification(@user_organization.user, @new_user_org.user, - @new_user_org.role_str, - @new_user_org.organization) + @new_user_org.organization, + @new_user_org.role_str) flash[:notice] = I18n.t( 'users.settings.organizations.edit.modal_add_user.existing_flash_success', @@ -409,7 +409,10 @@ class Users::SettingsController < ApplicationController ) flash.keep(:notice) end - + generate_notification(@user_organization.user, + @user_org.user, + @user_org.organization, + false) format.json { render json: { status: :ok @@ -579,12 +582,19 @@ class Users::SettingsController < ApplicationController ) end - def generate_notification(user, target_user, role, org) - title = I18n.t('notifications.assign_user_to_organization', + def generate_notification(user, target_user, org, role) + if role + title = I18n.t('notifications.assign_user_to_organization', assigned_user: target_user.name, role: role, organization: org.name, assigned_by_user: user.name) + else + title = I18n.t('notifications.unassign_user_from_organization', + unassigned_user: target_user.name, + organization: org.name, + unassigned_by_user: user.name) + end message = "#{I18n.t('search.index.organization')} #{org.name}" notification = Notification.create( @@ -592,7 +602,7 @@ class Users::SettingsController < ApplicationController title: ActionController::Base.helpers.sanitize(title), message: - ActionController::Base.helpers.sanitize(message), + ActionController::Base.helpers.sanitize(message), ) if target_user.assignments_notification diff --git a/app/models/activity.rb b/app/models/activity.rb index 9d00b9453..c1f3d3dd7 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -54,7 +54,7 @@ class Activity < ActiveRecord::Base private def generate_notification - if %w(assign_user_to_project assign_user_to_module).include? type_of + if %w(assign_user_to_project assign_user_to_module unassign_user_from_module).include? type_of notification_type = :assignment else notification_type = :recent_changes diff --git a/config/locales/en.yml b/config/locales/en.yml index ce68913e1..64183246c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1510,6 +1510,7 @@ en: system_message: "sciNote system message" email_title: "You've received a sciNote notification!" assign_user_to_organization: "%{assigned_user} was added as %{role} to team %{organization} by %{assigned_by_user}." + unassign_user_from_organization: "%{unassigned_user} was removed from team %{organization} by %{unassigned_by_user}." # This section contains general words that can be used in any parts of # application. From 749b1089285e9dcee175077fc67cf5fbf4848dbf Mon Sep 17 00:00:00 2001 From: Mojca Lorber Date: Wed, 2 Nov 2016 13:32:15 +0100 Subject: [PATCH 2/5] fix hound --- app/controllers/user_projects_controller.rb | 10 ++++----- app/controllers/users/settings_controller.rb | 22 ++++++++++---------- app/models/activity.rb | 3 ++- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/app/controllers/user_projects_controller.rb b/app/controllers/user_projects_controller.rb index c736795cf..fb5aee4b4 100644 --- a/app/controllers/user_projects_controller.rb +++ b/app/controllers/user_projects_controller.rb @@ -277,12 +277,10 @@ class UserProjectsController < ApplicationController end def generate_notification(user, target_user, project) - title = I18n.t( - "activities.unassign_user_from_project", - unassigned_user: target_user.full_name, - project: project.name, - unassigned_by_user: user.full_name - ) + title = I18n.t('activities.unassign_user_from_project', + unassigned_user: target_user.full_name, + project: project.name, + unassigned_by_user: user.full_name) message = "#{I18n.t('search.index.project')} #{@project.name}" notification = Notification.create( type_of: :assignment, diff --git a/app/controllers/users/settings_controller.rb b/app/controllers/users/settings_controller.rb index d3d5e03f9..c84c02620 100644 --- a/app/controllers/users/settings_controller.rb +++ b/app/controllers/users/settings_controller.rb @@ -410,9 +410,9 @@ class Users::SettingsController < ApplicationController flash.keep(:notice) end generate_notification(@user_organization.user, - @user_org.user, - @user_org.organization, - false) + @user_org.user, + @user_org.organization, + false) format.json { render json: { status: :ok @@ -585,15 +585,15 @@ class Users::SettingsController < ApplicationController def generate_notification(user, target_user, org, role) if role title = I18n.t('notifications.assign_user_to_organization', - assigned_user: target_user.name, - role: role, - organization: org.name, - assigned_by_user: user.name) + assigned_user: target_user.name, + role: role, + organization: org.name, + assigned_by_user: user.name) else title = I18n.t('notifications.unassign_user_from_organization', - unassigned_user: target_user.name, - organization: org.name, - unassigned_by_user: user.name) + unassigned_user: target_user.name, + organization: org.name, + unassigned_by_user: user.name) end message = "#{I18n.t('search.index.organization')} #{org.name}" @@ -602,7 +602,7 @@ class Users::SettingsController < ApplicationController title: ActionController::Base.helpers.sanitize(title), message: - ActionController::Base.helpers.sanitize(message), + ActionController::Base.helpers.sanitize(message) ) if target_user.assignments_notification diff --git a/app/models/activity.rb b/app/models/activity.rb index c1f3d3dd7..975038437 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -54,7 +54,8 @@ class Activity < ActiveRecord::Base private def generate_notification - if %w(assign_user_to_project assign_user_to_module unassign_user_from_module).include? type_of + if %w(assign_user_to_project + assign_user_to_module unassign_user_from_module).include? type_of notification_type = :assignment else notification_type = :recent_changes From 27c83992b41b0c484712d1fdd74eb8d9050eb6af Mon Sep 17 00:00:00 2001 From: Mojca Lorber Date: Mon, 7 Nov 2016 15:31:06 +0100 Subject: [PATCH 3/5] refactoring notification method --- app/controllers/user_projects_controller.rb | 22 ++---------- app/controllers/users/settings_controller.rb | 33 +++--------------- app/helpers/notifications_helper.rb | 36 ++++++++++++++++++++ 3 files changed, 43 insertions(+), 48 deletions(-) diff --git a/app/controllers/user_projects_controller.rb b/app/controllers/user_projects_controller.rb index fb5aee4b4..9097c2bf1 100644 --- a/app/controllers/user_projects_controller.rb +++ b/app/controllers/user_projects_controller.rb @@ -1,4 +1,6 @@ class UserProjectsController < ApplicationController + include NotificationsHelper + before_action :load_vars before_action :check_view_tab_permissions, only: [ :index ] before_action :check_view_permissions, only: [ :index_edit ] @@ -191,7 +193,7 @@ class UserProjectsController < ApplicationController unassigned_by_user: current_user.full_name ) ) - generate_notification(current_user, @up.user, @project) + generate_notification(current_user, @up.user, false, false, @project) respond_to do |format| format.html { @@ -276,24 +278,6 @@ class UserProjectsController < ApplicationController end end - def generate_notification(user, target_user, project) - title = I18n.t('activities.unassign_user_from_project', - unassigned_user: target_user.full_name, - project: project.name, - unassigned_by_user: user.full_name) - message = "#{I18n.t('search.index.project')} #{@project.name}" - notification = Notification.create( - type_of: :assignment, - title: - ActionController::Base.helpers.sanitize(title), - message: - ActionController::Base.helpers.sanitize(message) - ) - if target_user.assignments_notification - UserNotification.create(notification: notification, user: target_user) - end - end - def init_gui @users = @project.unassigned_users end diff --git a/app/controllers/users/settings_controller.rb b/app/controllers/users/settings_controller.rb index c84c02620..dc8d5a550 100644 --- a/app/controllers/users/settings_controller.rb +++ b/app/controllers/users/settings_controller.rb @@ -1,5 +1,6 @@ class Users::SettingsController < ApplicationController include UsersGenerator + include NotificationsHelper before_action :load_user, only: [ :preferences, @@ -225,7 +226,8 @@ class Users::SettingsController < ApplicationController generate_notification(@user_organization.user, @new_user_org.user, @new_user_org.organization, - @new_user_org.role_str) + @new_user_org.role_str, + false) flash[:notice] = I18n.t( 'users.settings.organizations.edit.modal_add_user.existing_flash_success', @@ -412,6 +414,7 @@ class Users::SettingsController < ApplicationController generate_notification(@user_organization.user, @user_org.user, @user_org.organization, + false, false) format.json { render json: { @@ -582,34 +585,6 @@ class Users::SettingsController < ApplicationController ) end - def generate_notification(user, target_user, org, role) - if role - title = I18n.t('notifications.assign_user_to_organization', - assigned_user: target_user.name, - role: role, - organization: org.name, - assigned_by_user: user.name) - else - title = I18n.t('notifications.unassign_user_from_organization', - unassigned_user: target_user.name, - organization: org.name, - unassigned_by_user: user.name) - end - - message = "#{I18n.t('search.index.organization')} #{org.name}" - notification = Notification.create( - type_of: :assignment, - title: - ActionController::Base.helpers.sanitize(title), - message: - ActionController::Base.helpers.sanitize(message) - ) - - if target_user.assignments_notification - UserNotification.create(notification: notification, user: target_user) - end - end - def reset_user_current_organization(user_org) ids = user_org.user.organizations_ids ids -= [user_org.organization.id] diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb index e1f3eb61c..3e2d1132a 100644 --- a/app/helpers/notifications_helper.rb +++ b/app/helpers/notifications_helper.rb @@ -17,4 +17,40 @@ module NotificationsHelper def send_email_notification(user, notification) AppMailer.delay.notification(user, notification) end + + def generate_notification(user, target_user, org, role, project) + if org + if role + title = I18n.t('notifications.assign_user_to_organization', + assigned_user: target_user.name, + role: role, + organization: org.name, + assigned_by_user: user.name) + else + title = I18n.t('notifications.unassign_user_from_organization', + unassigned_user: target_user.name, + organization: org.name, + unassigned_by_user: user.name) + end + message = "#{I18n.t('search.index.organization')} #{org.name}" + elsif project + title = I18n.t('activities.unassign_user_from_project', + unassigned_user: target_user.full_name, + project: project.name, + unassigned_by_user: user.full_name) + message = "#{I18n.t('search.index.project')} #{@project.name}" + end + + notification = Notification.create( + type_of: :assignment, + title: + ActionController::Base.helpers.sanitize(title), + message: + ActionController::Base.helpers.sanitize(message) + ) + + if target_user.assignments_notification + UserNotification.create(notification: notification, user: target_user) + end + end end From 63eb4eeaf8291c160af9feb5872c723ade8ccfee Mon Sep 17 00:00:00 2001 From: Mojca Lorber Date: Mon, 7 Nov 2016 15:33:21 +0100 Subject: [PATCH 4/5] fix hound --- app/helpers/notifications_helper.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb index 3e2d1132a..c61b78276 100644 --- a/app/helpers/notifications_helper.rb +++ b/app/helpers/notifications_helper.rb @@ -35,9 +35,9 @@ module NotificationsHelper message = "#{I18n.t('search.index.organization')} #{org.name}" elsif project title = I18n.t('activities.unassign_user_from_project', - unassigned_user: target_user.full_name, - project: project.name, - unassigned_by_user: user.full_name) + unassigned_user: target_user.full_name, + project: project.name, + unassigned_by_user: user.full_name) message = "#{I18n.t('search.index.project')} #{@project.name}" end From 6f1c9ffb810c435995054df031cc2bea90348712 Mon Sep 17 00:00:00 2001 From: Mojca Lorber Date: Tue, 8 Nov 2016 11:20:14 +0100 Subject: [PATCH 5/5] refactoring --- app/helpers/notifications_helper.rb | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb index c61b78276..cbb44fd6f 100644 --- a/app/helpers/notifications_helper.rb +++ b/app/helpers/notifications_helper.rb @@ -20,18 +20,15 @@ module NotificationsHelper def generate_notification(user, target_user, org, role, project) if org - if role - title = I18n.t('notifications.assign_user_to_organization', - assigned_user: target_user.name, - role: role, - organization: org.name, - assigned_by_user: user.name) - else - title = I18n.t('notifications.unassign_user_from_organization', - unassigned_user: target_user.name, - organization: org.name, - unassigned_by_user: user.name) - end + title = I18n.t('notifications.unassign_user_from_organization', + unassigned_user: target_user.name, + organization: org.name, + unassigned_by_user: user.name) + title = I18n.t('notifications.assign_user_to_organization', + assigned_user: target_user.name, + role: role, + organization: org.name, + assigned_by_user: user.name) if role message = "#{I18n.t('search.index.organization')} #{org.name}" elsif project title = I18n.t('activities.unassign_user_from_project',