Merge branch '2061-update-docs'
[arvados.git] / apps / workbench / app / views / layouts / application.html.erb
index 8e7039c54477384969cf2b66afa1a0d67e715721..220f1cf00d5b489fc3d8008da036ea373340f288 100644 (file)
@@ -4,12 +4,14 @@
   <meta charset="utf-8">
   <title>
     <% if content_for? :page_title %>
-    <%= yield :page_title %>
+    <%= yield :page_title %> / <%= Rails.configuration.site_name %>
     <% else %>
-    <%= Rails.configuration.site_name rescue Rails.application.class.parent_name %>
+    <%= Rails.configuration.site_name %>
     <% end %>
   </title>
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link rel="icon" href="/favicon.ico" type="image/x-icon">
+  <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
   <meta name="description" content="">
   <meta name="author" content="">
   <%= stylesheet_link_tag    "application", :media => "all" %>
   <%= yield :js %>
   <% end %>
   <style>
+    <%= yield :css %>
     body {
-    padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
+    min-height: 100%;
+    height: 100%;
+    }
+
+    body > div.container-fluid {
+    padding-top: 70px; /* 70px to make the container go all the way to the bottom of the navbar */
+    }
+    
+    body > div.container-fluid > div.col-sm-9.col-sm-offset-3 {
+    overflow: auto;
+    }
+
+    @media (max-width: 979px) { body { padding-top: 0; } }
+
+    .navbar .nav li.nav-separator > span.glyphicon.glyphicon-arrow-right {
+    padding-top: 1.25em;
+    }
+
+    /* Setting the height needs to be fixed with javascript. */
+    .dropdown-menu {
+    padding-right: 20px;
+    max-height: 440px;
+    width: 400px;
+    overflow-y: auto;
+    }
+
+    @media (min-width: 768px) {
+    .left-nav {
+    position: fixed;
+    }
+    }
+    @media (max-width: 767px) {
+    .breadcrumbs {
+    display: none;
+    }
     }
   </style>
 </head>
 <body>
 
-  <div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-      <div class="container">
-        <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+  <div class="navbar navbar-default navbar-fixed-top">
+    <div class="container-fluid">
+      <div class="navbar-header">
+        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#workbench-navbar.navbar-collapse">
+          <span class="sr-only">Toggle navigation</span>
           <span class="icon-bar"></span>
           <span class="icon-bar"></span>
           <span class="icon-bar"></span>
-        </a>
-        <a class="brand" href="/"><%= Rails.configuration.site_name rescue Rails.application.class.parent_name %></a>
-        <div class="nav-collapse collapse">
-          <% if current_user.andand.is_active %>
-          <ul class="nav">
-            <li class="dropdown">
-              <a href="#" class="dropdown-toggle" data-toggle="dropdown">
-                Access <b class="caret"></b>
-              </a>
-              <ul class="dropdown-menu">
-                <li><%= link_to 'Keys', authorized_keys_path %></li>
-                <li><%= link_to 'VMs', virtual_machines_path %></li>
-                <li><%= link_to 'Repositories', repositories_path %></li>
-                <li><%= link_to 'API Tokens', api_client_authorizations_path %></li>
-              </ul>
+        </button>
+        <a class="navbar-brand" href="/"><%= Rails.configuration.site_name rescue Rails.application.class.parent_name %></a>
+      </div>
+
+      <div class="collapse navbar-collapse" id="workbench-navbar">
+      <ul class="nav navbar-nav navbar-left breadcrumbs">
+        <% if current_user %>
+        <% if content_for?(:breadcrumbs) %>
+          <%= yield(:breadcrumbs) %>
+        <% else %>
+          <li class="nav-separator"><span class="glyphicon glyphicon-arrow-right"></span></li>
+          <li>
+            <%= link_to(
+                        controller.model_class.to_s.pluralize.underscore.gsub('_', ' '),
+                        url_for({controller: params[:controller]})) %>
+          </li>
+          <% if params[:action] != 'index' %>
+            <li class="nav-separator">
+              <span class="glyphicon glyphicon-arrow-right"></span>
             </li>
-            <li class="dropdown">
-              <a href="#" class="dropdown-toggle" data-toggle="dropdown">
-                Compute <b class="caret"></b>
-              </a>
-              <ul class="dropdown-menu">
-                <li><%= link_to 'Jobs', jobs_path %></li>
-                <li><%= link_to 'Pipeline instances', pipeline_instances_path %></li>
-                <li><%= link_to 'Pipeline templates', pipeline_templates_path %></li>
-              </ul>
+            <li>
+<%= link_to controller.breadcrumb_page_name, request.fullpath %>
             </li>
-         </ul>
           <% end %>
