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:"