mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
80 lines
3.0 KiB
Ruby
80 lines
3.0 KiB
Ruby
module Spree
|
|
module Admin
|
|
class ImageSettingsController < Spree::Admin::BaseController
|
|
def edit
|
|
@styles = ActiveSupport::JSON.decode(Spree::Config[:attachment_styles])
|
|
@headers = ActiveSupport::JSON.decode(Spree::Config[:s3_headers])
|
|
end
|
|
|
|
def update
|
|
update_styles(params)
|
|
update_headers(params) if Spree::Config[:use_s3]
|
|
|
|
Spree::Config.set(params[:preferences])
|
|
update_paperclip_settings
|
|
|
|
respond_to do |format|
|
|
format.html {
|
|
flash[:success] = Spree.t(:image_settings_updated)
|
|
redirect_to spree.edit_admin_image_settings_path
|
|
}
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def update_styles(params)
|
|
if params[:new_attachment_styles].present?
|
|
params[:new_attachment_styles].each do |_index, style|
|
|
params[:attachment_styles][style[:name]] = style[:value] if style[:value].present?
|
|
end
|
|
end
|
|
|
|
styles = params[:attachment_styles]
|
|
|
|
Spree::Config[:attachment_styles] = ActiveSupport::JSON.encode(styles) unless styles.nil?
|
|
end
|
|
|
|
def update_headers(params)
|
|
if params[:new_s3_headers].present?
|
|
params[:new_s3_headers].each do |_index, header|
|
|
params[:s3_headers][header[:name]] = header[:value] if header[:value].present?
|
|
end
|
|
end
|
|
|
|
headers = params[:s3_headers]
|
|
|
|
Spree::Config[:s3_headers] = ActiveSupport::JSON.encode(headers) unless headers.nil?
|
|
end
|
|
|
|
def update_paperclip_settings
|
|
if Spree::Config[:use_s3]
|
|
s3_creds = { access_key_id: Spree::Config[:s3_access_key],
|
|
secret_access_key: Spree::Config[:s3_secret],
|
|
bucket: Spree::Config[:s3_bucket] }
|
|
Spree::Image.attachment_definitions[:attachment][:storage] = :s3
|
|
Spree::Image.attachment_definitions[:attachment][:s3_credentials] = s3_creds
|
|
Spree::Image.attachment_definitions[:attachment][:s3_headers] =
|
|
ActiveSupport::JSON.decode(Spree::Config[:s3_headers])
|
|
Spree::Image.attachment_definitions[:attachment][:bucket] = Spree::Config[:s3_bucket]
|
|
else
|
|
Spree::Image.attachment_definitions[:attachment].delete :storage
|
|
end
|
|
|
|
Spree::Image.attachment_definitions[:attachment][:styles] =
|
|
ActiveSupport::JSON.decode(Spree::Config[:attachment_styles]).symbolize_keys!
|
|
Spree::Image.attachment_definitions[:attachment][:path] = Spree::Config[:attachment_path]
|
|
Spree::Image.attachment_definitions[:attachment][:default_url] =
|
|
Spree::Config[:attachment_default_url]
|
|
Spree::Image.attachment_definitions[:attachment][:default_style] =
|
|
Spree::Config[:attachment_default_style]
|
|
|
|
# Spree stores attachent definitions in JSON. This converts the style name and format to
|
|
# strings. However, when paperclip encounters these, it doesn't recognise the format.
|
|
# Here we solve that problem by converting format and style name to symbols.
|
|
Spree::Image.reformat_styles
|
|
end
|
|
end
|
|
end
|
|
end
|