From 91fec89cab83bccfee97f06dcfd964b9f1824abb Mon Sep 17 00:00:00 2001 From: zmagod Date: Tue, 21 Nov 2017 16:30:48 +0100 Subject: [PATCH] adds tiny_mce_assets to protocol export --- app/controllers/protocols_controller.rb | 32 +++++++++++----- app/models/tiny_mce_asset.rb | 8 ++++ app/utilities/protocols_exporter.rb | 51 +++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 9 deletions(-) diff --git a/app/controllers/protocols_controller.rb b/app/controllers/protocols_controller.rb index 581b83e13..155e4d0e7 100644 --- a/app/controllers/protocols_controller.rb +++ b/app/controllers/protocols_controller.rb @@ -712,15 +712,29 @@ class ProtocolsController < ApplicationController protocol.steps.order(:id).each do |step| step_guid = get_guid(step.id) step_dir = "#{protocol_dir}/#{step_guid}" - next if step.assets.count <= 0 - step.assets.order(:id).each do |asset| - asset_guid = get_guid(asset.id) - asset_file_name = asset_guid.to_s + - File.extname(asset.file_file_name).to_s - ostream.put_next_entry("#{step_dir}/#{asset_file_name}") - input_file = asset.open - ostream.print(input_file.read) - input_file.close + if step.assets.exists? + step.assets.order(:id).each do |asset| + asset_guid = get_guid(asset.id) + asset_file_name = asset_guid.to_s + + File.extname(asset.file_file_name).to_s + ostream.put_next_entry("#{step_dir}/#{asset_file_name}") + input_file = asset.open + ostream.print(input_file.read) + input_file.close + end + end + if step.tiny_mce_assets.exists? + step.tiny_mce_assets.order(:id).each do |tiny_mce_asset| + asset_guid = get_guid(tiny_mce_asset.id) + asset_file_name = + "rte-#{asset_guid.to_s + + File.extname(tiny_mce_asset.image_file_name).to_s}" + + ostream.put_next_entry("#{step_dir}/#{asset_file_name}") + input_file = tiny_mce_asset.open + ostream.print(input_file.read) + input_file.close + end end end end diff --git a/app/models/tiny_mce_asset.rb b/app/models/tiny_mce_asset.rb index b38004a11..e79a99de8 100644 --- a/app/models/tiny_mce_asset.rb +++ b/app/models/tiny_mce_asset.rb @@ -54,6 +54,14 @@ class TinyMceAsset < ActiveRecord::Base end end + def open + if image.is_stored_on_s3? + Kernel.open(presigned_url, 'rb') + else + File.open(file.path, 'rb') + end + end + private def update_estimated_size diff --git a/app/utilities/protocols_exporter.rb b/app/utilities/protocols_exporter.rb index d14fa0bbb..3c7a10282 100644 --- a/app/utilities/protocols_exporter.rb +++ b/app/utilities/protocols_exporter.rb @@ -35,6 +35,32 @@ module ProtocolsExporter envelope_xml end + def tiny_mce_asset_present?(step) + step.tiny_mce_assets.exists? + end + + def get_tiny_mce_assets(text) + return unless text + regex = /\[~tiny_mce_id:([0-9a-zA-Z]+)\]/ + tiny_assets_xml = "\n" + text.gsub(regex) do |el| + match = el.match(regex) + img = TinyMceAsset.find_by_id(match[1]) + next unless img + img_guid = get_guid(img.id) + asset_file_name = "rte-#{img_guid}" \ + "#{File.extname(img.image_file_name)}" + asset_xml = "\n" + asset_xml << "#{img.image_file_name}\n" + asset_xml << "#{img.image_content_type}\n" + asset_xml << "\n" + tiny_assets_xml << asset_xml + end + tiny_assets_xml << "\n" + tiny_assets_xml + end + def generate_protocol_xml(protocol) protocol_name = get_protocol_name(protocol) protocol_xml = "\n" @@ -56,6 +82,9 @@ module ProtocolsExporter step_xml << "#{step.name}\n" step_xml << "#{step.description}\n" + if tiny_mce_asset_present?(step) + step_xml << get_tiny_mce_assets(step.description) + end # Assets if step.assets.count > 0 step_xml << "\n" @@ -217,6 +246,28 @@ module ProtocolsExporter eln_xsd << "\n" eln_xsd << "\n" eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" + eln_xsd << "\n" eln_xsd << "\n" eln_xsd << "\n" eln_xsd << "\n"