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
|