From 09a727a99dcab2dea4777aac9d1d78e3fc285411 Mon Sep 17 00:00:00 2001 From: "karel.picman@lbcfree.net" Date: Tue, 12 Oct 2021 14:03:05 +0200 Subject: [PATCH] 'Copy folders only' doesn't work properly #1296 --- app/models/dmsf_folder.rb | 16 +++++++++------- lib/redmine_dmsf/patches/project_patch.rb | 12 +++++------- test/unit/project_patch_test.rb | 5 +++-- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 537cd027..3579460a 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -273,7 +273,7 @@ class DmsfFolder < ActiveRecord::Base save end - def copy_to(project, folder) + def copy_to(project, folder, copy_files = true) new_folder = DmsfFolder.new new_folder.dmsf_folder = folder ? folder : nil new_folder.project = folder ? folder.project : project @@ -291,14 +291,16 @@ class DmsfFolder < ActiveRecord::Base Rails.logger.error new_folder.errors.full_messages.to_sentence return new_folder end - dmsf_files.visible.find_each do |f| - f.copy_to project, new_folder + if copy_files + dmsf_files.visible.find_each do |f| + f.copy_to project, new_folder + end + dmsf_links.visible.find_each do |l| + l.copy_to project, new_folder + end end dmsf_folders.visible.find_each do |s| - s.copy_to project, new_folder - end - dmsf_links.visible.find_each do |l| - l.copy_to project, new_folder + s.copy_to project, new_folder, copy_files end dmsf_folder_permissions.find_each do |p| p.copy_to new_folder diff --git a/lib/redmine_dmsf/patches/project_patch.rb b/lib/redmine_dmsf/patches/project_patch.rb index de2d4888..38e21a5b 100644 --- a/lib/redmine_dmsf/patches/project_patch.rb +++ b/lib/redmine_dmsf/patches/project_patch.rb @@ -80,16 +80,14 @@ module RedmineDmsf end def dmsf_count - file_count = DmsfFile.where(project_id: id).all.size + - DmsfLink.where(project_id: id, target_type: %(DmsfFile DmsfUrl)).all.size - folder_count = DmsfFolder.where(project_id: id).all.size + - DmsfLink.where(project_id: id, target_type: 'DmsfFolder').all.size + file_count = DmsfFile.visible.where(project_id: id).all.size + folder_count = DmsfFolder.visible.where(project_id: id).all.size { files: file_count, folders: folder_count } end # Simple yet effective approach to copying things def copy_dmsf(project) - copy_dmsf_folders project + copy_dmsf_folders project, true project.dmsf_files.visible.each do |f| f.copy_to self, nil end @@ -101,9 +99,9 @@ module RedmineDmsf end end - def copy_dmsf_folders(project) + def copy_dmsf_folders(project, copy_files = false) project.dmsf_folders.visible.each do |f| - f.copy_to self, nil + f.copy_to self, nil, copy_files end project.folder_links.visible.each do |l| l.copy_to self, nil diff --git a/test/unit/project_patch_test.rb b/test/unit/project_patch_test.rb index 6aadd657..7f719592 100644 --- a/test/unit/project_patch_test.rb +++ b/test/unit/project_patch_test.rb @@ -54,9 +54,10 @@ class ProjectPatchTest < RedmineDmsf::Test::UnitTest end def test_dmsf_count + User.current = @jsmith hash = @project1.dmsf_count - assert_equal 10, hash[:files] - assert_equal 8, hash[:folders] + assert_equal 9, hash[:files] + assert_equal 5, hash[:folders] end def test_copy_approval_workflows