Sha256: edd3ab417a2981ed5c4292b189eba88ac5967d4d351807f1c33acb7f00162556

Contents?: true

Size: 1.56 KB

Versions: 27

Compression:

Stored size: 1.56 KB

Contents

module Pageflow
  # A helper module that can be included in an entry type's frontend
  # app to access the {PublishedEntry}.
  #
  # @since 15.1
  module EntriesControllerEnvHelper
    module_function

    # Read the {PublishedEntry} from the request env. It will be
    # placed there by the Pageflow engine before delegating to the
    # entry type's frontend app.
    #
    # Use {EntriesControllerTestHelper} to set up the request
    # environment in controller tests.
    def get_published_entry_from_env(env = request.env)
      EntriesControllerEnvHelper.get_pageflow_hash(env)['published_entry']
    end

    # Returns `:preview` if a signed in user is currently viewing the
    # entry via the preview feature. Returns `:published` if the entry
    # is rendered on a publicly available site.  The information will
    # be placed in the request env by the Pageflow engine before
    # delegating to the entry type's frontend app.
    #
    # Use {EntriesControllerTestHelper} to set up the request
    # environment in controller tests.
    def get_entry_mode_from_env(env = request.env)
      EntriesControllerEnvHelper.get_pageflow_hash(env)['entry_mode']
    end

    # @api private
    def self.add_entry_info_to_env(env, entry:, mode: nil)
      env['pageflow'] = {'published_entry' => entry, 'entry_mode' => mode}
    end

    # @api private
    def self.get_pageflow_hash(env)
      env.fetch('pageflow') do
        throw('Missing pageflow key in request env. Use Pageflow::EntriesControllerTestHelper ' \
              'to set it in controller tests.')
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
pageflow-17.0.4 lib/pageflow/entries_controller_env_helper.rb
pageflow-17.0.3 lib/pageflow/entries_controller_env_helper.rb
pageflow-17.0.2 lib/pageflow/entries_controller_env_helper.rb
pageflow-17.0.1 lib/pageflow/entries_controller_env_helper.rb
pageflow-17.0.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-16.2.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-16.1.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-16.0.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.8.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.7.1 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.7.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.6.1 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.6.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.5.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.4.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.3.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.2.2 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.2.1 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.2.0 lib/pageflow/entries_controller_env_helper.rb
pageflow-15.1.2 lib/pageflow/entries_controller_env_helper.rb