8286: to facilitate in-place star icon refresh without the whole page refresh, it...
authorradhika <radhika@curoverse.com>
Mon, 15 Feb 2016 22:28:55 +0000 (17:28 -0500)
committerradhika <radhika@curoverse.com>
Mon, 15 Feb 2016 22:28:55 +0000 (17:28 -0500)
to refresh the Projects menu after star/unstar action. Hence, moved the breadcrumbs code from
body.html into a partial.

apps/workbench/app/views/application/_breadcrumbs.html.erb
apps/workbench/app/views/application/_projects_tree_menu.html.erb
apps/workbench/app/views/application/star.js.erb
apps/workbench/app/views/layouts/body.html.erb
apps/workbench/test/integration/projects_test.rb

index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3ef2aec17c35575013dd0be2ca51afe95953c8ba 100644 (file)
@@ -0,0 +1,69 @@
+      <nav class="navbar navbar-default breadcrumbs" role="navigation">
+        <ul class="nav navbar-nav navbar-left">
+          <li>
+            <a href="/">
+              <i class="fa fa-lg fa-fw fa-dashboard"></i>
+              Dashboard
+            </a>
+          </li>
+          <li class="dropdown">
+            <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="projects-menu">
+              Projects
+              <span class="caret"></span>
+            </a>
+            <ul class="dropdown-menu" style="min-width: 20em" role="menu">
+              <li role="menuitem">
+                  <%= link_to(
+                        url_for(
+                          action: 'choose',
+                          controller: 'search',
+                          filters: [['uuid', 'is_a', 'arvados#group']].to_json,
+                          title: 'Search',
+                          action_name: 'Show',
+                          action_href: url_for(controller: :actions, action: :show),
+                          action_method: 'get',
+                          action_data: {selection_param: 'uuid', success: 'redirect-to-created-object'}.to_json),
+                        { remote: true, method: 'get', title: "Search" }) do %>
+                    <i class="glyphicon fa-fw glyphicon-search"></i> Search all projects ...
+                  <% end %>
+               </li>
+              <% if Rails.configuration.anonymous_user_token and Rails.configuration.enable_public_projects_page %>
+                <li role="menuitem"><a href="/projects/public" role="menuitem"><i class="fa fa-fw fa-list"></i> Browse public projects </a>
+                </li>
+              <% end %>
+              <li role="menuitem">
+                <%= link_to projects_path(options: {ensure_unique_name: true}), role: 'menu-item', method: :post do %>
+                  <i class="fa fa-fw fa-plus"></i> Add a new project
+                <% end %>
+              </li>
+              <li role="presentation" class="divider"></li>
+              <%= render partial: "projects_tree_menu", locals: {
+                  :project_link_to => Proc.new do |pnode, &block|
+                    link_to(project_path(pnode[:object].uuid),
+                      data: { 'object-uuid' => pnode[:object].uuid,
+                              'name' => 'name' },
+                      &block)
+                  end,
+              } %>
+            </ul>
+          </li>
+          <% if @name_link or @object %>
+            <li class="nav-separator">
+              <i class="fa fa-lg fa-angle-double-right"></i>
+            </li>
+            <li>
+              <%= link_to project_path(current_user.uuid) do %>
+                Home
+              <% end %>
+            </li>
+            <% project_breadcrumbs.each do |p| %>
+              <li class="nav-separator">
+                <i class="fa fa-lg fa-angle-double-right"></i>
+              </li>
+              <li>
+                <%= link_to(p.name, project_path(p.uuid), data: {object_uuid: p.uuid, name: 'name'}) %>
+              </li>
+            <% end %>
+          <% end %>
+        </ul>
+      </nav>
index cf279656d74955bbd9309fdfb4f6bc05efa7adb7..4949c8fa4a662c82cd4af0b203c1ccbf1d504cb9 100644 (file)
@@ -1,15 +1,16 @@
 <% starred_projects = my_starred_projects current_user%>
 <% if starred_projects.andand.any? %>
-<li role="presentation" class="dropdown-header">
-  My favorite projects
-</li>
-<% (starred_projects).each do |pnode| %>
-  <li>
-    <%= project_link_to.call({object: pnode, depth: 0}) do%>
-      <span style="padding-left: 0em"></span><%= pnode[:name] %>
-    <% end %>
+  <li role="presentation" class="dropdown-header">
+    My favorite projects
   </li>
