Class: Droom::Folder

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
ActsAsTree, Concerns::Slugged
Defined in:
app/models/droom/folder.rb

Instance Method Summary collapse

Instance Method Details

#ancestor_of?(folder) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
# File 'app/models/droom/folder.rb', line 85

def ancestor_of?(folder)
  folder && folder.ancestors.include?(self)
end

#copy_to_dropbox(user) ⇒ Object



89
90
91
92
# File 'app/models/droom/folder.rb', line 89

def copy_to_dropbox(user)
  Rails.logger.warn ">>> creating dropbox subfolder #{slug} for user #{user.name}"
  documents.each { |doc| doc.copy_to_dropbox(user) }
end

#dropboxed_for?(user) ⇒ Boolean

Returns:

  • (Boolean)


94
95
96
# File 'app/models/droom/folder.rb', line 94

def dropboxed_for?(user)
  # dropbox_documents.for_user(user).any?
end

#empty?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'app/models/droom/folder.rb', line 68

def empty?
  !populated?
end

#familyObject

If we start to get deep folder trees we’ll have to use ancestry instead of acts_as_tree.



77
78
79
# File 'app/models/droom/folder.rb', line 77

def family
  self_and_children
end

#get_name_from_holderObject



98
99
100
101
# File 'app/models/droom/folder.rb', line 98

def get_name_from_holder
  send :set_properties
  self.save if self.changed?
end

#loose?Boolean

Returns:

  • (Boolean)


81
82
83
# File 'app/models/droom/folder.rb', line 81

def loose?
  !parent
end

#pathObject



60
61
62
# File 'app/models/droom/folder.rb', line 60

def path
  "#{parent.path if parent}/#{slug}"
end

#populated?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'app/models/droom/folder.rb', line 64

def populated?
  children.any? || documents.any?
end

#simple?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'app/models/droom/folder.rb', line 72

def simple?
  children.empty? && documents.count <= 3
end

#visible_to?(user) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
41
42
43
44
45
# File 'app/models/droom/folder.rb', line 38

def visible_to?(user)
  return true if self.public?
  return false unless user
  return true if user.admin?
  return true if user.has_folder?(self)
  return false if self.private?
  return true
end