mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-01-10 09:28:37 +08:00
38 lines
1.1 KiB
Ruby
38 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module TinyMceImages
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
has_many :tiny_mce_assets,
|
|
as: :object,
|
|
class_name: :TinyMceAsset,
|
|
dependent: :destroy
|
|
|
|
def prepare_for_report(field)
|
|
description = self[field]
|
|
tiny_mce_assets.each do |tm_asset|
|
|
tmp_f = Tempfile.open(tm_asset.image_file_name, Rails.root.join('tmp'))
|
|
begin
|
|
tm_asset.image.copy_to_local_file(:large, tmp_f.path)
|
|
encoded_tm_asset = Base64.strict_encode64(tmp_f.read)
|
|
new_tm_asset_src = "data:image/jpg;base64,#{encoded_tm_asset}"
|
|
html_description = Nokogiri::HTML(description)
|
|
tm_asset_to_update = html_description.css(
|
|
"img[data-mce-token=\"#{Base62.encode(tm_asset.id)}\"]"
|
|
)[0]
|
|
tm_asset_to_update.attributes['src'].value = new_tm_asset_src
|
|
description = html_description.css('body').inner_html.to_s
|
|
ensure
|
|
tmp_f.close
|
|
tmp_f.unlink
|
|
end
|
|
end
|
|
description
|
|
end
|
|
|
|
def tinymce_render(field)
|
|
TinyMceAsset.generate_url(self[field])
|
|
end
|
|
end
|
|
end
|