X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2c60e15078452202ff58eac99d44920448fb7b9a..f4750d53482ddb3990426563bb424f72790b9090:/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 9662e300ca..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,14 +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 %>