Updated files inline with changes in #12

This commit is contained in:
Daniel Munn 2012-06-22 13:38:21 +01:00
parent a445de4cc8
commit 6c8d3c1128
12 changed files with 39 additions and 39 deletions

View File

@ -28,10 +28,10 @@ class DmsfController < ApplicationController
def show def show
if @folder.nil? 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) @files = @project.dmsf_files.visible #DmsfFile.project_root_files(@project)
else else
@subfolders = @folder.subfolders @subfolders = @folder.subfolders.visible
@files = @folder.files.visible @files = @folder.files.visible
end end
@ -284,7 +284,7 @@ class DmsfController < ApplicationController
def zip_entries(zip, selected_folders, selected_files) def zip_entries(zip, selected_folders, selected_files)
if selected_folders && selected_folders.is_a?(Array) if selected_folders && selected_folders.is_a?(Array)
selected_folders.each do |selected_folder_id| 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? zip.add_folder(folder, (@folder.dmsf_path_str unless @folder.nil?)) unless folder.nil?
end end
end end
@ -309,7 +309,7 @@ class DmsfController < ApplicationController
end end
def find_folder 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) check_project(@folder)
rescue DmsfAccessError rescue DmsfAccessError
render_403 render_403

View File

@ -223,13 +223,13 @@ class DmsfFilesController < ApplicationController
end end
def find_file def find_file
@file = DmsfFile.find(params[:id]) @file = DmsfFile.visible.find(params[:id])
@project = @file.project @project = @file.project
rescue rescue
end end
def find_revision def find_revision
@revision = DmsfFileRevision.find(params[:id]) @revision = DmsfFileRevision.visible.find(params[:id])
@file = @revision.file @file = @revision.file
@project = @file.project @project = @file.project
end end

View File

@ -37,7 +37,7 @@ class DmsfFilesCopyController < ApplicationController
@target_project ||= DmsfFile.allowed_target_projects_on_copy[0] @target_project ||= DmsfFile.allowed_target_projects_on_copy[0]
end 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 @target_folder ||= @file.folder if @target_project == @project
render :layout => !request.xhr? render :layout => !request.xhr?
@ -49,7 +49,7 @@ class DmsfFilesCopyController < ApplicationController
render_403 render_403
return return
end 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 if !@target_folder.nil? && @target_folder.project != @target_project
raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project) raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project)
end end
@ -86,7 +86,7 @@ class DmsfFilesCopyController < ApplicationController
render_403 render_403
return return
end 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 if !@target_folder.nil? && @target_folder.project != @target_project
raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project) raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project)
end end
@ -125,7 +125,7 @@ class DmsfFilesCopyController < ApplicationController
end end
def find_file def find_file
@file = DmsfFile.find(params[:id]) @file = DmsfFile.visible.find(params[:id])
@project = @file.project @project = @file.project
end end

View File

@ -35,7 +35,7 @@ class DmsfFoldersCopyController < ApplicationController
@target_project ||= DmsfFolder.allowed_target_projects_on_copy[0] @target_project ||= DmsfFolder.allowed_target_projects_on_copy[0]
end 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 @target_folder ||= @folder.folder if @target_project == @project
render :layout => !request.xhr? render :layout => !request.xhr?
@ -47,7 +47,7 @@ class DmsfFoldersCopyController < ApplicationController
render_403 render_403
return return
end 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 if !@target_folder.nil? && @target_folder.project != @target_project
raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project) raise DmsfAccessError, l(:error_entry_project_does_not_match_current_project)
end end
@ -89,7 +89,7 @@ class DmsfFoldersCopyController < ApplicationController
end end
def find_folder def find_folder
@folder = DmsfFolder.find(params[:id]) @folder = DmsfFolder.visible.find(params[:id])
@project = @folder.project @project = @folder.project
end end

View File

@ -195,7 +195,7 @@ class DmsfUploadController < ApplicationController
end end
def find_folder 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) check_project(@folder)
rescue DmsfAccessError rescue DmsfAccessError
render_403 render_403

View File

@ -48,7 +48,7 @@ class DmsfFile < ActiveRecord::Base
end end
def validates_name_uniqueness 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 errors.add(:name, l("activerecord.errors.messages.taken")) unless
existing_file.nil? || existing_file.id == self.id existing_file.nil? || existing_file.id == self.id
end end
@ -76,18 +76,18 @@ class DmsfFile < ActiveRecord::Base
end end
def self.project_root_files(project) def self.project_root_files(project)
find(:all, :conditions => visible.find(:all, :conditions =>
["dmsf_folder_id is NULL and project_id = :project_id and deleted = :deleted", ["dmsf_folder_id is NULL and project_id = :project_id",
{:project_id => project.id, :deleted => false}], :order => "name ASC") {:project_id => project.id}], :order => "name ASC")
end end
def self.find_file_by_name(project, folder, name) def self.find_file_by_name(project, folder, name)
if folder.nil? if folder.nil?
find(:first, :conditions => visible.find(:first, :conditions =>
["dmsf_folder_id is NULL and project_id = :project_id and name = :name", ["dmsf_folder_id is NULL and project_id = :project_id and name = :name",
{:project_id => project.id, :name => name}]) {:project_id => project.id, :name => name}])
else else
find(:first, :conditions => visible.find(:first, :conditions =>
["dmsf_folder_id = :folder_id and project_id = :project_id and name = :name", ["dmsf_folder_id = :folder_id and project_id = :project_id and name = :name",
{:project_id => project.id, :folder_id => folder.id, :name => name}]) {:project_id => project.id, :folder_id => folder.id, :name => name}])
end end

