Sha256: 7626d8d06140135c46646a10818025b8eb6f320de4010acacbea99ace5fce97b

Contents?: true

Size: 1.59 KB

Versions: 25

Compression:

Stored size: 1.59 KB

Contents

module Spotlight
  module Resources
    ##
    # Creating new exhibit items from single-item entry forms
    # or batch CSV upload
    class UploadController < Spotlight::ApplicationController
      helper :all

      before_action :authenticate_user!

      load_and_authorize_resource :exhibit, class: Spotlight::Exhibit
      before_action :build_resource

      load_and_authorize_resource class: 'Spotlight::Resources::Upload', through_association: 'exhibit.resources', instance_name: 'resource'

      # rubocop:disable Metrics/MethodLength
      def create
        @resource.attributes = resource_params

        if @resource.save_and_index
          flash[:notice] = t('spotlight.resources.upload.success')
          if params['add-and-continue']
            redirect_to new_exhibit_resource_path(@resource.exhibit, anchor: :new_resources_upload)
          else
            redirect_to admin_exhibit_catalog_path(@resource.exhibit, sort: :timestamp)
          end
        else
          flash[:error] = t('spotlight.resources.upload.error')
          redirect_to admin_exhibit_catalog_path(@resource.exhibit, sort: :timestamp)
        end
      end
      # rubocop:enable Metrics/MethodLength

      private

      def build_resource
        @resource ||= Spotlight::Resources::Upload.new exhibit: current_exhibit
      end

      def resource_params
        params.require(:resources_upload).permit(:url, data: data_param_keys)
      end

      def data_param_keys
        Spotlight::Resources::Upload.fields(current_exhibit).map(&:field_name) + current_exhibit.custom_fields.map(&:field)
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
blacklight-spotlight-0.32.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.31.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.30.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.29.1 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.29.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.28.3 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.28.2 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.28.1 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.28.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.27.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.26.1 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.26.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.25.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.24.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.23.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.22.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.21.0 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.20.3 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.20.2 app/controllers/spotlight/resources/upload_controller.rb
blacklight-spotlight-0.20.1 app/controllers/spotlight/resources/upload_controller.rb