scinote-web/app/models/concerns/tiny_mce_images.rb

40 lines
1.2 KiB
Ruby
Raw Normal View History

2019-03-11 20:43:50 +08:00
# 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]
2019-03-20 21:40:18 +08:00
tiny_mce_assets.each do |tm_asset|
tmp_f = Tempfile.open(tm_asset.image_file_name, Rails.root.join('tmp'))
2019-03-11 20:43:50 +08:00
begin
2019-03-20 21:40:18 +08:00
tm_asset.image.copy_to_local_file(:large, tmp_f.path)
encoded_tm_asset = Base64.strict_encode64(tmp_f.read)
2019-03-20 22:20:31 +08:00
new_tm_asset = "<img class='img-responsive'
src='data:image/jpg;base64,#{encoded_tm_asset}' >"
2019-03-11 20:43:50 +08:00
html_description = Nokogiri::HTML(description)
2019-03-20 22:20:31 +08:00
tm_asset_to_update = html_description.css(
"img[data-token=\"#{Base62.encode(tm_asset.id)}\"]"
)[0]
tm_asset_to_update.replace new_tm_asset
2019-03-11 20:43:50 +08:00
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
2019-03-11 20:43:50 +08:00
end
end