Sha256: 46ed0acc3473ad4e7b3d7966ac8a3ff38d734d0732f61c7b0bec516770d2d8ad

Contents?: true

Size: 1.73 KB

Versions: 9

Compression:

Stored size: 1.73 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)
          # don't accept a non localized entry in a locale other than the default one
          return nil if type.localized_names.count == 0 && locale.to_s != default_locale.to_s

          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

9 entries across 9 versions & 1 rubygems

Version Path
locomotivecms_steam-1.1.2 lib/locomotive/steam/middlewares/templatized_page.rb
locomotivecms_steam-1.2.1 lib/locomotive/steam/middlewares/templatized_page.rb
locomotivecms_steam-1.2.0 lib/locomotive/steam/middlewares/templatized_page.rb
locomotivecms_steam-1.2.0.rc3 lib/locomotive/steam/middlewares/templatized_page.rb
locomotivecms_steam-1.2.0.rc2 lib/locomotive/steam/middlewares/templatized_page.rb
locomotivecms_steam-1.2.0.rc1 lib/locomotive/steam/middlewares/templatized_page.rb
locomotivecms_steam-1.2.0.beta1 lib/locomotive/steam/middlewares/templatized_page.rb
locomotivecms_steam-1.1.1 lib/locomotive/steam/middlewares/templatized_page.rb
locomotivecms_steam-1.1.0 lib/locomotive/steam/middlewares/templatized_page.rb