diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 4e42d48e..98bb6973 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -28,6 +28,21 @@ class DmsfFolder < ActiveRecord::Base validates_presence_of :name validates_uniqueness_of :name, :scope => [:dmsf_folder_id, :project_id] + validate :check_cycle + + def check_cycle + folders = [] + self.subfolders.each {|f| folders.push(f)} + folders.each do |folder| + if folder == self.folder + errors.add(:folder, l(:error_create_cycle_in_folder_dependency)) + return false + end + folder.subfolders.each {|f| folders.push(f)} + end + return true + end + def self.project_root_folders(project) find(:all, :conditions => ["dmsf_folder_id is NULL and project_id = :project_id", {:project_id => project.id}], :order => "name ASC") diff --git a/app/views/dmsf_detail/folder_detail.html.erb b/app/views/dmsf_detail/folder_detail.html.erb index 8190682c..d46d6271 100644 --- a/app/views/dmsf_detail/folder_detail.html.erb +++ b/app/views/dmsf_detail/folder_detail.html.erb @@ -21,7 +21,7 @@

- <%= label_tag("", l(:label_folder) + ":") %> + <%= label_tag("", l(:field_folder) + ":") %> <%= f.select(:dmsf_folder_id, options_for_select(DmsfFolder.directory_tree(@project, @folder), :selected => @folder.nil? ? (@pathfolder.id unless @pathfolder.nil?) : (@folder.folder.id unless @folder.folder.nil?))) %> diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 531b8ed0..14ffeb89 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -136,5 +136,6 @@ cs: :permission_file_approval: "File approval" :permission_force_file_unlock: "Force file unlock" :label_file: "File" - :label_folder: "Folder" + :field_folder: "Folder" + :error_create_cycle_in_folder_dependency: "create cycle in folder dependency" \ No newline at end of file diff --git a/config/locales/de.yml b/config/locales/de.yml index e55dbd64..611414a2 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -132,5 +132,6 @@ de: :permission_file_approval: "File approval" :permission_force_file_unlock: "Force file unlock" :label_file: "File" - :label_folder: "Folder" + :field_folder: "Folder" + :error_create_cycle_in_folder_dependency: "create cycle in folder dependency" \ No newline at end of file diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index c6e113f3..7b53bb6a 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -132,5 +132,6 @@ en-GB: :permission_file_approval: "File approval" :permission_force_file_unlock: "Force file unlock" :label_file: "File" - :label_folder: "Folder" + :field_folder: "Folder" + :error_create_cycle_in_folder_dependency: "create cycle in folder dependency" \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 5a87d541..178d3122 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -136,5 +136,6 @@ en: :permission_file_approval: "File approval" :permission_force_file_unlock: "Force file unlock" :label_file: "File" - :label_folder: "Folder" + :field_folder: "Folder" + :error_create_cycle_in_folder_dependency: "create cycle in folder dependency" \ No newline at end of file diff --git a/config/locales/es.yml b/config/locales/es.yml index 0dc7d8f0..93e497ff 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -134,5 +134,6 @@ es: :permission_file_approval: "File approval" :permission_force_file_unlock: "Force file unlock" :label_file: "File" - :label_folder: "Folder" + :field_folder: "Folder" + :error_create_cycle_in_folder_dependency: "create cycle in folder dependency" \ No newline at end of file diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 552758b8..38bacb86 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -132,5 +132,6 @@ fr: :permission_file_approval: "File approval" :permission_force_file_unlock: "Force file unlock" :label_file: "File" - :label_folder: "Folder" + :field_folder: "Folder" + :error_create_cycle_in_folder_dependency: "create cycle in folder dependency" \ No newline at end of file diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 5a87d541..178d3122 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -136,5 +136,6 @@ en: :permission_file_approval: "File approval" :permission_force_file_unlock: "Force file unlock" :label_file: "File" - :label_folder: "Folder" + :field_folder: "Folder" + :error_create_cycle_in_folder_dependency: "create cycle in folder dependency" \ No newline at end of file diff --git a/config/locales/ru.yml b/config/locales/ru.yml index ef181062..19d6d1f8 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -132,5 +132,6 @@ ru: :permission_file_approval: "File approval" :permission_force_file_unlock: "Force file unlock" :label_file: "File" - :label_folder: "Folder" + :field_folder: "Folder" + :error_create_cycle_in_folder_dependency: "create cycle in folder dependency" \ No newline at end of file