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