From 8b41216517c1a24fb0c423f1f10179a2f7072995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Thu, 14 Sep 2023 13:59:59 +0200 Subject: [PATCH] #1132 Missing sub-folders --- app/controllers/dmsf_controller.rb | 2 +- app/models/dmsf_folder.rb | 17 ++++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index 5a8ba1ac..83a08b0b 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -146,7 +146,7 @@ class DmsfController < ApplicationController @fast_links = member&.dmsf_fast_links unless @fast_links @projects = DmsfFolder.allowed_target_projects_on_copy - @folders = DmsfFolder.directory_tree(@target_project, @folder) + @folders = DmsfFolder.directory_tree(@target_project) @target_folder = DmsfFolder.visible.find(params[:target_folder_id]) if params[:target_folder_id].present? end @back_url = params[:back_url] diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 43a165f3..15baadc9 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -234,23 +234,21 @@ class DmsfFolder < ApplicationRecord save! end - def self.directory_tree(project, current_folder = nil) + def self.directory_tree(project) tree = [[l(:link_documents), nil]] project = Project.find(project) unless project.is_a?(Project) folders = project.dmsf_folders.visible.to_a - # TODO: This prevents copying folders into its sub-folders too. It should be allowed. - folders.delete current_folder folders.delete_if(&:locked_for_user?) folders.each do |folder| tree.push ["...#{folder.title}", folder.id] - DmsfFolder.directory_subtree tree, folder, 2, current_folder + DmsfFolder.directory_subtree tree, folder, 2 end tree end def folder_tree tree = [[title, id]] - DmsfFolder.directory_subtree tree, self, 1, nil + DmsfFolder.directory_subtree tree, self, 1 tree end @@ -610,15 +608,12 @@ class DmsfFolder < ApplicationRecord end class << self - def directory_subtree(tree, folder, level, current_folder) + def directory_subtree(tree, folder, level) folders = folder.dmsf_folders.visible.to_a - folders.delete current_folder folders.delete_if(&:locked_for_user?) folders.each do |subfolder| - unless subfolder == current_folder - tree.push ["#{'...' * level}#{subfolder.title}", subfolder.id] - DmsfFolder.directory_subtree tree, subfolder, level + 1, current_folder - end + tree.push ["#{'...' * level}#{subfolder.title}", subfolder.id] + DmsfFolder.directory_subtree tree, subfolder, level + 1 end end end