5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-12-01 09:06:23 +00:00
panel/app/models/post/image_uploader.rb

63 lines
1.5 KiB
Ruby
Raw Normal View History

2019-03-26 15:32:20 +00:00
# frozen_string_literal: true
2018-07-02 20:45:32 +00:00
# Una clase que permite adjuntar imágenes a artículos
class Post::ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
2018-07-02 20:45:32 +00:00
attr_accessor :site
process :strip
process resize_to_limit: [1280, 1280]
version :thumb do
process :strip
2019-03-26 15:32:20 +00:00
process resize_to_fit: [200, 200]
end
def strip
manipulate! do |img|
img.strip
img
end
end
2018-07-02 20:45:32 +00:00
# Necesitamos pasar el sitio para poder acceder a los archivos locales
2018-08-22 21:37:44 +00:00
def initialize(site, wtf = nil)
2018-07-02 20:45:32 +00:00
super
@site = site
end
# Solo aceptamos imágenes
def content_type_whitelist
2019-03-26 15:32:20 +00:00
%r{\Aimage/}
2018-07-02 20:45:32 +00:00
end
# Devuelve la ubicación del directorio dentro de Jekyll, para eso,
# tenemos que tener acceso al sitio que estamos editando
def store_dir
File.join site.path, 'public', 'images'
end
# Almacenar en el 'tmp' local
def cache_dir
File.join Rails.root, 'tmp', 'images'
end
# XXX los nombres de los archivos siempre son únicos, no chequeamos si
# están repetidos.
def filename
2018-10-02 20:11:13 +00:00
current_filename = parent_version.try(:filename) || file.try(:filename)
2019-03-26 15:32:20 +00:00
@unique_filename ||= if /\A(thumb_)?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\..*\Z/.match?(current_filename)
current_filename
else
[SecureRandom.uuid, '.', file.extension].join
2018-09-28 17:14:43 +00:00
end
2018-07-02 20:45:32 +00:00
end
# Obtener la URL dentro del proyecto de Jekyll
def url
CGI.unescape(super).remove site.path
end
end