Method: Occams::RenderMethods#render_cms_page

Defined in:
lib/occams/render_methods.rb

#render_cms_page(path, options = {}, locals = {}, &block) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/occams/render_methods.rb', line 58

def render_cms_page(path, options = {}, locals = {}, &block)
  path.gsub!(%r{^/#{@cms_site.path}}, '') if @cms_site.path.present?

  unless (@cms_page = @cms_site.pages.find_by_full_path(path))
    raise Occams::MissingPage, path
  end

  @cms_page.translate!

  @cms_layout = @cms_page.layout
  if (cms_fragments = options.delete(:cms_fragments)).present?
    cms_fragments.each do |identifier, value|
      content = value.is_a?(Hash) ? render_to_string(value.merge(layout: false)) : value.to_s
      page_fragment = @cms_page.fragments.detect { |f| f.identifier == identifier.to_s } ||
                      @cms_page.fragments.build(identifier: identifier.to_s)
      page_fragment.content = content
    end
  end
  cms_app_layout = @cms_layout.app_layout
  options[:layout] ||= cms_app_layout.blank? ? nil : cms_app_layout
  options[:inline] = @cms_page.render

  render(options, locals, &block)
end