-         <ul class="nav pull-right">
-      <% if current_user -%>
-            <li><span class="badge badge-info" style="margin: 10px auto 10px; padding-top: 4px; padding-bottom: 4px"><%= current_user.email %></span></li>
-            <li><a href="<%= logout_path %>">Log out</a></li>
-      <% else -%>
-            <li><a href="<%= root_path %>">Log in</a></li>
-      <% end -%>
+        <% end %>
+        <% end %>
+      </ul>
+  
+      <ul class="nav navbar-nav navbar-right">
+
+        <li>
+          <a><i class="rotating loading glyphicon glyphicon-refresh"></i></a>
+        </li>
+
+        <% if current_user %>
+        <!-- XXX placeholder for this when search is implemented
+        <li>
+          <form class="navbar-form" role="search">
+            <div class="input-group" style="width: 220px">
+              <input type="text" class="form-control" placeholder="search">
+              <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
+            </div>
+          </form>
+        </li>
+        -->
+
+        <!-- XXX placeholder for this when persistent selection is implemented
+        <li class="dropdown">
+          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+            <span class="glyphicon glyphicon-paperclip"></span>
+            <span class="badge badge-alert"><%= @selection_count %></span>
+            <span class="caret"></span>
+          </a>
+          <ul class="dropdown-menu" role="menu">
+              <li style="padding: 10px">No selections.</li>
           </ul>
-        </div><!--/.nav-collapse -->
-      </div>
-    </div>
+        </li>        
+        -->
+
+        <li class="dropdown notification-menu">
+          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+            <span class="glyphicon glyphicon-envelope"></span>
+            <span class="badge badge-alert notification-count"><%= @notification_count %></span>
+            <span class="caret"></span>
+          </a>
+          <ul class="dropdown-menu" role="menu">
+            <% if @notifications.length > 0 %>
+              <% @notifications.each_with_index do |n, i| %>
+                <% if i > 0 %><li class="divider"></li><% end %>
+                <li class="notification"><%= n.call(self) %></li>
+              <% end %>
+            <% else %>
+              <li class="notification empty">No notifications.</li>
+            <% end %>
+          </ul>
+        </li>        
+
+        <li class="dropdown">
+          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+            <span class="glyphicon glyphicon-user"></span><span class="caret"></span>
+          </a>
+          <ul class="dropdown-menu" role="menu">
+            <li role="presentation" class="dropdown-header"><%= current_user.email %></li>
+            <li role="presentation" class="divider"></li>
+            <li role="presentation"><a href="/authorized_keys" role="menuitem">Manage ssh keys</a></li>
+            <li role="presentation"><a href="/api_client_authorizations" role="menuitem">Manage API tokens</a></li>
+            <li role="presentation" class="divider"></li>
+            <li role="presentation"><a href="<%= logout_path %>" role="menuitem">Log out</a></li>
+          </ul>
+        </li>
+       <% else -%>
+          <li><a href="<%= $arvados_api_client.arvados_login_url(return_to: root_url) %>">Log in</a></li>
+       <% end -%>
+      </ul>
+      </div><!-- /.navbar-collapse -->
+    </div><!-- /.container-fluid -->
   </div>
 
-  <div class="container">
+  <div class="container-fluid">
+      <div class="col-sm-9 col-sm-offset-3">
+        <div id="content">
+          <%= yield %>
+        </div>
+      </div>
+      <div class="col-sm-3 left-nav">
+        <div class="arvados-nav-container">
+        <% if current_user %>
+        <div class="well">
+        <ul class="arvados-nav">
+          <li class="<%= 'arvados-nav-active' if params[:action] == 'home' %>">
+            <a href="/">Dashboard</a>
+          </li>
+          
+          <% [['Data', [['humans'],
+                        ['traits'],
+                        ['specimens'],
+                        ['collections', 'Files'],
+                        ['links', 'Metadata']]],
+              ['Compute', [['pipeline_templates', 'Pipelines'],
+                           ['repositories', 'Code repositories'],
+                           ['virtual_machines']]],
+              ['Activity', [['pipeline_instances', 'Recent pipelines'],
+                            ['jobs', 'Recent jobs']]],
+              ['System', [['users'],
+                         ['groups'],
+                         ['nodes', 'Compute nodes'],
+                         ['keep_disks']]]].each do |j| %>   
+            <li><%= j[0] %>
+              <ul>
+              <% j[1].each do |k| %>
+                <% unless k[0] == 'users' and !current_user.andand.is_admin %>
+                  <li class="<%= 'arvados-nav-active' if (params[:controller] == k[0] && params[:action] != 'home') %>">
+                    <a href="/<%= k[0] %>">
+                      <%= if k[1] then k[1] else k[0].capitalize.gsub('_', ' ') end %>
+                    </a>
+                  </li>
+                <% end %>
+              <% end %>
+              </ul>
+            </li>
+          <% end %>
 
-    <%= yield %>
+          <li>Help
+            <ul>
+              <li><%= link_to 'Tutorials and User guide', "#{Rails.configuration.arvados_docsite}/user", target: "_blank" %></li>
+              <li><%= link_to 'API Reference', "#{Rails.configuration.arvados_docsite}/api", target: "_blank" %></li>
+              <li><%= link_to 'SDK Reference', "#{Rails.configuration.arvados_docsite}/sdk", target: "_blank" %></li>
+              <li><%= link_to 'Admin guide', "#{Rails.configuration.arvados_docsite}/admin", target: "_blank" %></li>
+            </ul>
+          </li>
+        </ul>
+        </div>
+        <% end %>
+      </div>
+        </div>
+  </div>
 
-  </div> <!-- /container -->
+  <%= piwik_tracking_tag %>
+  <%= javascript_tag do %>
+  <%= yield :footer_js %>
+  <% end %>
 
 </body>
 </html>