X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/4b8e618c36fae9231601b9012fc18c5c2ee43a90..0eb72b526bf8bbb011551ecf019f604e17a534f1:/apps/workbench/app/controllers/collections_controller.rb?ds=sidebyside diff --git a/apps/workbench/app/controllers/collections_controller.rb b/apps/workbench/app/controllers/collections_controller.rb index 02b204f18c..f8fcf5108f 100644 --- a/apps/workbench/app/controllers/collections_controller.rb +++ b/apps/workbench/app/controllers/collections_controller.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require "arvados/keep" require "arvados/collection" require "uri" @@ -20,7 +24,7 @@ class CollectionsController < ApplicationController RELATION_LIMIT = 5 def show_pane_list - panes = %w(Files Upload Provenance_graph Used_by Advanced) + panes = %w(Files Upload Tags Provenance_graph Used_by Advanced) panes = panes - %w(Upload) unless (@object.editable? rescue false) panes end @@ -111,6 +115,10 @@ class CollectionsController < ApplicationController end def show_file_links + if Rails.configuration.keep_web_url || Rails.configuration.keep_web_download_url + # show_file will redirect to keep-web's directory listing + return show_file + end Thread.current[:reader_tokens] = [params[:reader_token]] return if false.equal?(find_object_by_uuid) render layout: false @@ -279,7 +287,12 @@ class CollectionsController < ApplicationController helper_method :download_link def download_link - collections_url + "/download/#{@object.uuid}/#{@search_sharing.first.api_token}/" + token = @search_sharing.first.api_token + if Rails.configuration.keep_web_url || Rails.configuration.keep_web_download_url + keep_web_url(@object.uuid, nil, {path_token: token}) + else + collections_url + "/download/#{@object.uuid}/#{token}/" + end end def share @@ -326,12 +339,18 @@ class CollectionsController < ApplicationController end arv_coll = Arv::Collection.new(@object.manifest_text) - arv_coll.rename "./"+file_path, new_file_path - if @object.update_attributes manifest_text: arv_coll.manifest_text - show - else + if arv_coll.exist?(new_file_path) + @errors = 'Duplicate file path. Please use a different name.' self.render_error status: 422 + else + arv_coll.rename "./"+file_path, new_file_path + + if @object.update_attributes manifest_text: arv_coll.manifest_text + show + else + self.render_error status: 422 + end end else # Not a file rename; use default @@ -339,6 +358,30 @@ class CollectionsController < ApplicationController end end + def tags + render + end + + def save_tags + tags_param = params['tag_data'] + if tags_param + if tags_param.is_a?(String) && tags_param == "empty" + tags = {} + else + tags = tags_param + end + end + + if tags + if @object.update_attributes properties: tags + @saved_tags = true + render + else + self.render_error status: 422 + end + end + end + protected def find_usable_token(token_list) @@ -410,7 +453,7 @@ class CollectionsController < ApplicationController uri.path += 't=' + opts[:path_token] + '/' end uri.path += '_/' - uri.path += URI.escape(file) + uri.path += URI.escape(file) if file query = Hash[URI.decode_www_form(uri.query || '')] { query_token: 'api_token',