diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index 40745eb0c..330159c33 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -109,6 +109,7 @@ class ReportsController < ApplicationController @edit = true @templates = Extends::REPORT_TEMPLATES @repositories = Repository.accessible_by_teams(current_team).active.select(:id, :name) + @report.settings = Report::DEFAULT_SETTINGS if @report.settings.blank? @project_contents = { experiments: @report.report_elements.where(type_of: 'experiment').pluck(:experiment_id), diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index b170d5293..35c4b543e 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -214,6 +214,7 @@ module ApplicationHelper end rescue StandardError => e Rails.logger.error e.message + 'icon_small/missing.png' end def wopi_enabled? diff --git a/app/helpers/reports_helper.rb b/app/helpers/reports_helper.rb index f03923ce5..523c0c5ba 100644 --- a/app/helpers/reports_helper.rb +++ b/app/helpers/reports_helper.rb @@ -93,7 +93,6 @@ module ReportsHelper element.element_references.each do |el_ref| locals[el_ref.class.name.underscore.to_sym] = el_ref end - locals[:order] = element.sort_order if type.in? ReportExtends::SORTED_ELEMENTS end (render partial: view, locals: locals).html_safe @@ -102,8 +101,9 @@ module ReportsHelper # "Hack" to omit file preview URL because of WKHTML issues def report_image_asset_url(asset) preview = asset.inline? ? asset.large_preview : asset.medium_preview - image_tag(preview.processed - .service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME)) + image_tag(preview.processed.service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME)) + rescue ActiveStorage::FileNotFoundError + image_tag('icon_small/missing.png') end # "Hack" to load Glyphicons css directly from the CDN diff --git a/app/jobs/reports/pdf_job.rb b/app/jobs/reports/pdf_job.rb index ba892db5a..2244c746a 100644 --- a/app/jobs/reports/pdf_job.rb +++ b/app/jobs/reports/pdf_job.rb @@ -20,9 +20,10 @@ module Reports def perform(report, user) file = Tempfile.new(['report', '.pdf'], binmode: true) begin - template_name = Extends::REPORT_TEMPLATES[report.settings[:template]&.to_sym] + template = Extends::REPORT_TEMPLATES[report.settings[:template]&.to_sym] + template ||= Extends::REPORT_TEMPLATES.values.first - raise StandardError, 'Report template not found!' if template_name.blank? + raise StandardError, 'Report template not found!' if template.blank? ActionController::Renderer::RACK_KEY_TRANSLATION['warden'] ||= 'warden' proxy = Warden::Proxy.new({}, Warden::Manager.new({})) @@ -30,10 +31,10 @@ module Reports renderer = ApplicationController.renderer.new(warden: proxy) file << renderer.render( - pdf: 'report', header: { html: { template: "reports/templates/#{template_name}/header", + pdf: 'report', header: { html: { template: "reports/templates/#{template}/header", locals: { report: report, user: user }, layout: 'reports/footer_header.html.erb' } }, - footer: { html: { template: "reports/templates/#{template_name}/footer", + footer: { html: { template: "reports/templates/#{template}/footer", locals: { report: report, user: user }, layout: 'reports/footer_header.html.erb' } }, assigns: { settings: report.settings }, @@ -44,7 +45,7 @@ module Reports file.rewind - file = prepend_title_page(file, template_name, report, renderer) + file = prepend_title_page(file, template, report, renderer) file = append_result_asset_previews(report, file) if report.settings.dig(:task, :file_results_previews) @@ -103,9 +104,8 @@ module Reports merged_file end - def prepend_title_page(file, template_name, report, renderer) - - unless File.exists?(Rails.root.join('app', 'views', 'reports', 'templates', template_name, 'cover.html.erb')) + def prepend_title_page(file, template, report, renderer) + unless File.exist?(Rails.root.join('app', 'views', 'reports', 'templates', template, 'cover.html.erb')) return file end @@ -121,7 +121,7 @@ module Reports merged_file = Tempfile.new(['report', '.pdf'], binmode: true) title_page << renderer.render( - pdf: 'report', inline: renderer.render_to_string("reports/templates/#{template_name}/cover.html.erb", + pdf: 'report', inline: renderer.render_to_string("reports/templates/#{template}/cover.html.erb", layout: false, locals: { report: report, total_pages: total_pages.to_i }), disable_javascript: false, diff --git a/app/models/concerns/tiny_mce_images.rb b/app/models/concerns/tiny_mce_images.rb index 46feaccca..9f2f395d9 100644 --- a/app/models/concerns/tiny_mce_images.rb +++ b/app/models/concerns/tiny_mce_images.rb @@ -20,12 +20,16 @@ module TinyMceImages tiny_mce_assets.each do |tm_asset| next unless tm_asset&.image&.attached? - new_tm_asset_src = - if base64_encoded_imgs - tm_asset.convert_variant_to_base64(tm_asset.preview) - else - tm_asset.preview.processed.service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME) - end + begin + new_tm_asset_src = + if base64_encoded_imgs + tm_asset.convert_variant_to_base64(tm_asset.preview) + else + tm_asset.preview.processed.service_url(expires_in: Constants::URL_LONG_EXPIRE_TIME) + end + rescue ActiveStorage::FileNotFoundError + next + end html_description = Nokogiri::HTML(description) tm_asset_to_update = html_description.css( "img[data-mce-token=\"#{Base62.encode(tm_asset.id)}\"]" diff --git a/app/models/report.rb b/app/models/report.rb index 3ade38cf6..c58b6ab26 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -35,6 +35,7 @@ class Report < ApplicationRecord dependent: :delete_all DEFAULT_SETTINGS = { + template: 'scinote_template', all_tasks: true, task: { protocol: { diff --git a/app/views/reports/elements/_my_module_repository_element.html.erb b/app/views/reports/elements/_my_module_repository_element.html.erb index 360a57206..e0a2f6a5c 100644 --- a/app/views/reports/elements/_my_module_repository_element.html.erb +++ b/app/views/reports/elements/_my_module_repository_element.html.erb @@ -11,7 +11,6 @@ data-type="my_module_repository" data-id='{ "my_module_id": <%= my_module.id %>, "repository_id": <%= repository.id %> }' data-scroll-id="<%= "#{my_module.id}_#{repository.id}" %>" - data-order="<%= order == :asc ? 'asc' : 'desc' %>" data-name="<%= repository.name %>" data-icon-class="fas fa-list-alt">