X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/79aeb557d94681fb7e55321aeee2e20df1430b30..f0d67ab6f71cef3e7ce0fa850f7309a94e21671b:/apps/workbench/app/views/application/_show_text_with_locators.html.erb diff --git a/apps/workbench/app/views/application/_show_text_with_locators.html.erb b/apps/workbench/app/views/application/_show_text_with_locators.html.erb index f25bd2b4c9..b34b4cac8f 100644 --- a/apps/workbench/app/views/application/_show_text_with_locators.html.erb +++ b/apps/workbench/app/views/application/_show_text_with_locators.html.erb @@ -1,16 +1,44 @@ +<%# Copyright (C) The Arvados Authors. All rights reserved. + +SPDX-License-Identifier: AGPL-3.0 %> + <%# The locators in the given text are expected to be of the form JSON_KEEP_LOCATOR_REGEXP %> <% data_height = data_height || 100 %>
- <% text_data.each_line do |l| %> - <% text_part = l %> - <% match = keep_locator_in_json l %> - <% if match %> - <% text_part = match[1] %> - <% rindex = match[2].rindex('"'); match2 = match[2][0..rindex-1] %> - <% pdh_readable = object_readable(match2) %> - <% quote_char = '"' %> + <% text_data.each_line do |line| %> + <% matches = keep_locator_in_json line %> + + <% if matches.nil? or matches.empty? %> + <%= line %> + <% else + subs = [] + matches.uniq.each do |loc| + pdh, filename = loc.split('/', 2) + + if object_readable(pdh) + # Add PDH link + replacement = link_to_arvados_object_if_readable(pdh, pdh, friendly_name: true) + if filename + link_params = {controller: 'collections', action: 'show_file', uuid: pdh, file: filename} + if preview_allowed_for(filename) + params = {disposition: 'inline'} + else + params = {disposition: 'attachment'} + end + file_link = link_to(raw("/"+filename), link_params.merge(params)) + # Add file link + replacement << file_link + end + # Add link(s) substitution + subs << [loc, replacement] + end + end + # Replace all readable locators with links + subs.each do |loc, link| + line.gsub!(loc, link) + end %> + <%= raw line %> <% end %> - <%= text_part %><% if match %><% if pdh_readable then %><%= link_to_arvados_object_if_readable(match[3], match[3], friendly_name: true) %><%= link_to_arvados_object_if_readable(match2, match2, link_text: match[4]) %><% else %><%= match2%><% end %><%=quote_char+match[5]%>
<% end %>
<% end %>