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:
Urban Rotnik 2021-01-22 11:24:08 +01:00 committed by GitHub
parent e3388b880c
commit ebbbfa657c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 61 additions and 47 deletions

View file

@ -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

View file

@ -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')

View file

@ -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

View file

@ -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 = {

View file

@ -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]"

View file

@ -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

View file

@ -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