Sha256: 7e7c75721b6b3c9235e077cf04181d1f0c269d9f04e721a2c41eabca6f4d16ef

Contents?: true

Size: 1.4 KB

Versions: 2

Compression:

Stored size: 1.4 KB

Contents

module RailsConnector

  class ObjsController < ActionController::Base

    before_filter :restrict_non_allow_access
    before_filter :load_object

    respond_to :json

    def update
      raise "Required parameter 'obj' is missing." unless params[:obj].present?
      raise "Parameter 'obj' is not a hash." unless params[:obj].is_a?(Hash)

      convert_html_keys = params[:obj].keys.select do |key|
        @obj.type_of_attribute(key.to_s) == 'html'
      end

      convert_html_keys.each do |key|
        params[:obj][key] = ContentConversion.convert_html_links(
            params[:obj][key], request.host, request.port)
      end

      begin
        changed_obj = CmsRestApi.put(
          "revisions/#{Workspace.current.revision_id}/objs/#{params[:id]}",
          { :obj => params[:obj] }
        )
        render :json => changed_obj
      rescue ClientError => e
        render :json => {:error => e.message}, :status => e.http_code
      end
    end

    private

    def load_object
      @obj = Obj.find(params[:id])
    end

    def restrict_non_allow_access
      unless allow_access?
        render(:text => 'Forbidden', :status => 403)
      end
    end

    # If +true+, allow access to ObjsController, else deny access.
    # See {RailsConnector::Configuration.editing_auth} for details.
    # @return [Bool]
    def allow_access?
      Configuration.editing_auth_callback.call(request.env)
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
infopark_cloud_connector-6.8.3.174.51542603 app/controllers/rails_connector/objs_controller.rb
infopark_cloud_connector-6.8.3.115.227021242 app/controllers/rails_connector/objs_controller.rb