mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-11 07:34:41 +08:00
Fix folders activities [SCI-5402] [SCI-5403] (#3112)
* Fix activities and make folders clickable * Remove archive project activity and action * Save nil value for root folder * Add empty values to hash
This commit is contained in:
parent
e3388b880c
commit
ebbbfa657c
7 changed files with 61 additions and 47 deletions
|
@ -96,12 +96,6 @@ class ProjectFoldersController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def archive
|
||||
folder = current_team.project_folders.find(params[:id])
|
||||
|
||||
log_activity(:archive_project_folder, folder, project_folder: folder.id)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_project_folder
|
||||
|
@ -143,13 +137,15 @@ class ProjectFoldersController < ApplicationController
|
|||
return if project_ids.blank?
|
||||
|
||||
current_team.projects.where(id: project_ids).each do |project|
|
||||
source_folder_name = project.project_folder&.name || I18n.t('global_activities.root_folder_level')
|
||||
source_folder_id = project.project_folder&.id
|
||||
project.update!(project_folder: destination_folder)
|
||||
destination_folder_name = project.project_folder&.name || I18n.t('global_activities.root_folder_level')
|
||||
destination_folder_id = project.project_folder&.id
|
||||
|
||||
log_activity(:move_project, project, project: project.id,
|
||||
destination_folder: destination_folder_name,
|
||||
source_folder: source_folder_name)
|
||||
log_activity(:move_project,
|
||||
project,
|
||||
project: project.id,
|
||||
project_folder_to: destination_folder_id,
|
||||
project_folder_from: source_folder_id)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -158,13 +154,15 @@ class ProjectFoldersController < ApplicationController
|
|||
return if folder_ids.blank?
|
||||
|
||||
current_team.project_folders.where(id: folder_ids).each do |folder|
|
||||
source_folder_name = folder.parent_folder&.name || I18n.t('global_activities.root_folder_level')
|
||||
source_folder_id = folder.parent_folder&.id
|
||||
folder.update!(parent_folder: destination_folder)
|
||||
destination_folder_name = folder.parent_folder&.name || I18n.t('global_activities.root_folder_level')
|
||||
destination_folder_id = folder.parent_folder&.id
|
||||
|
||||
log_activity(:move_project_folder, folder, project_folder: folder.id,
|
||||
destination_folder: destination_folder_name,
|
||||
source_folder: source_folder_name)
|
||||
log_activity(:move_project_folder,
|
||||
folder,
|
||||
project_folder: folder.id,
|
||||
project_folder_to: destination_folder_id,
|
||||
project_folder_from: source_folder_id)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -28,7 +28,12 @@ module GlobalActivitiesHelper
|
|||
end
|
||||
|
||||
def generate_link(message_item, activity)
|
||||
obj = message_item['type'].constantize.find_by_id(message_item['id'])
|
||||
obj = if message_item['id']
|
||||
message_item['type'].constantize.find_by(id: message_item['id'])
|
||||
else
|
||||
message_item['type'].constantize.new
|
||||
end
|
||||
|
||||
return message_item['value'] unless obj
|
||||
|
||||
current_value = generate_name(message_item)
|
||||
|
@ -88,7 +93,11 @@ module GlobalActivitiesHelper
|
|||
when Report
|
||||
path = reports_path(team: obj.team.id)
|
||||
when ProjectFolder
|
||||
path = project_folder_path(obj, team: obj.team.id)
|
||||
path = if obj.new_record?
|
||||
projects_path(team: activity.team.id)
|
||||
else
|
||||
project_folder_path(obj, team: obj.team.id)
|
||||
end
|
||||
else
|
||||
return current_value
|
||||
end
|
||||
|
@ -96,7 +105,14 @@ module GlobalActivitiesHelper
|
|||
end
|
||||
|
||||
def generate_name(message_item)
|
||||
obj = message_item['type'].constantize.find_by_id(message_item['id'])
|
||||
obj = if message_item['id']
|
||||
message_item['type'].constantize.find_by(id: message_item['id'])
|
||||
else
|
||||
message_item['type'].constantize.new
|
||||
end
|
||||
|
||||
return I18n.t('projects.index.breadcrumbs_root') if obj.is_a?(ProjectFolder) && obj.new_record?
|
||||
|
||||
return message_item['value'] unless obj
|
||||
|
||||
value = obj.public_send(message_item['value_for'] || 'name')
|
||||
|
|
|
@ -51,7 +51,7 @@ module Activities
|
|||
k = k.to_s.sub('tiny_mce_asset', 'asset').to_sym if k.to_s.include? 'tiny_mce_asset'
|
||||
|
||||
if const
|
||||
if v.is_a?(Hash) # Value is array, so you have getter specified
|
||||
if v.is_a?(Hash) # Value is Hash, so you have getter specified
|
||||
id = v[:id]
|
||||
getter_method = v[:value_for]
|
||||
value_type = v[:value_type]
|
||||
|
@ -60,10 +60,14 @@ module Activities
|
|||
getter_method = 'name'
|
||||
end
|
||||
|
||||
obj = const.find id
|
||||
@activity.message_items[k] = { type: const.to_s, value: obj.public_send(getter_method).to_s, id: id }
|
||||
@activity.message_items[k][:value_for] = getter_method
|
||||
@activity.message_items[k][:value_type] = value_type unless value_type.nil?
|
||||
if id
|
||||
obj = const.find id
|
||||
@activity.message_items[k] = { type: const.to_s, value: obj.public_send(getter_method).to_s, id: id }
|
||||
@activity.message_items[k][:value_for] = getter_method
|
||||
@activity.message_items[k][:value_type] = value_type unless value_type.nil?
|
||||
else
|
||||
@activity.message_items[k] = { type: const.to_s, value: nil, value_for: 'name', id: nil }
|
||||
end
|
||||
else
|
||||
@activity.message_items[k] = v.to_s
|
||||
end
|
||||
|
|
|
@ -380,8 +380,7 @@ class Extends
|
|||
move_project: 158,
|
||||
create_project_folder: 159,
|
||||
move_project_folder: 160,
|
||||
rename_project_folder: 161,
|
||||
archive_project_folder: 162
|
||||
rename_project_folder: 161
|
||||
}
|
||||
|
||||
ACTIVITY_GROUPS = {
|
||||
|
|
|
@ -176,11 +176,11 @@ en:
|
|||
export_inventory_items_assigned_to_task_html: "%{user} exported inventory item(s) assigned to task %{my_module} from inventory %{repository}: Live version."
|
||||
export_inventory_snapshot_items_assigned_to_task_html: "%{user} exported inventory item(s) assigned to task %{my_module} from inventory %{repository_snapshot}: Snapshot of %{created_at}."
|
||||
change_status_on_task_flow_html: "%{user} changed status from <strong>%{my_module_status_old}</strong> to <strong>%{my_module_status_new}</strong> for task %{my_module}."
|
||||
move_project_html: "%{user} moved project %{project} from folder <strong>%{source_folder}</strong> to folder <strong>%{destination_folder}</strong>."
|
||||
move_project_html: "%{user} moved project %{project} from folder %{project_folder_from} to folder %{project_folder_to}."
|
||||
|
||||
create_project_folder_html: "%{user} created project folder %{project_folder}."
|
||||
rename_project_folder_html: "%{user} renamed project folder %{project_folder}."
|
||||
archive_project_folder_html: "%{user} archived project folder %{project_folder}."
|
||||
move_project_folder_html: "%{user} moved folder %{project_folder} from folder <strong>%{source_folder}</strong> to folder <strong>%{destination_folder}</strong>."
|
||||
move_project_folder_html: "%{user} moved folder %{project_folder} from folder %{project_folder_from}</strong> to folder %{project_folder_to}."
|
||||
|
||||
activity_name:
|
||||
create_project: "Project created"
|
||||
|
@ -325,7 +325,6 @@ en:
|
|||
move_project: "Project moved"
|
||||
create_project_folder: "Project folder created"
|
||||
rename_project_folder: "Project folder renamed"
|
||||
archive_project_folder: "Project folder archived"
|
||||
move_project_folder: "Project folder moved"
|
||||
|
||||
activity_group:
|
||||
|
@ -349,5 +348,3 @@ en:
|
|||
protocol: "Protocol"
|
||||
step: "Step"
|
||||
report: "Report"
|
||||
|
||||
root_folder_level: "[Projects]"
|
||||
|
|
|
@ -96,19 +96,4 @@ describe ProjectFoldersController, type: :controller do
|
|||
expect { action }.to(change { Activity.count }.by(1))
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST archive' do
|
||||
let(:action) { post :archive, params: { id: project_folder.id }, format: :json }
|
||||
|
||||
it 'calls create activity for creating project folder' do
|
||||
expect(Activities::CreateActivityService)
|
||||
.to(receive(:call).with(hash_including(activity_type: :archive_project_folder)))
|
||||
|
||||
action
|
||||
end
|
||||
|
||||
it 'adds activity in DB' do
|
||||
expect { action }.to(change { Activity.count }.by(1))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -140,4 +140,19 @@ describe Activities::CreateActivityService do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when message item is nil' do
|
||||
it 'adds project_folder_from to message items with value nil' do
|
||||
activity = Activities::CreateActivityService.call(activity_type: :move_project_folder,
|
||||
owner: user,
|
||||
subject: project,
|
||||
team: team,
|
||||
message_items: {
|
||||
project_folder_from: nil
|
||||
}).activity
|
||||
|
||||
expect(activity.message_items['project_folder_from'].symbolize_keys)
|
||||
.to(include({ type: 'ProjectFolder', value: nil }))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue