Sha256: d7989abe542d427c6ffd327dafdd938d85218cba4f50862b19074844311e8d21

Contents?: true

Size: 1.08 KB

Versions: 20

Compression:

Stored size: 1.08 KB

Contents

#:enddoc:
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

20 entries across 20 versions & 1 rubygems

Version Path
infopark_rails_connector-6.8.0.210.ed204b0 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.110.6570b45 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.72.d18d096 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.23.da7f96b lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.16.def5e85 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.15.a24f5ff lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.891.647580e lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.889.d503e42 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.883.f5f063b lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.884.4bd86e6 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.869.9609b39 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.856.8c0fec5 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.809.bdfa8c3 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.785.05d4af9 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.744.99f67fc lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.720.44fbabd lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.713.e5c3150 lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.681.7c84f4a lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.663.ceecdee lib/rails_connector/cms_dispatch_controller.rb
infopark_rails_connector-6.8.0.beta.200.650.7c93155 lib/rails_connector/cms_dispatch_controller.rb