Sha256: 0c010fd7af8e3f4f85058ac0b36060fffbc8e44ba22ed0edebf3a9f2ed8be3b8

Contents?: true

Size: 1.1 KB

Versions: 11

Compression:

Stored size: 1.1 KB

Contents

module RailsConnector
  class CmsDispatchController < ActionController::Metal
    def process(action)
      CmsEnv.new(request.env).load
      controller = target_controller(request.env)
      request.env["action_dispatch.request.path_parameters"][:controller] = controller.controller_path

      action = loaded_obj.controller_action_name if !obj_not_found? && action == "index"

      request.env["action_dispatch.request.path_parameters"][:action] = action

      self.response = controller.action(action).call(request.env)
    end

    private

    def target_controller(_env)
      return default_controller if obj_not_found?

      controller = "#{loaded_obj.controller_name}Controller".constantize

      if controller.respond_to?(:use_for_obj_dispatch?) && controller.use_for_obj_dispatch?
        controller
      else
        default_controller
      end
    rescue NameError
      default_controller
    end

    def loaded_obj
      request.env[CmsEnv::OBJ_ENV_KEY]
    end

    def obj_not_found?
      loaded_obj.is_a?(StandardError)
    end

    def default_controller
      CmsController
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
infopark_fiona_connector-7.0.1.6.1.6.rc4 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.6.1.6.rc3 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.6.1.6.rc2 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.6.1.6.rc1 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.5.2.7.rc1 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.5.2.4.rc2 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.5.2.4.rc1 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.5.2.3.rc8 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.5.2.3.rc7 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.5.2.3.rc6 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.1.5.2.3.rc5 lib/rails_connector/cms_dispatch_controller.rb