Add folders page, backed by groups.
authorTom Clegg <tom@curoverse.com>
Tue, 29 Apr 2014 04:37:01 +0000 (00:37 -0400)
committerTom Clegg <tom@curoverse.com>
Tue, 29 Apr 2014 04:37:01 +0000 (00:37 -0400)
apps/workbench/app/controllers/application_controller.rb
apps/workbench/app/controllers/groups_controller.rb
apps/workbench/app/models/arvados_base.rb
apps/workbench/app/models/arvados_resource_list.rb
apps/workbench/app/views/application/_delete_object_button.html.erb
apps/workbench/app/views/application/_show_recent.html.erb
apps/workbench/app/views/application/index.html.erb
apps/workbench/app/views/groups/_show_recent.html.erb
apps/workbench/app/views/layouts/application.html.erb
apps/workbench/config/routes.rb

index 2e3a59624117b8a782b220de2ff73c90f76b1cee..169f3042b1c525d9ce014968355cb2bb199373c2 100644 (file)
@@ -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) ||
index 672fe90174f58b5fe418def2ca7c8b0007b017b0..358cb2c8686c039385782db7e7bbbc1fb3c9f459 100644 (file)
@@ -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
index 81732bad79320abcf78590217dd8a1a28dd6bfbb..45a4d8b910941cbdff217c9e94df356844a9690b 100644 (file)
@@ -244,6 +244,10 @@ class ArvadosBase < ActiveRecord::Base
     }
   end
 
+  def class_for_display
+    self.class.to_s
+  end
+
   def self.creatable?
     current_user
   end
index a474b1378ff07ab72fda18b0b27854128be57753..f6bcaae9b126b357499e9f3d93ae402f3fe559a5 100644 (file)
@@ -90,6 +90,12 @@ class ArvadosResourceList
     self
   end
 
+  def collect
+    results.collect do |m|
+      yield m
+    end
+  end
+
   def first
     results.first
   end
index 67a3d06df2e38abef90f051768bc1cfbef175f7c..52a568f9baa83e64e6adba161c81c9c8e486ddd8 100644 (file)
@@ -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 %>
     <i class="glyphicon glyphicon-trash"></i>
   <% end %>
 <% end %>
index 04387ffb3e9d8e45227f69e7ce85f2deadb14f35..b02ce1977bd2d9ad04ffc58d01940062e3e79dbf 100644 (file)
@@ -1,7 +1,7 @@
 <% if @objects.empty? %>
 <br/>
 <p style="text-align: center">
-  No <%= controller.model_class.to_s.pluralize.underscore.gsub '_', ' ' %> to display.
+  No <%= controller.model_class_for_display.pluralize.underscore.gsub '_', ' ' %> to display.
 </p>
 
 <% else %>
index 3f312405b509813bb88aa3e418c35a32c05ff75a..f6bd49c07f51557f629ec5660d839f13236522d0 100644 (file)
@@ -12,7 +12,7 @@
           'data-target' => '#user-setup-modal-window', return_to: request.url}  %>
       <div id="user-setup-modal-window" class="modal fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"></div>
     <% 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 %>
index c709e89bc82e3b1983d41b05b8e390ce980594e3..83b31ccf1331da26a73cc4ed8898ae8a5cbf4456 100644 (file)
@@ -4,7 +4,7 @@
   <thead>
     <tr class="contain-align-left">
       <th>
-       Group
+       <%= controller.model_class_for_display.capitalize %>
       </th><th>
        Owner
       </th><th>
index 04e5dfe23bc0eafe169bf1f1beeb6072c5d41176..094cbc9224b99125cccf5fdd3fdfdb6c702bedb4 100644 (file)
@@ -85,7 +85,7 @@
             <li><a href="/pipeline_templates">
                 <i class="fa fa-lg fa-gears fa-fw"></i> Pipeline templates
             </a></li>
-            <li><a href="/groups">
+            <li><a href="/folders">
                 <i class="fa fa-lg fa-folder-o fa-fw"></i> Folders
             </a></li>
             <li class="dropdown">
               <li class="nav-separator"><span class="glyphicon glyphicon-arrow-right"></span></li>
               <li>
                 <%= link_to(
-                            controller.model_class.to_s.pluralize.underscore.gsub('_', ' '),
+                            controller.model_class_for_display.pluralize.underscore.gsub('_', ' '),
                             url_for({controller: params[:controller]})) %>
               </li>
               <% if params[:action] != 'index' %>
index 9890ce47b29112a8e08620691121246eaa9b55ed..4fb6578fd3bd692cb9994e8d8366daac2f7a4c53 100644 (file)
@@ -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'