View File

@ -30,6 +30,8 @@ class DmsfFolder < ActiveRecord::Base
:dependent => :destroy :dependent => :destroy
belongs_to :user belongs_to :user
scope :visible, lambda {|*args| {:conditions => "" }} #For future use, however best to be referenced now
acts_as_customizable acts_as_customizable
validates_presence_of :title validates_presence_of :title
@ -66,18 +68,18 @@ class DmsfFolder < ActiveRecord::Base
def self.find_by_title(project, folder, title) def self.find_by_title(project, folder, title)
if folder.nil? if folder.nil?
find(:first, :conditions => visible.find(:first, :conditions =>
["dmsf_folder_id is NULL and project_id = :project_id and title = :title", ["dmsf_folder_id is NULL and project_id = :project_id and title = :title",
{:project_id => project.id, :title => title}]) {:project_id => project.id, :title => title}])
else else
find(:first, :conditions => visible.find(:first, :conditions =>
["dmsf_folder_id = :folder_id and title = :title", ["dmsf_folder_id = :folder_id and title = :title",
{:project_id => project.id, :folder_id => folder.id, :title => title}]) {:project_id => project.id, :folder_id => folder.id, :title => title}])
end end
end end
def delete def delete
return false if !self.subfolders.empty? || !self.files.visible.empty? return false if !self.subfolders.visible.empty? || !self.files.visible.empty?
destroy destroy
end end
@ -115,7 +117,7 @@ class DmsfFolder < ActiveRecord::Base
def self.directory_tree(project, current_folder = nil) def self.directory_tree(project, current_folder = nil)
tree = [[l(:link_documents), 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 unless folder == current_folder
tree.push(["...#{folder.title}", folder.id]) tree.push(["...#{folder.title}", folder.id])
directory_subtree(tree, folder, 2, current_folder) directory_subtree(tree, folder, 2, current_folder)
@ -126,20 +128,20 @@ class DmsfFolder < ActiveRecord::Base
def deep_file_count def deep_file_count
file_count = self.files.visible.length 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 file_count
end end
def deep_folder_count def deep_folder_count
folder_count = self.subfolders.length 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 folder_count
end end
def deep_size def deep_size
size = 0 size = 0
self.files.visible.each {|file| size += file.size} 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 size
end end
@ -244,7 +246,7 @@ class DmsfFolder < ActiveRecord::Base
private private
def self.directory_subtree(tree, folder, level, current_folder) def self.directory_subtree(tree, folder, level, current_folder)
folder.subfolders.each do |subfolder| folder.subfolders.visible.each do |subfolder|
unless subfolder == current_folder unless subfolder == current_folder
tree.push(["#{"..." * level}#{subfolder.title}", subfolder.id]) tree.push(["#{"..." * level}#{subfolder.title}", subfolder.id])
directory_subtree(tree, subfolder, level + 1, current_folder) directory_subtree(tree, subfolder, level + 1, current_folder)

View File

@ -54,7 +54,7 @@ class DmsfUpload
def initialize(project, folder, uploaded) def initialize(project, folder, uploaded)
@name = uploaded["original_filename"] @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"] @disk_filename = uploaded["disk_filename"]
@mime_type = uploaded["content_type"] @mime_type = uploaded["content_type"]
@ -78,4 +78,4 @@ class DmsfUpload
@locked = !dmsf_file.nil? && dmsf_file.locked_for_user? @locked = !dmsf_file.nil? && dmsf_file.locked_for_user?
end end
end end

View File

@ -11,8 +11,6 @@ module RedmineDmsf
end end
end end
end end
end end

View File

@ -47,9 +47,9 @@ module RedmineDmsf
end end
def dmsf_count def dmsf_count
file_count = DmsfFile.project_root_files(self).count file_count = DmsfFile.visible.project_root_files(self).count
folder_count = DmsfFolder.project_root_folders(self).count folder_count = DmsfFolder.visible.project_root_folders(self).count
DmsfFolder.project_root_folders(self).each {|rootfld| file_count += rootfld.deep_file_count; folder_count += rootfld.deep_folder_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} {:files => file_count, :folders => folder_count}
end end
@ -72,10 +72,10 @@ module RedmineDmsf
# Simple yet effective approach to copying things # Simple yet effective approach to copying things
def copy_dmsf(project) def copy_dmsf(project)
DmsfFile.project_root_files(project).each {|f| DmsfFile.visible.project_root_files(project).each {|f|
f.copy_to(self, nil) 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) f.copy_to(self, nil)
} }
end end

View File

@ -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 # 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 # existence check, and although I'm sure we'd love to access the heirarchy, I can't yet
# see a practical need for it # 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 return nil unless folders.length > 0
if (folders.length > 1) then if (folders.length > 1) then
folders.delete_if {|x| '/'+x.dmsf_path_str != projectless_path} folders.delete_if {|x| '/'+x.dmsf_path_str != projectless_path}

View File

@ -29,7 +29,7 @@ module RedmineDmsf
return @children unless @children.nil? return @children unless @children.nil?
return [] if project.nil? || project.id.nil? return [] if project.nil? || project.id.nil?
@children = [] @children = []
project.dmsf_folders.map do |p| project.dmsf_folders.visible.map do |p|
@children.push child(p.title, p) @children.push child(p.title, p)
end end
project.dmsf_files.visible.map do |p| project.dmsf_files.visible.map do |p|