diff --git a/app/controllers/protocols_controller.rb b/app/controllers/protocols_controller.rb index e9169db40..442cd23fc 100644 --- a/app/controllers/protocols_controller.rb +++ b/app/controllers/protocols_controller.rb @@ -606,9 +606,20 @@ class ProtocolsController < ApplicationController # #tule def protocolsio_import_create - + @protocolsio_too_big=false + file_size=(File.size(params[:json_file].path)) + + if(file_size/1000>Constants::FILE_MAX_SIZE_MB) + @protocolsio_too_big=true + respond_to do |format| + format.js {} + end + else + @protocolsio_too_big=false + end json_file_contents=File.read(params[:json_file].path) + json_file_contents.gsub! '\"', "'" @@ -632,7 +643,7 @@ def protocolsio_import_save # will have to fit various things in here (guidelines, manuscript citations etc etc) #"before_start","warning","guidelines","manuscript_citation","publish_date","created_on" #"vendor_name","vendor_link","keywords","tags" - description_array = [ "before_start","warning","guidelines","manuscript_citation","publish_date","created_on","vendor_name","vendor_link","keywords","tags" ] + description_array = [ "before_start","warning","guidelines","manuscript_citation","publish_date","created_on","vendor_name","vendor_link","keywords","tags","link" ] description_string=params["protocol"]["description"] #@import_object["description"]=params["protocol"]["description"] description_array.each do |element| @@ -640,16 +651,16 @@ def protocolsio_import_save if(@json_object[element]&&@json_object[element]!="") new_element = element.slice(0,1).capitalize + element.slice(1..-1) new_element= new_element.gsub("_"," ") - description_string=description_string+new_element.to_s+": "+params["protocol"]["created_at"].to_s+"\n" + description_string=description_string+new_element.to_s+": "+Sanitize.clean(params["protocol"]["created_at"].to_s)+"\n" end else if(element=="tags") - if(@json_object[element]&&@json_object[element]!="") + if(@json_object[element].any?&&@json_object[element]!="") new_element = element.slice(0,1).capitalize + element.slice(1..-1) new_element= new_element.gsub("_"," ") description_string=description_string+new_element.to_s+": " @json_object[element].each do |tag| - description_string=description_string+tag["tag_name"]+" , " + description_string=description_string+Sanitize.clean(tag["tag_name"])+" , " end description_string=description_string+"\n" end @@ -658,7 +669,7 @@ def protocolsio_import_save if(@json_object[element]&&@json_object[element]!="") new_element = element.slice(0,1).capitalize + element.slice(1..-1) new_element= new_element.gsub("_"," ") - description_string=description_string+new_element.to_s+": "+@json_object[element].to_s+"\n" + description_string=description_string+new_element.to_s+": "+Sanitize.clean(@json_object[element].to_s)+"\n" end end end @@ -696,7 +707,7 @@ def protocolsio_import_save when "1" if !key["data"].nil? && key["data"]!="" - element_string="
"+key["data"]+"
" + element_string="
"+(key["data"])+"
" if(@import_object["steps"][step_pos.to_s]["description"]) @import_object["steps"][step_pos.to_s]["description"]<" + element_string="
Expected result: "+(key["data"])+"
" @import_object["steps"][step_pos.to_s]["description"]<Developer: "+key["source_data"]["developer"]+"
Version: "+key["source_data"]["version"]+"
Link: "+key["source_data"]["link"]+"
Repository: "+key["source_data"]["repository"]+"
OS name , OS version: "+key["source_data"]["os_name"]+" , "+key["source_data"]["os_version"] + if(key["source_data"]["name"]&&key["source_data"]["developer"]&&key["source_data"]["version"]&&key["source_data"]["link"]&&key["source_data"]["repository"]&&key["source_data"]["os_name"]&&key["source_data"]["os_version"]) + element_string="
Software package: "+(key["source_data"]["name"])+"
Developer: "+(key["source_data"]["developer"])+"
Version: "+(key["source_data"]["version"])+"
Link: "+(key["source_data"]["link"])+"
Repository: "+(key["source_data"]["repository"])+"
OS name , OS version: "+(key["source_data"]["os_name"])+" , "+(key["source_data"]["os_version"]) @import_object["steps"][step_pos.to_s]["description"]<Link: "+key["source_data"]["link"] + if(key["source_data"]["name"]&&key["source_data"]["link"]) + element_string="
Dataset: "+(key["source_data"]["name"])+"
Link: "+(key["source_data"]["link"]) @import_object["steps"][step_pos.to_s]["description"]<Description: "+key["source_data"]["description"]+"
OS name , OS version: "+key["source_data"]["os_name"]+" , "+key["source_data"]["os_version"] + if(key["source_data"]["name"]&&key["source_data"]["description"]&&key["source_data"]["os_name"]&&key["source_data"]["os_version"]) + element_string="
Command: "+(key["source_data"]["name"])+"
Description: "+(key["source_data"]["description"])+"
OS name , OS version: "+(key["source_data"]["os_name"])+" , "+(key["source_data"]["os_version"]) @import_object["steps"][step_pos.to_s]["description"]<Author: "+key["source_data"]["full_name"]+"
Link: "+key["source_data"]["link"] + if(key["source_data"]["protocol_name"]&&key["source_data"]["full_name"]&&key["source_data"]["link"]) + element_string="
This protocol also contains an attached sub-protocol: "+(key["source_data"]["protocol_name"])+"
Author: "+(key["source_data"]["full_name"])+"
Link: "+(key["source_data"]["link"]) + @import_object["steps"][step_pos.to_s]["description"]<Link: "+key["source_data"]["link"] + if(key["source_data"]["body"]&&key["source_data"]["link"]) + element_string="
Safety information: "+(key["source_data"]["body"])+"
Link: "+(key["source_data"]["link"]) @import_object["steps"][step_pos.to_s]["description"]<" + element_string="
"+(value["data"].to_s)+"
" if(@import_object["steps"][step_pos.to_s]["description"]) @import_object["steps"][step_pos.to_s]["description"]<" + element_string="
Expected result: "+(value["data"])+"
" @import_object["steps"][step_pos.to_s]["description"]<Developer: "+value["source_data"]["developer"]+"
Version: "+value["source_data"]["version"]+"
Link: "+value["source_data"]["link"]+"
Repository: "+value["source_data"]["repository"]+"
OS name , OS version: "+value["source_data"]["os_name"]+" , "+value["source_data"]["os_version"] - @import_object["steps"][step_pos.to_s]["description"]<Link: "+value["source_data"]["link"] - @import_object["steps"][step_pos.to_s]["description"]<Description: "+value["source_data"]["description"]+"
OS name , OS version: "+value["source_data"]["os_name"]+" , "+value["source_data"]["os_version"] - @import_object["steps"][step_pos.to_s]["description"]<Author: "+value["source_data"]["full_name"]+"
Link: "+value["source_data"]["link"] + if(value["source_data"]["name"]&&value["source_data"]["developer"]&&value["source_data"]["version"]&&value["source_data"]["link"]&&value["source_data"]["repository"]&&value["source_data"]["os_name"]&&value["source_data"]["os_version"]) + element_string="
Software package: "+(value["source_data"]["name"])+"
Developer: "+(value["source_data"]["developer"])+"
Version: "+(value["source_data"]["version"])+"
Link: "+(value["source_data"]["link"])+"
Repository: "+(value["source_data"]["repository"])+"
OS name , OS version: "+(value["source_data"]["os_name"])+" , "+(value["source_data"]["os_version"]) + @import_object["steps"][step_pos.to_s]["description"]<Link: "+(value["source_data"]["link"]) + @import_object["steps"][step_pos.to_s]["description"]<Description: "+(value["source_data"]["description"])+"
OS name , OS version: "+(value["source_data"]["os_name"])+" , "+(value["source_data"]["os_version"]) + @import_object["steps"][step_pos.to_s]["description"]<Author: "+(value["source_data"]["full_name"])+"
Link: "+(value["source_data"]["link"]) + @import_object["steps"][step_pos.to_s]["description"]<Link: "+value["source_data"]["link"] + if(value["source_data"]["body"]&&value["source_data"]["link"]) + + element_string="
Safety information: "+(value["source_data"]["body"])+"
Link: "+(value["source_data"]["link"]) @import_object["steps"][step_pos.to_s]["description"]< root_url # protocolsDatatable.ajax.reload(); # $('#modal-import-json-protocol-preview').modal('hide'); else + @protocolsio_general_error=false format.json { render json: { name: p_name, new_name: protocol.name, status: :ok diff --git a/app/views/protocols/import_export/_import_json_protocol_preview_modal.html.erb b/app/views/protocols/import_export/_import_json_protocol_preview_modal.html.erb index 0bdca490e..703b8eb64 100644 --- a/app/views/protocols/import_export/_import_json_protocol_preview_modal.html.erb +++ b/app/views/protocols/import_export/_import_json_protocol_preview_modal.html.erb @@ -86,6 +86,13 @@ Guidelines:
<%= (@json_object["guidelines"]) %>
+ <% end %> + + <% if @json_object["link"]&&@json_object["link"]!="" %> + +
Supplied link:
+ <%= (@json_object["link"]) %> + <% end %> <% counter=0 %> @@ -317,37 +324,37 @@ <% if @json_object["manuscript_citation"]&&@json_object["manuscript_citation"]!="" %> -
Manuscript citation
+
Manuscript citation:
<%= (@json_object["manuscript_citation"]) %> <% end %> <% if @json_object["publish_date"]&&@json_object["publish_date"]!="" %> -
Publish date
+
Publish date:
<%= (@json_object["publish_date"]) %> <% end %> <% if @json_object["vendor_name"]&&@json_object["vendor_name"]!="" %> -
Vendor name
+
Vendor name:
<%= (@json_object["vendor_name"]) %> <% end %> <% if @json_object["vendor_link"]&&@json_object["vendor_link"]!="" %> -
Vendor link
+
Vendor link:
<%= (@json_object["vendor_link"]) %> <% end %> <% if @json_object["keywords"]&&@json_object["keywords"]!="" %> -
Keywords
+
Keywords:
<%= (@json_object["keywords"]) %> <% end %> <% if @json_object["tags"]&&@json_object["tags"]!="" %> -
Tags
+
Tags:
<% @json_object["tags"].each do |tag| %> <%= (tag["tag_name"])+" , " %> <% end %> diff --git a/app/views/protocols/protocolsio_import_create.js.erb b/app/views/protocols/protocolsio_import_create.js.erb index 8d8b03acf..f37528b00 100644 --- a/app/views/protocols/protocolsio_import_create.js.erb +++ b/app/views/protocols/protocolsio_import_create.js.erb @@ -1,9 +1,16 @@ -$('#modal-import-json-protocol').modal('hide'); -<% if remotipart_submitted? %> - $('#protocolsio-preview-modal-target').html("<%= j "#{render(:partial => 'protocols/import_export/import_json_protocol_preview_modal')}" %>"); +<% if @protocolsio_too_big %> +alert('<%= I18n.t('my_modules.protocols.load_from_file_size_error', + size: Constants::FILE_MAX_SIZE_MB ) %>'); + + <% else %> - $('#protocolsio-preview-modal-target').html("<%= j render(:partial => 'protocols/import_export/import_json_protocol_preview_modal') %>"); -<% end %> -$('#modal-import-json-protocol-preview').modal('show'); + $('#modal-import-json-protocol').modal('hide'); + <% if remotipart_submitted? %> + $('#protocolsio-preview-modal-target').html("<%= j "#{render(:partial => 'protocols/import_export/import_json_protocol_preview_modal')}" %>"); + <% else %> + $('#protocolsio-preview-modal-target').html("<%= j render(:partial => 'protocols/import_export/import_json_protocol_preview_modal') %>"); + <% end %> + $('#modal-import-json-protocol-preview').modal('show'); +<% end %> diff --git a/app/views/protocols/protocolsio_import_save.js.erb b/app/views/protocols/protocolsio_import_save.js.erb index e3e10e8fc..3741c0eb3 100644 --- a/app/views/protocols/protocolsio_import_save.js.erb +++ b/app/views/protocols/protocolsio_import_save.js.erb @@ -1,2 +1,7 @@ +<% if @protocolsio_general_error %> +alert('<%= I18n.t('my_modules.protocols.load_from_file_protocol_general_error', max: Constants::NAME_MAX_LENGTH, min: Constants::NAME_MIN_LENGTH) %>'); +<% else %> + $('#modal-import-json-protocol-preview').modal('hide'); protocolsDatatable.ajax.reload(); +<% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index c0f362732..b17d01075 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -603,6 +603,7 @@ en: load_from_file_error: "Failed to load the protocol from file." load_from_file_error_locked: "Failed to load the protocol from file. One or more files are currently being edited." load_from_file_size_error: "Failed to load the protocol from file. Limit is %{size}Mb." + load_from_file_protocol_general_error: "Failed to load the protocol from file. It is likely that certain fields (protocol and individual step titles and names) contain too many or too few characters.(max is %{max} and min is %{min})" results: head_title: "%{project} | %{module} | Results" add_label: "Add new result:"