Sha256: 2370f0cfa92cd9621452a990fc06bf7072f000de0e760f6edfd8c286806425b5

Contents?: true

Size: 1.99 KB

Versions: 5

Compression:

Stored size: 1.99 KB

Contents

module Spree
  module Core
    module ControllerHelpers
      module Common
        extend ActiveSupport::Concern
        included do
          helper_method :title
          helper_method :title=
          helper_method :accurate_title

          layout :get_layout

          before_action :set_user_language

          protected

          # can be used in views as well as controllers.
          # e.g. <% self.title = 'This is a custom title for this view' %>
          attr_writer :title

          def title
            title_string = @title.present? ? @title : accurate_title
            if title_string.present?
              if Spree::Config[:always_put_site_name_in_title]
                [title_string, default_title].join(" #{Spree::Config[:title_site_name_separator]} ")
              else
                title_string
              end
            else
              default_title
            end
          end

          def default_title
            current_store.name
          end

          # this is a hook for subclasses to provide title
          def accurate_title
            current_store.seo_title
          end

          private

          def set_user_language
            locale = session[:locale]
            locale = store_locale if respond_to?(:store_locale, true) && locale.blank?
            locale = config_locale if respond_to?(:config_locale, true) && locale.blank?
            locale = Rails.application.config.i18n.default_locale if locale.blank?
            locale = I18n.default_locale unless I18n.available_locales.map(&:to_s).include?(locale.to_s)
            I18n.locale = locale
          end

          # Returns which layout to render.
          #
          # You can set the layout you want to render inside your Spree configuration with the +:layout+ option.
          #
          # Default layout is: +app/views/spree/layouts/spree_application+
          #
          def get_layout
            layout ||= Spree::Config[:layout]
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
spree_core-4.2.0.rc4 lib/spree/core/controller_helpers/common.rb
spree_core-4.2.0.rc3 lib/spree/core/controller_helpers/common.rb
spree_core-4.2.0.rc2 lib/spree/core/controller_helpers/common.rb
spree_core-4.2.0.rc1 lib/spree/core/controller_helpers/common.rb
spree_core-4.2.0.beta lib/spree/core/controller_helpers/common.rb