X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/138a4b0a5de177faede5255841a5c6fca06b31f4..752b9167416a5c8b64bef4946fbc15939b4bfe75:/apps/workbench/app/views/application/_show_sharing.html.erb diff --git a/apps/workbench/app/views/application/_show_sharing.html.erb b/apps/workbench/app/views/application/_show_sharing.html.erb new file mode 100644 index 0000000000..23795d3f04 --- /dev/null +++ b/apps/workbench/app/views/application/_show_sharing.html.erb @@ -0,0 +1,116 @@ +<% + uuid_map = {} + if @share_links + [User, Group].each do |type| + type + .filter([['uuid','in',@share_links.collect(&:tail_uuid)]]) + .each do |o| + uuid_map[o.uuid] = o + end + end + end + perm_name_desc_map = {} + perm_desc_name_map = {} + perms_json = [] + ['Read', 'Write', 'Manage'].each do |link_desc| + link_name = "can_#{link_desc.downcase}" + perm_name_desc_map[link_name] = link_desc + perm_desc_name_map[link_desc] = link_name + perms_json << {value: link_name, text: link_desc} + end + perms_json = perms_json.to_json + choose_filters = { + "groups" => [["group_class", "=", "role"]], + } + choose_filters.default = [] + owner_icon = fa_icon_class_for_uuid(@object.owner_uuid) + if owner_icon == "fa-users" + owner_icon = "fa-folder" + owner_type = "parent project" + else + owner_type = "owning user" + end + + sharing_path = url_for(:controller => params['controller'], :action => 'share_with') +%> + +
+ <% ["users", "groups"].each do |share_class| %> + + <%= link_to(send("choose_#{share_class}_path", + title: "Share with #{share_class}", + by_project: false, + preview_pane: false, + multiple: true, + filters: choose_filters[share_class].to_json, + action_method: 'post', + action_href: sharing_path, + action_name: 'Add', + action_data: {selection_param: 'uuids[]', success: 'tab-refresh'}.to_json), + class: "btn btn-primary btn-sm", remote: true) do %> + Share with <%= share_class %>… + <% end %> + + <% end %> +
+ +

Permissions for this <%=@object.class_for_display.downcase%> are inherited from the <%= owner_type %> + + <%= link_to_if_arvados_object @object.owner_uuid, friendly_name: true %>. +

+ + + + + + + + + <% @share_links.andand.each do |link| + shared_with = uuid_map[link.tail_uuid] + if shared_with.nil? + link_name = link.tail_uuid + elsif shared_with.respond_to?(:full_name) + link_name = shared_with.full_name + else + link_name = shared_with.name + end + if shared_with && shared_with.respond_to?(:email) + email = shared_with.email + end + %> + + + + + + + <% end %> +
User/Group NameEmail Address<%=@object.class_for_display%> Access
+ + <%= link_to_if_arvados_object(link.tail_uuid, link_text: link_name) %> + + <%= email %> + <%= link_to perm_name_desc_map[link.name], '#', { + "data-emptytext" => "Read", + "data-placement" => "bottom", + "data-type" => "select", + "data-url" => url_for(action: "update", id: link.uuid, controller: "links", merge: true), + "data-title" => "Set #{link_name}'s access level", + "data-name" => "[name]", + "data-pk" => {id: link.tail_uuid, key: "link"}.to_json, + "data-value" => link.name, + "data-clear" => false, + "data-source" => perms_json, + "data-tpl" => "", + "class" => "editable form-control", + } %> + + <%= link_to( + {action: 'destroy', id: link.uuid, controller: "links"}, + {title: 'Revoke', class: 'btn btn-default btn-nodecorate', method: :delete, + data: {confirm: "Revoke #{link_name}'s access to this #{@object.class_for_display.downcase}?", + remote: true}}) do %> + + <% end %> +