-<% end %>
+  <% (starred_projects).each do |pnode| %>
+    <li>
+      <%= project_link_to.call({object: pnode, depth: 0}) do%>
+        <span style="padding-left: 0em"></span><%= pnode[:name] %>
+      <% end %>
+    </li>
+  <% end %>
+  <li role="presentation" class="divider">
 <% end %>
 
 <li role="presentation" class="dropdown-header">
index e472ab0a8657797761a29aa5178720c6e4237835..701c6736f839a213d8c9f68c64fc61c093a354b3 100644 (file)
@@ -1 +1,2 @@
 $(".star-unstar").html("<%= escape_javascript(render partial: 'show_star') %>");
+$(".breadcrumbs").html("<%= escape_javascript(render partial: 'breadcrumbs') %>");
index abb79e932790502c007215b857c822ca0908d160..456f15f218cee86cc76098acb33f2fab9d78cc23 100644 (file)
     </nav>
 
     <% if current_user.andand.is_active %>
-      <nav class="navbar navbar-default breadcrumbs" role="navigation">
-        <ul class="nav navbar-nav navbar-left">
-          <li>
-            <a href="/">
-              <i class="fa fa-lg fa-fw fa-dashboard"></i>
-              Dashboard
-            </a>
-          </li>
-          <li class="dropdown">
-            <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="projects-menu">
-              Projects
-              <span class="caret"></span>
-            </a>
-            <ul class="dropdown-menu" style="min-width: 20em" role="menu">
-              <li role="menuitem">
-                  <%= link_to(
-                        url_for(
-                          action: 'choose',
-                          controller: 'search',
-                          filters: [['uuid', 'is_a', 'arvados#group']].to_json,
-                          title: 'Search',
-                          action_name: 'Show',
-                          action_href: url_for(controller: :actions, action: :show),
-                          action_method: 'get',
-                          action_data: {selection_param: 'uuid', success: 'redirect-to-created-object'}.to_json),
-                        { remote: true, method: 'get', title: "Search" }) do %>
-                    <i class="glyphicon fa-fw glyphicon-search"></i> Search all projects ...
-                  <% end %>
-               </li>
-              <% if Rails.configuration.anonymous_user_token and Rails.configuration.enable_public_projects_page %>
-                <li role="menuitem"><a href="/projects/public" role="menuitem"><i class="fa fa-fw fa-list"></i> Browse public projects </a>
-                </li>
-              <% end %>
-              <li role="menuitem">
-                <%= link_to projects_path(options: {ensure_unique_name: true}), role: 'menu-item', method: :post do %>
-                  <i class="fa fa-fw fa-plus"></i> Add a new project
-                <% end %>
-              </li>
-              <li role="presentation" class="divider"></li>
-              <%= render partial: "projects_tree_menu", locals: {
-                  :project_link_to => Proc.new do |pnode, &block|
-                    link_to(project_path(pnode[:object].uuid),
-                      data: { 'object-uuid' => pnode[:object].uuid,
-                              'name' => 'name' },
-                      &block)
-                  end,
-              } %>
-            </ul>
-          </li>
-          <% if @name_link or @object %>
-            <li class="nav-separator">
-              <i class="fa fa-lg fa-angle-double-right"></i>
-            </li>
-            <li>
-              <%= link_to project_path(current_user.uuid) do %>
-                Home
-              <% end %>
-            </li>
-            <% project_breadcrumbs.each do |p| %>
-              <li class="nav-separator">
-                <i class="fa fa-lg fa-angle-double-right"></i>
-              </li>
-              <li>
-                <%= link_to(p.name, project_path(p.uuid), data: {object_uuid: p.uuid, name: 'name'}) %>
-              </li>
-            <% end %>
-          <% end %>
-        </ul>
-      </nav>
+      <%= render partial: 'breadcrumbs' %>
     <% elsif !current_user %>   <%# anonymous %>
       <% if (@name_link or @object) and (project_breadcrumbs.any?) %>
         <nav class="navbar navbar-default breadcrumbs" role="navigation">
index 5a71b76408f3b40ce0335928d824f89a50210ab2..2cc6a45f51c4311579afa22b7d8377d9ef26bace 100644 (file)
@@ -715,6 +715,7 @@ class ProjectsTest < ActionDispatch::IntegrationTest
 
     # add to favorites
     find('.fa-star-o').click
+    wait_for_ajax
 
     find("#projects-menu").click
     within('.dropdown-menu') do
@@ -723,6 +724,8 @@ class ProjectsTest < ActionDispatch::IntegrationTest
 
     # remove from favotires
     find('.fa-star').click
+    wait_for_ajax
+
     find("#projects-menu").click
     within('.dropdown-menu') do
       assert_no_selector 'li', text: 'Unrestricted public data'