Sha256: 4230f8ff61c8dd0b7e82f60e8011255792e95a3377a59818bfd6870505ace96d

Contents?: true

Size: 1.07 KB

Versions: 35

Compression:

Stored size: 1.07 KB

Contents

module RailsConnector

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

      if !obj_not_found? && action == 'index'
        action = loaded_obj.controller_action_name
      end

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

      self.response = controller.action(action).call(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
      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

35 entries across 35 versions & 3 rubygems

Version Path
infopark_fiona_connector-7.0.1.beta2 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-7.0.0 lib/rails_connector/cms_dispatch_controller.rb
infopark_fiona_connector-6.10.0.beta1 lib/rails_connector/cms_dispatch_controller.rb
infopark_cloud_connector-7.1.0 lib/rails_connector/cms_dispatch_controller.rb
infopark_cloud_connector-7.0.2 lib/rails_connector/cms_dispatch_controller.rb
infopark_cloud_connector-7.0.1 lib/rails_connector/cms_dispatch_controller.rb
infopark_cloud_connector-7.0.0 lib/rails_connector/cms_dispatch_controller.rb
infopark_cloud_connector-6.9.5 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.9.4 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.9.3.1.36404185 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.9.2.1.125136549 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.9.1.3.22208381 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.9.0.3.197272233 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.3.174.51542603 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.3.115.227021242 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.3.73.75172665 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.3.2.153416031 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.3.67.110847540 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.3.1.23895778 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.2.36.82613853 lib/rails_connector/cms_dispatch_controller.rb