Sha256: 0fdc348d0d1bde4ae5433c9a987e3b1582e17fe8be74085e889a642144f35046

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

# frozen_string_literal: true

module Archangel
  ##
  # @see Archangel::BackendController
  #
  module Backend
    ##
    # Backend assets controller
    #
    class AssetsController < BackendController
      include Archangel::Controllers::Backend::ResourcefulConcern

      ##
      # Create backend asset from WYSIWYG upload
      #
      # Formats
      #   JSON
      #
      # Request
      #   POST /backend/wysiwyg
      #   POST /backend/wysiwyg.json
      #
      # Paramaters
      #   {
      #     "file": "local/path/to/new_file.gif"
      #   }
      #
      # Response
      #   {
      #     "success": true,
      #     "url": "file_name.gif"
      #   }
      #
      def wysiwyg
        asset = resource_wysiwyg_content

        asset.save

        asset_response = {
          success: true,
          url: asset.file.url
        }

        respond_to do |format|
          format.json { render json: asset_response }
        end
      end

      protected

      def permitted_attributes
        %w[file file_name]
      end

      def resources_content
        @assets = current_site.assets
                              .order(file_name: :asc)
                              .page(page_num).per(per_page)

        authorize @assets
      end

      def resource_content
        resource_id = params.fetch(:id)

        @asset = current_site.assets.find_by!(id: resource_id)

        authorize @asset
      end

      def resource_new_content
        @asset = current_site.assets.new(resource_new_params)

        authorize @asset
      end

      def resource_wysiwyg_content
        wysiwyg_params = params.permit(permitted_attributes).reverse_merge(
          file_name: "#{SecureRandom.hex}.jpg"
        )

        @asset = current_site.assets.new(wysiwyg_params)

        authorize @asset
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
archangel-0.3.0 app/controllers/archangel/backend/assets_controller.rb