X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/535856c28a12bb07dc986b980b0f4ccfdfd25640..4013f2bd35cf76d92aeafc4d3b0b4e2fd7a2dd84:/apps/workbench/app/helpers/application_helper.rb?ds=sidebyside diff --git a/apps/workbench/app/helpers/application_helper.rb b/apps/workbench/app/helpers/application_helper.rb index 106716a0f7..4c4b5ff34d 100644 --- a/apps/workbench/app/helpers/application_helper.rb +++ b/apps/workbench/app/helpers/application_helper.rb @@ -15,8 +15,13 @@ module ApplicationHelper Rails.configuration.arvados_v1_base.gsub /https?:\/\/|\/arvados\/v1/,'' end + def current_uuid_prefix + current_api_host[0..4] + end + def render_markup(markup) - raw RedCloth.new(markup.to_s).to_html(:refs_arvados, :textile) if markup + allowed_tags = Rails::Html::Sanitizer.white_list_sanitizer.allowed_tags + %w(table tbody th tr td col colgroup caption thead tfoot) + sanitize(raw(RedCloth.new(markup.to_s).to_html(:refs_arvados, :textile)), tags: allowed_tags) if markup end def human_readable_bytes_html(n) @@ -43,13 +48,6 @@ module ApplicationHelper end return h(n) - #raw = n.to_s - #cooked = '' - #while raw.length > 3 - # cooked = ',' + raw[-3..-1] + cooked - # raw = raw[0..-4] - #end - #cooked = raw + cooked end def resource_class_for_uuid(attrvalue, opts={}) @@ -497,11 +495,12 @@ module ApplicationHelper chooser_title = "Choose a #{primary_type == 'Directory' ? 'dataset' : 'file'}:" selection_param = object.class.to_s.underscore + dn if attrvalue.is_a? Hash - display_value = attrvalue[:"arv:collection"] || attrvalue[:location] + display_value = attrvalue[:"http://arvados.org/cwl#collectionUUID"] || attrvalue[:"arv:collection"] || attrvalue[:location] re = CollectionsHelper.match_uuid_with_optional_filepath(display_value) + locationre = CollectionsHelper.match(attrvalue[:location][5..-1]) if re - if re[4] - display_value = "#{Collection.find(re[1]).name} / #{re[4][1..-1]}" + if locationre and locationre[4] + display_value = "#{Collection.find(re[1]).name} / #{locationre[4][1..-1]}" else display_value = Collection.find(re[1]).name end @@ -679,10 +678,11 @@ module ApplicationHelper render_runtime duration, use_words, round_to_min end - # Keep locators are expected to be of the form \"...\" - JSON_KEEP_LOCATOR_REGEXP = /(.*)(([0-9a-f]{32}\+\d+)(.*)\"(.*))/ + # Keep locators are expected to be of the form \"...\" or \"...\" + JSON_KEEP_LOCATOR_REGEXP = /([0-9a-f]{32}\+\d+[^'"]*|[a-z0-9]{5}-4zz18-[a-z0-9]{15}[^'"]*)(?=['"]|\z|$)/ def keep_locator_in_json str - JSON_KEEP_LOCATOR_REGEXP.match str + # Return a list of all matches + str.scan(JSON_KEEP_LOCATOR_REGEXP).flatten end private