diff --git a/app/controllers/project_folders_controller.rb b/app/controllers/project_folders_controller.rb
index 7a83f1ff3..3c75b56d1 100644
--- a/app/controllers/project_folders_controller.rb
+++ b/app/controllers/project_folders_controller.rb
@@ -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
diff --git a/app/helpers/global_activities_helper.rb b/app/helpers/global_activities_helper.rb
index d15f5d86f..1e95c8afc 100644
--- a/app/helpers/global_activities_helper.rb
+++ b/app/helpers/global_activities_helper.rb
@@ -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')
diff --git a/app/services/activities/create_activity_service.rb b/app/services/activities/create_activity_service.rb
index 36edf3f65..3e1c4d410 100644
--- a/app/services/activities/create_activity_service.rb
+++ b/app/services/activities/create_activity_service.rb
@@ -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
diff --git a/config/initializers/extends.rb b/config/initializers/extends.rb
index eea11ce1c..5f01a6cc1 100644
--- a/config/initializers/extends.rb
+++ b/config/initializers/extends.rb
@@ -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 = {
diff --git a/config/locales/global_activities/en.yml b/config/locales/global_activities/en.yml
index 89e0965c7..04351db6a 100644
--- a/config/locales/global_activities/en.yml
+++ b/config/locales/global_activities/en.yml
@@ -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 %{my_module_status_old} to %{my_module_status_new} for task %{my_module}."
- move_project_html: "%{user} moved project %{project} from folder %{source_folder} to folder %{destination_folder}."
+ 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 %{source_folder} to folder %{destination_folder}."
+ move_project_folder_html: "%{user} moved folder %{project_folder} from folder %{project_folder_from} 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]"
diff --git a/spec/controllers/project_folders_controller_spec.rb b/spec/controllers/project_folders_controller_spec.rb
index d2b213460..ba5d85412 100644
--- a/spec/controllers/project_folders_controller_spec.rb
+++ b/spec/controllers/project_folders_controller_spec.rb
@@ -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
diff --git a/spec/services/activities/create_activity_service_spec.rb b/spec/services/activities/create_activity_service_spec.rb
index 54e84ec50..f3d75be71 100644
--- a/spec/services/activities/create_activity_service_spec.rb
+++ b/spec/services/activities/create_activity_service_spec.rb
@@ -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