images_controller.rb 1.96 KB
module Kanjai
  class Admin::ImagesController < AdminController

    before_action :generate_s3_options, only: [:index, :edit, :get_gallery]

    def index
      
    end

    def list
      collection = Kanjai::Image.all
      if params[:tags] && params[:tags].count > 0 && !params[:tags].include?('all')
        collection = collection.tagged_with(params[:tags], :any => true)
      end

      render partial: 'kanjai/admin/images/gallery_exist_images', locals: {collection: collection}
    end

    def edit
      @file = Kanjai::Image.find(params[:id])
      render layout: false
    end

    def update
      @file = Kanjai::Image.find(params[:id])
      if @file.update(permitted_params[:image])
        @file.resize! if params[:image] && params[:image][:image_link].present?
        render json: {status: 'ok', id: @file.id, link: @file.preview_link}
      else
        render json: {status: 'error', message: @file.errors.full_message}
      end
    end

    def update_gallery
      params[:gallery_image] ||= {}
      params[:gallery_image].each do |key, data|

        obj = S3_BUCKET.object(data['file'].split('/')[3..-1].join('/'))


        image = Image.create({
          title: data['name'],
          file_type: data['type'],
          file_size: obj.content_length,
          image_link: data['file'],
          tag_list: data['tags']
        })

        image.resize!


      end
    end

    def delete_gallery_image
      @image = Image.find(params[:id])
      @image.destroy
      render json: {status: 'ok', id: @image.id}
    end

    def get_gallery
      @collection = Image.where(file_type: Kanjai::Image::IMAGE_MIME_TYPE)

      render :layout => false
    end

    private

    def generate_s3_options
      @s3_direct_post = S3_BUCKET.presigned_post(key: "#{Image.get_image_file_path}${filename}", success_action_status: '201', acl: 'public-read')
    end

    def permitted_params
      params.permit(:image => [:title, :tag_list, :image_link, :file_type])
    end
  end
end