Merge pull request #3224 from okriuchykhin/ok_SCI_5575

Implement missing missing user smart annotation notifications [SCI-5575]
This commit is contained in:
Alex Kriuchykhin 2021-03-23 12:03:51 +01:00 committed by GitHub
commit f9f99cc26b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 65 additions and 13 deletions

View file

@ -62,20 +62,19 @@ module StepsActions
new_checklists,
old_checklists)
step_description_annotation(step, old_description)
new_checklists.each do |e|
new_checklists.each do |new_checklist|
# generates smart annotaion if the checklist is new
add_new_checklist(step, e) if e.id.zero?
checklist_name_annotation(step, e) unless e.id
add_new_checklist(step, new_checklist) and next if new_checklist.id.zero?
# else check if checklist is not deleted and generates
# new notifications
next unless old_checklists.map(&:id).include?(e.id)
old_checklist = old_checklists.select { |i| i.id == e.id }.first
checklist_name_annotation(step, e, old_checklist.name)
e.items.each do |ci|
old_list = old_checklists.select { |i| i.id == e.id }.first
old_item = old_list.items.select { |i| i.id == ci.id }.first if old_list
text = old_item ? old_item.text : ''
checklist_item_annotation(step, ci, text)
next unless old_checklists.map(&:id).include?(new_checklist.id)
old_checklist = old_checklists.find { |i| i.id == new_checklist.id }
checklist_name_annotation(step, new_checklist, old_checklist.name)
new_checklist.items.each do |new_checklist_item|
old_checklist_item = old_checklist.items.find { |i| i.id == new_checklist_item.id } if old_checklist
text = old_checklist_item ? old_checklist_item.text : ''
checklist_item_annotation(step, new_checklist_item, text)
end
end
end

View file

@ -184,11 +184,13 @@ class MyModulesController < ApplicationController
end
def update_description
old_description = @my_module.description
respond_to do |format|
format.json do
if @my_module.update(description: params.require(:my_module)[:description])
log_activity(:change_module_description)
TinyMceAsset.update_images(@my_module, params[:tiny_mce_images], current_user)
my_module_annotation_notification(old_description)
render json: {
html: custom_auto_link(
@my_module.tinymce_render(:description),
@ -206,12 +208,15 @@ class MyModulesController < ApplicationController
def update_protocol_description
protocol = @my_module.protocol
old_description = protocol.description
return render_404 unless protocol
respond_to do |format|
format.json do
if protocol.update(description: params.require(:protocol)[:description])
log_activity(:protocol_description_in_task_edited)
TinyMceAsset.update_images(protocol, params[:tiny_mce_images], current_user)
protocol_annotation_notification(old_description)
render json: {
html: custom_auto_link(
protocol.tinymce_render(:description),
@ -402,4 +407,32 @@ class MyModulesController < ApplicationController
:page, :starting_timestamp, :from_date, :to_date, types: [], users: [], subjects: {}
)
end
def my_module_annotation_notification(old_text = nil)
smart_annotation_notification(
old_text: old_text,
new_text: @my_module.description,
title: t('notifications.my_module_description_annotation_title',
my_module: @my_module.name,
user: current_user.full_name),
message: t('notifications.my_module_description_annotation_message_html',
project: link_to(@my_module.experiment.project.name, project_url(@my_module.experiment.project)),
experiment: link_to(@my_module.experiment.name, canvas_experiment_url(@my_module.experiment)),
my_module: link_to(@my_module.name, protocols_my_module_url(@my_module)))
)
end
def protocol_annotation_notification(old_text = nil)
smart_annotation_notification(
old_text: old_text,
new_text: @my_module.protocol.description,
title: t('notifications.my_module_protocol_annotation_title',
my_module: @my_module.name,
user: current_user.full_name),
message: t('notifications.my_module_protocol_annotation_message_html',
project: link_to(@my_module.experiment.project.name, project_url(@my_module.experiment.project)),
experiment: link_to(@my_module.experiment.name, canvas_experiment_url(@my_module.experiment)),
my_module: link_to(@my_module.name, protocols_my_module_url(@my_module)))
)
end
end

View file

@ -192,11 +192,13 @@ class ProtocolsController < ApplicationController
end
def update_description
old_description = @protocol.description
respond_to do |format|
format.json do
if @protocol.update(description: params.require(:protocol)[:description])
log_activity(:edit_description_in_protocol_repository, nil, protocol: @protocol.id)
TinyMceAsset.update_images(@protocol, params[:tiny_mce_images], current_user)
protocol_annotation_notification(old_description)
render json: {
html: custom_auto_link(
@protocol.tinymce_render(:description),
@ -1200,4 +1202,16 @@ class ProtocolsController < ApplicationController
project: project,
message_items: message_items)
end
def protocol_annotation_notification(old_text)
smart_annotation_notification(
old_text: old_text,
new_text: @protocol.description,
title: t('notifications.protocol_description_annotation_title',
user: current_user.full_name,
protocol: @protocol.name),
message: t('notifications.protocol_description_annotation_message_html',
protocol: link_to(@protocol.name, edit_protocol_url(@protocol)))
)
end
end

View file

@ -204,7 +204,7 @@ module CommentHelper
title: t('notifications.my_module_comment_annotation_title',
my_module: my_module.name,
user: current_user.full_name),
message: t('notifications.my_module_annotation_message_html',
message: t('notifications.my_module_comment_annotation_message_html',
project: link_to(my_module.experiment.project.name,
project_url(my_module
.experiment

View file

@ -2229,8 +2229,12 @@ en:
experiment_annotation_message_html: "Project: %{project} | Experiment: %{experiment}"
project_comment_annotation_title: "%{user} mentioned you in a comment on project %{project}."
project_annotation_message_html: "Project: %{project}"
my_module_description_annotation_title: "%{user} mentioned you in a description on task %{my_module}."
my_module_description_annotation_message_html: "Project: %{project} | Experiment: %{experiment} | Task: %{my_module}"
my_module_comment_annotation_title: "%{user} mentioned you in a comment on task %{my_module}."
my_module_annotation_message_html: "Project: %{project} | Experiment: %{experiment} | Task: %{my_module}"
my_module_comment_annotation_message_html: "Project: %{project} | Experiment: %{experiment} | Task: %{my_module}"
my_module_protocol_annotation_title: "%{user} mentioned you in a protocol description on task %{my_module}."
my_module_protocol_annotation_message_html: "Project: %{project} | Experiment: %{experiment} | Task: %{my_module}"
step_comment_annotation_title: "%{user} mentioned you in a comment on step %{step}."
step_description_title: "%{user} mentioned you in a description on step %{step}."
checklist_title: "%{user} mentioned you in a checklist on step %{step}."
@ -2240,6 +2244,8 @@ en:
result_annotation_message_html: "Project: %{project} | Experiment: %{experiment} | Task: %{my_module}"
repository_annotation_title: "%{user} mentioned you in Column: %{column} of Item %{record} in Inventory %{repository}"
repository_annotation_message_html: "Item: %{record} | Column: %{column}"
protocol_description_annotation_title: "%{user} mentioned you in a description on protocol %{protocol}."
protocol_description_annotation_message_html: "Protocol: %{protocol}"
protocol_step_annotation_message_html: "Protocol: %{protocol}"
email_title: "You've received a SciNote notification!"
assign_user_to_team: "<i>%{assigned_user}</i> was added as %{role} to team <strong>%{team}</strong> by <i>%{assigned_by_user}</i>."