diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index 60d8102b..4dce49e0 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -28,10 +28,10 @@ class DmsfController < ApplicationController def show if @folder.nil? - @subfolders = @project.dmsf_folders #DmsfFolder.project_root_folders(@project) + @subfolders = @project.dmsf_folders.visible #DmsfFolder.project_root_folders(@project) @files = @project.dmsf_files.visible #DmsfFile.project_root_files(@project) else - @subfolders = @folder.subfolders + @subfolders = @folder.subfolders.visible @files = @folder.files.visible end @@ -284,7 +284,7 @@ class DmsfController < ApplicationController def zip_entries(zip, selected_folders, selected_files) if selected_folders && selected_folders.is_a?(Array) selected_folders.each do |selected_folder_id| - check_project(folder = DmsfFolder.find(selected_folder_id)) + check_project(folder = DmsfFolder.visible.find(selected_folder_id)) zip.add_folder(folder, (@folder.dmsf_path_str unless @folder.nil?)) unless folder.nil? end end @@ -309,7 +309,7 @@ class DmsfController < ApplicationController end def find_folder - @folder = DmsfFolder.find(params[:folder_id]) if params.keys.include?("folder_id") + @folder = DmsfFolder.visible.find(params[:folder_id]) if params.keys.include?("folder_id") check_project(@folder) rescue DmsfAccessError render_403 diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 3d547797..b98e78ba 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -223,13 +223,13 @@ class DmsfFilesController < ApplicationController end def find_file - @file = DmsfFile.find(params[:id]) + @file = DmsfFile.visible.find(params[:id]) @project = @file.project rescue end def find_revision - @revision = DmsfFileRevision.find(params[:id]) + @revision = DmsfFileRevision.visible.find(params[:id]) @file = @revision.file @project = @file.project end diff --git a/app/controllers/dmsf_files_copy_controller.rb b/app/controllers/dmsf_files_copy_controller.rb index 217f332a..73124b52 100644 --- a/app/controllers/dmsf_files_copy_controller.rb +++ b/app/controllers/dmsf_files_copy_controller.rb @@ -37,7 +37,7 @@ class DmsfFilesCopyController < ApplicationController @target_project ||= DmsfFile.allowed_target_projects_on_copy[0] end - @target_folder = DmsfFolder.find(params[:target_folder_id]) unless params[:target_folder_id].blank? + @target_folder = DmsfFolder.visible.find(params[:target_folder_id]) unless params[:target_folder_id].blank? @target_folder ||= @file.folder if @target_project == @project render :layout => !request.xhr? @@ -49,7 +49,7 @@ class DmsfFilesCopyController < ApplicationController render_403 return end - @target_folder = DmsfFolder.find(params[:target_folder_id]) unless params[:target_folder_id].blank? + @target_folder = DmsfFolder.visible.find(params[:target_folder_id]) unless params[:target_folder_id].blank? if !@target_folder.nil? && @target_folder.project != @target_project raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project) end @@ -86,7 +86,7 @@ class DmsfFilesCopyController < ApplicationController render_403 return end - @target_folder = DmsfFolder.find(params[:target_folder_id]) unless params[:target_folder_id].blank? + @target_folder = DmsfFolder.visible.find(params[:target_folder_id]) unless params[:target_folder_id].blank? if !@target_folder.nil? && @target_folder.project != @target_project raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project) end @@ -125,7 +125,7 @@ class DmsfFilesCopyController < ApplicationController end def find_file - @file = DmsfFile.find(params[:id]) + @file = DmsfFile.visible.find(params[:id]) @project = @file.project end diff --git a/app/controllers/dmsf_folders_copy_controller.rb b/app/controllers/dmsf_folders_copy_controller.rb index 7778dc61..19697e35 100644 --- a/app/controllers/dmsf_folders_copy_controller.rb +++ b/app/controllers/dmsf_folders_copy_controller.rb @@ -35,7 +35,7 @@ class DmsfFoldersCopyController < ApplicationController @target_project ||= DmsfFolder.allowed_target_projects_on_copy[0] end - @target_folder = DmsfFolder.find(params[:target_folder_id]) unless params[:target_folder_id].blank? + @target_folder = DmsfFolder.visible.find(params[:target_folder_id]) unless params[:target_folder_id].blank? @target_folder ||= @folder.folder if @target_project == @project render :layout => !request.xhr? @@ -47,7 +47,7 @@ class DmsfFoldersCopyController < ApplicationController render_403 return end - @target_folder = DmsfFolder.find(params[:target_folder_id]) unless params[:target_folder_id].blank? + @target_folder = DmsfFolder.visible.find(params[:target_folder_id]) unless params[:target_folder_id].blank? if !@target_folder.nil? && @target_folder.project != @target_project raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project) end @@ -89,7 +89,7 @@ class DmsfFoldersCopyController < ApplicationController end def find_folder - @folder = DmsfFolder.find(params[:id]) + @folder = DmsfFolder.visible.find(params[:id]) @project = @folder.project end diff --git a/app/controllers/dmsf_upload_controller.rb b/app/controllers/dmsf_upload_controller.rb index 6b1093d5..3be588d8 100644 --- a/app/controllers/dmsf_upload_controller.rb +++ b/app/controllers/dmsf_upload_controller.rb @@ -195,7 +195,7 @@ class DmsfUploadController < ApplicationController end def find_folder - @folder = DmsfFolder.find(params[:folder_id]) if params.keys.include?("folder_id") + @folder = DmsfFolder.visible.find(params[:folder_id]) if params.keys.include?("folder_id") check_project(@folder) rescue DmsfAccessError render_403 diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index 6bb5c787..fe672368 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -48,7 +48,7 @@ class DmsfFile < ActiveRecord::Base end def validates_name_uniqueness - existing_file = DmsfFile.find_file_by_name(self.project, self.folder, self.name) + existing_file = DmsfFile.visible.find_file_by_name(self.project, self.folder, self.name) errors.add(:name, l("activerecord.errors.messages.taken")) unless existing_file.nil? || existing_file.id == self.id end @@ -76,18 +76,18 @@ class DmsfFile < ActiveRecord::Base end def self.project_root_files(project) - find(:all, :conditions => - ["dmsf_folder_id is NULL and project_id = :project_id and deleted = :deleted", - {:project_id => project.id, :deleted => false}], :order => "name ASC") + visible.find(:all, :conditions => + ["dmsf_folder_id is NULL and project_id = :project_id", + {:project_id => project.id}], :order => "name ASC") end def self.find_file_by_name(project, folder, name) if folder.nil? - find(:first, :conditions => + visible.find(:first, :conditions => ["dmsf_folder_id is NULL and project_id = :project_id and name = :name", {:project_id => project.id, :name => name}]) else - find(:first, :conditions => + visible.find(:first, :conditions => ["dmsf_folder_id = :folder_id and project_id = :project_id and name = :name", {:project_id => project.id, :folder_id => folder.id, :name => name}]) end diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 103798cb..426d6cc3 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -30,6 +30,8 @@ class DmsfFolder < ActiveRecord::Base :dependent => :destroy belongs_to :user + scope :visible, lambda {|*args| {:conditions => "" }} #For future use, however best to be referenced now + acts_as_customizable validates_presence_of :title @@ -66,18 +68,18 @@ class DmsfFolder < ActiveRecord::Base def self.find_by_title(project, folder, title) if folder.nil? - find(:first, :conditions => + visible.find(:first, :conditions => ["dmsf_folder_id is NULL and project_id = :project_id and title = :title", {:project_id => project.id, :title => title}]) else - find(:first, :conditions => + visible.find(:first, :conditions => ["dmsf_folder_id = :folder_id and title = :title", {:project_id => project.id, :folder_id => folder.id, :title => title}]) end end def delete - return false if !self.subfolders.empty? || !self.files.visible.empty? + return false if !self.subfolders.visible.empty? || !self.files.visible.empty? destroy end @@ -115,7 +117,7 @@ class DmsfFolder < ActiveRecord::Base def self.directory_tree(project, current_folder = nil) tree = [[l(:link_documents), nil]] - DmsfFolder.project_root_folders(project).each do |folder| + DmsfFolder.visible.project_root_folders(project).each do |folder| unless folder == current_folder tree.push(["...#{folder.title}", folder.id]) directory_subtree(tree, folder, 2, current_folder) @@ -126,20 +128,20 @@ class DmsfFolder < ActiveRecord::Base def deep_file_count file_count = self.files.visible.length - self.subfolders.each {|subfolder| file_count += subfolder.deep_file_count} + self.subfolders.visible.each {|subfolder| file_count += subfolder.deep_file_count} file_count end def deep_folder_count folder_count = self.subfolders.length - self.subfolders.each {|subfolder| folder_count += subfolder.deep_folder_count} + self.subfolders.visible.each {|subfolder| folder_count += subfolder.deep_folder_count} folder_count end def deep_size size = 0 self.files.visible.each {|file| size += file.size} - self.subfolders.each {|subfolder| size += subfolder.deep_size} + self.subfolders.visible.each {|subfolder| size += subfolder.deep_size} size end @@ -244,7 +246,7 @@ class DmsfFolder < ActiveRecord::Base private def self.directory_subtree(tree, folder, level, current_folder) - folder.subfolders.each do |subfolder| + folder.subfolders.visible.each do |subfolder| unless subfolder == current_folder tree.push(["#{"..." * level}#{subfolder.title}", subfolder.id]) directory_subtree(tree, subfolder, level + 1, current_folder) diff --git a/app/models/dmsf_upload.rb b/app/models/dmsf_upload.rb index 85ec1dc3..1e7579b9 100644 --- a/app/models/dmsf_upload.rb +++ b/app/models/dmsf_upload.rb @@ -54,7 +54,7 @@ class DmsfUpload def initialize(project, folder, uploaded) @name = uploaded["original_filename"] - dmsf_file = DmsfFile.find_file_by_name(project, folder, @name) + dmsf_file = DmsfFile.visible.find_file_by_name(project, folder, @name) @disk_filename = uploaded["disk_filename"] @mime_type = uploaded["content_type"] @@ -78,4 +78,4 @@ class DmsfUpload @locked = !dmsf_file.nil? && dmsf_file.locked_for_user? end -end \ No newline at end of file +end diff --git a/lib/redmine_dmsf/hooks/view_projects_form_hook.rb b/lib/redmine_dmsf/hooks/view_projects_form_hook.rb index 4ada549c..ad3acad3 100644 --- a/lib/redmine_dmsf/hooks/view_projects_form_hook.rb +++ b/lib/redmine_dmsf/hooks/view_projects_form_hook.rb @@ -11,8 +11,6 @@ module RedmineDmsf end - - end end end diff --git a/lib/redmine_dmsf/patches/project_patch.rb b/lib/redmine_dmsf/patches/project_patch.rb index 1dcc931f..7673c273 100644 --- a/lib/redmine_dmsf/patches/project_patch.rb +++ b/lib/redmine_dmsf/patches/project_patch.rb @@ -47,9 +47,9 @@ module RedmineDmsf end def dmsf_count - file_count = DmsfFile.project_root_files(self).count - folder_count = DmsfFolder.project_root_folders(self).count - DmsfFolder.project_root_folders(self).each {|rootfld| file_count += rootfld.deep_file_count; folder_count += rootfld.deep_folder_count } + file_count = DmsfFile.visible.project_root_files(self).count + folder_count = DmsfFolder.visible.project_root_folders(self).count + DmsfFolder.visible.project_root_folders(self).each {|rootfld| file_count += rootfld.deep_file_count; folder_count += rootfld.deep_folder_count } {:files => file_count, :folders => folder_count} end @@ -72,10 +72,10 @@ module RedmineDmsf # Simple yet effective approach to copying things def copy_dmsf(project) - DmsfFile.project_root_files(project).each {|f| + DmsfFile.visible.project_root_files(project).each {|f| f.copy_to(self, nil) } - DmsfFolder.project_root_folders(project).each {|f| + DmsfFolder.visible.project_root_folders(project).each {|f| f.copy_to(self, nil) } end diff --git a/lib/redmine_dmsf/webdav/dmsf_resource.rb b/lib/redmine_dmsf/webdav/dmsf_resource.rb index b8b53446..85f856a9 100644 --- a/lib/redmine_dmsf/webdav/dmsf_resource.rb +++ b/lib/redmine_dmsf/webdav/dmsf_resource.rb @@ -69,7 +69,7 @@ module RedmineDmsf # if we were to look within parent, we'd have to go all the way up the chain as part of the # existence check, and although I'm sure we'd love to access the heirarchy, I can't yet # see a practical need for it - folders = DmsfFolder.find(:all, :conditions => ["project_id = :project_id AND title = :title", {:project_id => project.id, :title => basename}], :order => "title ASC") + folders = DmsfFolder.visible.find(:all, :conditions => ["project_id = :project_id AND title = :title", {:project_id => project.id, :title => basename}], :order => "title ASC") return nil unless folders.length > 0 if (folders.length > 1) then folders.delete_if {|x| '/'+x.dmsf_path_str != projectless_path} diff --git a/lib/redmine_dmsf/webdav/project_resource.rb b/lib/redmine_dmsf/webdav/project_resource.rb index 0a138cb5..9e04daff 100644 --- a/lib/redmine_dmsf/webdav/project_resource.rb +++ b/lib/redmine_dmsf/webdav/project_resource.rb @@ -29,7 +29,7 @@ module RedmineDmsf return @children unless @children.nil? return [] if project.nil? || project.id.nil? @children = [] - project.dmsf_folders.map do |p| + project.dmsf_folders.visible.map do |p| @children.push child(p.title, p) end project.dmsf_files.visible.map do |p|