Add "remove item from folder" buttons
[arvados.git] / apps / workbench / app / controllers / folders_controller.rb
1 class FoldersController < ApplicationController
2   def model_class
3     Group
4   end
5
6   def index_pane_list
7     %w(My_folders Shared_with_me)
8   end
9
10   def remove_item
11     raise "Not implemented yet!"
12   end
13
14   def index
15     @my_folders = []
16     @shared_with_me = []
17     @objects = Group.where(group_class: 'folder').order('name')
18     owner_of = {}
19     moretodo = true
20     while moretodo
21       moretodo = false
22       @objects.each do |folder|
23         if !owner_of[folder.uuid]
24           moretodo = true
25           owner_of[folder.uuid] = folder.owner_uuid
26         end
27         if owner_of[folder.owner_uuid]
28           if owner_of[folder.uuid] != owner_of[folder.owner_uuid]
29             owner_of[folder.uuid] = owner_of[folder.owner_uuid]
30             moretodo = true
31           end
32         end
33       end
34     end
35     @objects.each do |folder|
36       if owner_of[folder.uuid] == current_user.uuid
37         @my_folders << folder
38       else
39         @shared_with_me << folder
40       end
41     end
42     @object
43   end
44
45   def show
46     @objects = @object.contents include_linked: true
47     @share_links = Link.filter([['head_uuid', '=', @object.uuid],
48                                 ['link_class', '=', 'permission']])
49     @logs = Log.limit(10).filter([['object_uuid', '=', @object.uuid]])
50
51     @objects_and_names = []
52     @objects.each do |object|
53       if !(name_links = @objects.links_for(object, 'name')).empty?
54         name_links.each do |name_link|
55           @objects_and_names << [object, name_link]
56         end
57       else
58         @objects_and_names << [object,
59                                Link.new(tail_uuid: @object.uuid,
60                                         head_uuid: object.uuid,
61                                         link_class: "name",
62                                         name: "")]
63       end
64     end
65
66     super
67   end
68
69   def create
70     @new_resource_attrs = (params['folder'] || {}).merge(group_class: 'folder')
71     super
72   end
73 end