app/models/content_folder.rb in daengine-0.6.21 vs app/models/content_folder.rb in daengine-0.6.22

- old
+ new

@@ -4,27 +4,18 @@ include Mongoid::Document #include Mongoid::Timestamps field :folder_id, type: String field :label, type: String - field :document_ids, type: Array, default: [] - + has_and_belongs_to_many :documents, :class_name => "DigitalAsset", inverse_of: nil #recursively_embeds_many embeds_many :child_folders, :class_name => "ContentFolder", :cyclic => true accepts_nested_attributes_for :child_folders - key :folder_id - validates_presence_of :folder_id, :label - validate :validate_has_content + #validates_uniqueness_of :folder_id - def validate_has_content - if child_folders.empty? && (document_ids.nil? || document_ids.empty?) - errors[:base] << 'Either child_folders or document_ids are required' - end - end - def self.lit_center_folder find_folder(FolderIds::LIT_CENTER) end def self.merrill_lynch_folder @@ -38,9 +29,29 @@ def self.find_folder(id) root = ContentFolder.last child_folders = root.nil? ? [] : Array(root.child_folders) child_folders.find { |folder| id == folder.folder_id } unless child_folders.nil? end + + def self.find_folder_by_relative_path(path) + folders = path.split('/') + root = ContentFolder.last + root.nil? ? nil : find_child_folder(root, folders) + end + + def self.find_child_folder(parent_folder, folders) + child_folders = Array(parent_folder.child_folders) + f = child_folders.find { |folder| folders[0] == folder.folder_id } + unless f.nil? + folders.shift + if folders.count > 0 + return find_child_folder(f, folders) + else + return f + end + end + end + end class ContentFolder::FolderIds LIT_CENTER = 'lit_center' MERRILL_LYNCH = 'merrill_lynch' \ No newline at end of file