Merge branch 'master' into 2678-owned_by
[arvados.git] / apps / workbench / app / controllers / folders_controller.rb
index fe7c9d2a42fe1632824b9c6d0e072739ebd26ba0..8ebb1a34b101bf8bdbab1050a3485f9330ab8d0f 100644 (file)
@@ -52,23 +52,28 @@ class FoldersController < ApplicationController
       children_of[parent_of[ob.uuid]] ||= []
       children_of[parent_of[ob.uuid]] << ob
     end
-    def buildtree children_of, root_uuid=false
+    buildtree = lambda do |children_of, root_uuid=false|
       tree = {}
       children_of[root_uuid].andand.each do |ob|
-        tree[ob] = buildtree(children_of, ob.uuid)
+        tree[ob] = buildtree.call(children_of, ob.uuid)
       end
       tree
     end
-    def sorted_paths tree, depth=0
+    sorted_paths = lambda do |tree, depth=0|
       paths = []
-      tree.keys.sort_by { |ob| ob.friendly_link_name }.each do |ob|
+      tree.keys.sort_by { |ob|
+        ob.is_a?(String) ? ob : ob.friendly_link_name
+      }.each do |ob|
         paths << {object: ob, depth: depth}
-        paths += sorted_paths tree[ob], depth+1
+        paths += sorted_paths.call tree[ob], depth+1
       end
       paths
     end
-    @my_folder_tree = sorted_paths buildtree(children_of, 'me')
-    @shared_folder_tree = sorted_paths buildtree(children_of, false)
+    @my_folder_tree =
+      sorted_paths.call buildtree.call(children_of, 'me')
+    @shared_folder_tree =
+      sorted_paths.call({'Shared with me' =>
+                          buildtree.call(children_of, false)})
   end
 
   def choose