mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-08 12:56:27 +08:00
Add smart annotation notifications for storage locations [SCI-11097]
This commit is contained in:
parent
a9287105e2
commit
c27646aa3d
3 changed files with 35 additions and 0 deletions
|
@ -1,6 +1,10 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class StorageLocationsController < ApplicationController
|
class StorageLocationsController < ApplicationController
|
||||||
|
include ActionView::Helpers::TextHelper
|
||||||
|
include ApplicationHelper
|
||||||
|
include Rails.application.routes.url_helpers
|
||||||
|
|
||||||
before_action :check_storage_locations_enabled, except: :unassign_rows
|
before_action :check_storage_locations_enabled, except: :unassign_rows
|
||||||
before_action :load_storage_location, only: %i(update destroy duplicate move show available_positions unassign_rows export_container import_container)
|
before_action :load_storage_location, only: %i(update destroy duplicate move show available_positions unassign_rows export_container import_container)
|
||||||
before_action :check_read_permissions, except: %i(index create tree actions_toolbar)
|
before_action :check_read_permissions, except: %i(index create tree actions_toolbar)
|
||||||
|
@ -38,6 +42,7 @@ class StorageLocationsController < ApplicationController
|
||||||
|
|
||||||
if @storage_location.save
|
if @storage_location.save
|
||||||
log_activity('storage_location_created')
|
log_activity('storage_location_created')
|
||||||
|
storage_location_annotation_notification
|
||||||
render json: @storage_location, serializer: Lists::StorageLocationSerializer
|
render json: @storage_location, serializer: Lists::StorageLocationSerializer
|
||||||
else
|
else
|
||||||
render json: { error: @storage_location.errors.full_messages }, status: :unprocessable_entity
|
render json: { error: @storage_location.errors.full_messages }, status: :unprocessable_entity
|
||||||
|
@ -49,10 +54,12 @@ class StorageLocationsController < ApplicationController
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
@storage_location.image.purge if params[:file_name].blank?
|
@storage_location.image.purge if params[:file_name].blank?
|
||||||
@storage_location.image.attach(params[:signed_blob_id]) if params[:signed_blob_id]
|
@storage_location.image.attach(params[:signed_blob_id]) if params[:signed_blob_id]
|
||||||
|
old_description = @storage_location.description
|
||||||
@storage_location.update(storage_location_params)
|
@storage_location.update(storage_location_params)
|
||||||
|
|
||||||
if @storage_location.save
|
if @storage_location.save
|
||||||
log_activity('storage_location_edited')
|
log_activity('storage_location_edited')
|
||||||
|
storage_location_annotation_notification(old_description) if old_description != @storage_location.description
|
||||||
render json: @storage_location, serializer: Lists::StorageLocationSerializer
|
render json: @storage_location, serializer: Lists::StorageLocationSerializer
|
||||||
else
|
else
|
||||||
render json: { error: @storage_location.errors.full_messages }, status: :unprocessable_entity
|
render json: { error: @storage_location.errors.full_messages }, status: :unprocessable_entity
|
||||||
|
@ -259,6 +266,25 @@ class StorageLocationsController < ApplicationController
|
||||||
}.merge(message_items))
|
}.merge(message_items))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def storage_location_annotation_notification(old_text = nil)
|
||||||
|
url = if @storage_location.container
|
||||||
|
storage_location_path(@storage_location.id)
|
||||||
|
else
|
||||||
|
storage_locations_path(parent_id: @storage_location.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
smart_annotation_notification(
|
||||||
|
old_text: old_text,
|
||||||
|
new_text: @storage_location.description,
|
||||||
|
subject: @storage_location,
|
||||||
|
title: t('notifications.storage_location_annotation_title',
|
||||||
|
storage_location: @storage_location.name,
|
||||||
|
user: current_user.full_name),
|
||||||
|
message: t('notifications.storage_location_annotation_message_html',
|
||||||
|
storage_location: link_to(@storage_location.name, url))
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
def log_unassign_activities
|
def log_unassign_activities
|
||||||
@storage_location_repository_rows.each do |storage_location_repository_row|
|
@storage_location_repository_rows.each do |storage_location_repository_row|
|
||||||
Activities::CreateActivityService
|
Activities::CreateActivityService
|
||||||
|
|
|
@ -59,6 +59,13 @@ module BreadcrumbsHelper
|
||||||
when LabelTemplate
|
when LabelTemplate
|
||||||
parent = subject.team
|
parent = subject.team
|
||||||
url = label_template_path(subject)
|
url = label_template_path(subject)
|
||||||
|
when StorageLocation
|
||||||
|
parent = subject.team
|
||||||
|
url = if subject.container
|
||||||
|
storage_location_path(subject)
|
||||||
|
else
|
||||||
|
storage_locations_path(parent_id: subject.id)
|
||||||
|
end
|
||||||
when Team
|
when Team
|
||||||
parent = nil
|
parent = nil
|
||||||
url = projects_path(team: subject.id)
|
url = projects_path(team: subject.id)
|
||||||
|
|
|
@ -3931,6 +3931,8 @@ en:
|
||||||
deliver_error: 'Exportable content'
|
deliver_error: 'Exportable content'
|
||||||
experiment_annotation_title: "%{user} mentioned you in experiment %{experiment}."
|
experiment_annotation_title: "%{user} mentioned you in experiment %{experiment}."
|
||||||
experiment_annotation_message_html: "Project: %{project} | Experiment: %{experiment}"
|
experiment_annotation_message_html: "Project: %{project} | Experiment: %{experiment}"
|
||||||
|
storage_location_annotation_title: "%{user} mentioned you in storage location %{storage_location}."
|
||||||
|
storage_location_annotation_message_html: "Storage location: %{storage_location}"
|
||||||
project_comment_annotation_title: "%{user} mentioned you in a comment on project %{project}."
|
project_comment_annotation_title: "%{user} mentioned you in a comment on project %{project}."
|
||||||
project_annotation_message_html: "Project: %{project}"
|
project_annotation_message_html: "Project: %{project}"
|
||||||
my_module_description_annotation_title: "%{user} mentioned you in notes on task %{my_module}."
|
my_module_description_annotation_title: "%{user} mentioned you in notes on task %{my_module}."
|
||||||
|
|
Loading…
Add table
Reference in a new issue