Merge branch '11917-dont-clear-cache'
[arvados.git] / apps / workbench / app / controllers / collections_controller.rb
index 8b3cc2feb860f2483b5572930ca5a4ac32053cb1..f8fcf5108f025659bf5058f2861ef42d2e1b5781 100644 (file)
@@ -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"
@@ -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
@@ -345,12 +358,27 @@ class CollectionsController < ApplicationController
     end
   end
 
+  def tags
+    render
+  end
+
   def save_tags
-    props = @object.properties
-    props[:tags] = params['tag_data']
-    if @object.update_attributes properties: props
-    else
-      self.render_error status: 422
+    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
 
@@ -425,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',