Module: Locomotive::Concerns::Page::Tree

Extended by:
ActiveSupport::Concern
Included in:
Page
Defined in:
app/models/locomotive/concerns/page/tree.rb

Defined Under Namespace

Modules: PatchedTreeMethods

Instance Method Summary collapse

Instance Method Details

#children_with_minimal_attributes(attrs = []) ⇒ Array

Returns the children of this node but with the minimal set of required attributes

Returns:

  • (Array)

    The children pages ordered by their position


65
66
67
# File 'app/models/locomotive/concerns/page/tree.rb', line 65

def children_with_minimal_attributes(attrs = [])
  self.children.minimal_attributes(attrs)
end

#depthObject


84
85
86
# File 'app/models/locomotive/concerns/page/tree.rb', line 84

def depth
  self.parent_ids.count
end

#sort_children!(ids) ⇒ Object

Assigns the new position of each child of this node.

Parameters:

  • ids (Array)

    The ordered list of page ids (string)


73
74
75
76
77
78
79
80
81
82
# File 'app/models/locomotive/concerns/page/tree.rb', line 73

def sort_children!(ids)
  position, cached_children = 0, self.children.to_a
  ids.each do |id|
    if child = cached_children.detect { |p| p._id == BSON::ObjectId.from_string(id) }
      child.position = position
      child.save
      position += 1
    end
  end
end