Sha256: 6bc0f9411c9ae34fa852069e388019f6384e5e72834b9d7b3e5b4c0876429489
Contents?: true
Size: 1.55 KB
Versions: 8
Compression:
Stored size: 1.55 KB
Contents
module Locomotive::Steam module Middlewares class TemplatizedPage < ThreadSafe include Helpers def _call if page && page.templatized? set_content_entry! end end protected def set_content_entry! # extract the slug of the content entry %r(^#{page.fullpath.gsub(Locomotive::Steam::WILDCARD, '([^\/]+)')}$) =~ path if entry = fetch_content_entry($1) # the entry will be available in the template under different keys ['content_entry', 'entry', entry.content_type.slug.singularize].each do |key| liquid_assigns[key] = entry end env['steam.content_entry'] = page.content_entry = entry # log it log "Found content entry: #{entry._label}" else url = services.url_builder.url_for(page_not_found, locale) redirect_to url, 302 end end def fetch_content_entry(slug) if type = content_type_repository.find(page.content_type_id) decorate(content_entry_repository.with(type).by_slug(slug)) else nil end end def content_type_repository services.repositories.content_type end def content_entry_repository services.repositories.content_entry end def page_not_found services.page_finder.find('404') end def decorate(entry) return nil if entry.nil? Locomotive::Steam::Decorators::I18nDecorator.new(entry, locale, default_locale) end end end end
Version data entries
8 entries across 8 versions & 1 rubygems