Class: Cms::PageResolver

Inherits:
Object
  • Object
show all
Defined in:
app/services/cms/page_resolver.rb

Defined Under Namespace

Classes: Result

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(site:, slug:, locale:) ⇒ PageResolver

Returns a new instance of PageResolver.



20
21
22
23
24
# File 'app/services/cms/page_resolver.rb', line 20

def initialize(site:, slug:, locale:)
  @site   = site
  @slug   = slug.to_s
  @locale = locale.to_s.presence
end

Class Method Details

.resolve(site:, slug: nil, locale: nil) ⇒ Result?

Finds a published page by slug within a site and resolves the best available locale using the fallback chain:

requested locale  site.default_locale  I18n.default_locale  any

Parameters:

  • site (Cms::Site)
  • slug (String, nil) (defaults to: nil)

    nil or blank resolves the home page; nested paths such as “about/history” resolve by ancestor chain

  • locale (String, nil) (defaults to: nil)

    the caller’s preferred locale

Returns:



16
17
18
# File 'app/services/cms/page_resolver.rb', line 16

def self.resolve(site:, slug: nil, locale: nil)
  new(site: site, slug: slug, locale: locale).resolve
end

Instance Method Details

#resolveObject



26
27
28
29
30
31
# File 'app/services/cms/page_resolver.rb', line 26

def resolve
  page = find_page
  return nil unless page

  Result.new(page: page, locale: resolved_locale_for(page))
end