module Aerogel::Pages::Traversal

Public Class Methods

find( url, lang ) click to toggle source
# File lib/aerogel/pages/traversal.rb, line 12
def self.find( url, lang )
  page = root(lang)
  traverse page, url.dup, lang
end
find_closest_in_other_lang( page, lang ) click to toggle source
# File lib/aerogel/pages/traversal.rb, line 24
def self.find_closest_in_other_lang( page, lang )
  return page.page_node.page(lang) if page.page_node.page(lang).present?
  return root(lang) if page.root?
  find_closest_in_other_lang( page.parent, lang )
end
page( id, lang ) click to toggle source
# File lib/aerogel/pages/traversal.rb, line 4
def self.page( id, lang )
  PageNode.find( id ).try( :page, lang )
end
root( lang ) click to toggle source
# File lib/aerogel/pages/traversal.rb, line 8
def self.root( lang )
  Page.root(lang)
end
traverse( page, url, lang ) click to toggle source
# File lib/aerogel/pages/traversal.rb, line 17
def self.traverse( page, url, lang )
  return page if page.nil? || url.blank?
  link = url.shift
  page = page.children.where( link: link ).first
  traverse page, url, lang
end