From 2943d9c3622e2c5bca081dc48fd5d8d148dac386 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Tue, 29 Apr 2014 00:37:01 -0400 Subject: [PATCH] Add folders page, backed by groups. --- .../app/controllers/application_controller.rb | 4 ++++ apps/workbench/app/controllers/groups_controller.rb | 10 +++++++++- apps/workbench/app/models/arvados_base.rb | 4 ++++ apps/workbench/app/models/arvados_resource_list.rb | 6 ++++++ .../views/application/_delete_object_button.html.erb | 2 +- .../app/views/application/_show_recent.html.erb | 2 +- apps/workbench/app/views/application/index.html.erb | 2 +- apps/workbench/app/views/groups/_show_recent.html.erb | 2 +- apps/workbench/app/views/layouts/application.html.erb | 4 ++-- apps/workbench/config/routes.rb | 1 + 10 files changed, 30 insertions(+), 7 deletions(-) diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb index 2e3a596241..169f3042b1 100644 --- a/apps/workbench/app/controllers/application_controller.rb +++ b/apps/workbench/app/controllers/application_controller.rb @@ -170,6 +170,10 @@ class ApplicationController < ActionController::Base controller_name.classify.constantize end + def model_class_for_display + model_class.to_s + end + def breadcrumb_page_name (@breadcrumb_page_name || (@object.friendly_link_name if @object.respond_to? :friendly_link_name) || diff --git a/apps/workbench/app/controllers/groups_controller.rb b/apps/workbench/app/controllers/groups_controller.rb index 672fe90174..358cb2c868 100644 --- a/apps/workbench/app/controllers/groups_controller.rb +++ b/apps/workbench/app/controllers/groups_controller.rb @@ -1,6 +1,14 @@ class GroupsController < ApplicationController + def model_class_for_display + params[:group_class] || super + end + def index - @groups = Group.all + if params[:group_class] + @groups = Group.where(group_class: params[:group_class]) + else + @groups = Group.all + end @group_uuids = @groups.collect &:uuid @links_from = Link.where link_class: 'permission', tail_uuid: @group_uuids @links_to = Link.where link_class: 'permission', head_uuid: @group_uuids diff --git a/apps/workbench/app/models/arvados_base.rb b/apps/workbench/app/models/arvados_base.rb index 81732bad79..45a4d8b910 100644 --- a/apps/workbench/app/models/arvados_base.rb +++ b/apps/workbench/app/models/arvados_base.rb @@ -244,6 +244,10 @@ class ArvadosBase < ActiveRecord::Base } end + def class_for_display + self.class.to_s + end + def self.creatable? current_user end diff --git a/apps/workbench/app/models/arvados_resource_list.rb b/apps/workbench/app/models/arvados_resource_list.rb index a474b1378f..f6bcaae9b1 100644 --- a/apps/workbench/app/models/arvados_resource_list.rb +++ b/apps/workbench/app/models/arvados_resource_list.rb @@ -90,6 +90,12 @@ class ArvadosResourceList self end + def collect + results.collect do |m| + yield m + end + end + def first results.first end diff --git a/apps/workbench/app/views/application/_delete_object_button.html.erb b/apps/workbench/app/views/application/_delete_object_button.html.erb index 67a3d06df2..52a568f9ba 100644 --- a/apps/workbench/app/views/application/_delete_object_button.html.erb +++ b/apps/workbench/app/views/application/_delete_object_button.html.erb @@ -1,5 +1,5 @@ <% if object.editable? %> - <%= link_to({action: 'destroy', id: object.uuid}, method: :delete, remote: true, data: {confirm: "You are about to delete #{object.class} #{object.uuid}.\n\nAre you sure?"}) do %> + <%= link_to({action: 'destroy', id: object.uuid}, method: :delete, remote: true, data: {confirm: "You are about to delete #{object.class_for_display} #{object.uuid}.\n\nAre you sure?"}) do %> <% end %> <% end %> diff --git a/apps/workbench/app/views/application/_show_recent.html.erb b/apps/workbench/app/views/application/_show_recent.html.erb index 04387ffb3e..b02ce1977b 100644 --- a/apps/workbench/app/views/application/_show_recent.html.erb +++ b/apps/workbench/app/views/application/_show_recent.html.erb @@ -1,7 +1,7 @@ <% if @objects.empty? %>

- No <%= controller.model_class.to_s.pluralize.underscore.gsub '_', ' ' %> to display. + No <%= controller.model_class_for_display.pluralize.underscore.gsub '_', ' ' %> to display.

<% else %> diff --git a/apps/workbench/app/views/application/index.html.erb b/apps/workbench/app/views/application/index.html.erb index 3f312405b5..f6bd49c07f 100644 --- a/apps/workbench/app/views/application/index.html.erb +++ b/apps/workbench/app/views/application/index.html.erb @@ -12,7 +12,7 @@ 'data-target' => '#user-setup-modal-window', return_to: request.url} %> <% else %> - <%= button_to "Add a new #{controller.model_class.to_s.underscore.gsub '_', ' '}", + <%= button_to "Add a new #{controller.model_class_for_display.underscore.gsub '_', ' '}", { action: 'create', return_to: request.url }, { class: 'btn btn-primary pull-right' } %> <% end %> diff --git a/apps/workbench/app/views/groups/_show_recent.html.erb b/apps/workbench/app/views/groups/_show_recent.html.erb index c709e89bc8..83b31ccf13 100644 --- a/apps/workbench/app/views/groups/_show_recent.html.erb +++ b/apps/workbench/app/views/groups/_show_recent.html.erb @@ -4,7 +4,7 @@ - Group + <%= controller.model_class_for_display.capitalize %> Owner diff --git a/apps/workbench/app/views/layouts/application.html.erb b/apps/workbench/app/views/layouts/application.html.erb index 04e5dfe23b..094cbc9224 100644 --- a/apps/workbench/app/views/layouts/application.html.erb +++ b/apps/workbench/app/views/layouts/application.html.erb @@ -85,7 +85,7 @@
  • Pipeline templates
  • -
  • +
  • Folders
  • <%= link_to( - controller.model_class.to_s.pluralize.underscore.gsub('_', ' '), + controller.model_class_for_display.pluralize.underscore.gsub('_', ' '), url_for({controller: params[:controller]})) %>
  • <% if params[:action] != 'index' %> diff --git a/apps/workbench/config/routes.rb b/apps/workbench/config/routes.rb index 9890ce47b2..4fb6578fd3 100644 --- a/apps/workbench/config/routes.rb +++ b/apps/workbench/config/routes.rb @@ -42,6 +42,7 @@ ArvadosWorkbench::Application.routes.draw do match '/collections/graph' => 'collections#graph' resources :collections get '/collections/:uuid/*file' => 'collections#show_file', :format => false + resources :folders, controller: :groups, group_class: 'folder' post 'actions' => 'actions#post' -- 2.30.2