Merge branch '18947-githttpd'
[arvados.git] / apps / workbench / app / views / layouts / application.html.erb
index ec2c98bdcb181d10f189c500e3e5972d96a6c773..93ce5926790d8062f9e10826aa328ce9040a179f 100644 (file)
@@ -1,12 +1,16 @@
+<%# Copyright (C) The Arvados Authors. All rights reserved.
+
+SPDX-License-Identifier: AGPL-3.0 %>
+
 <!DOCTYPE html>
-<html>
+<html lang="en" ng-app="Workbench">
 <head>
   <meta charset="utf-8">
   <title>
     <% if content_for? :page_title %>
-    <%= yield :page_title %> / <%= Rails.configuration.site_name %>
+    <%= yield :page_title %> / <%= Rails.configuration.Workbench.SiteName %>
     <% else %>
-    <%= Rails.configuration.site_name %>
+    <%= Rails.configuration.Workbench.SiteName %>
     <% end %>
   </title>
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
   <meta name="description" content="">
   <meta name="author" content="">
+  <% if current_user %>
+    <% content_for :js do %>
+      window.defaultSession = <%=raw({baseURL: Rails.configuration.Services.Controller.ExternalURL.to_s.sub(/\/*$/,'/'), token: Thread.current[:arvados_api_token], user: current_user}.to_json)%>
+    <% end %>
+  <% end %>
   <% if current_user and $arvados_api_client.discovery[:websocketUrl] %>
   <meta name="arv-websocket-url" content="<%=$arvados_api_client.discovery[:websocketUrl]%>?api_token=<%=Thread.current[:arvados_api_token]%>">
   <% end %>
   <meta name="robots" content="NOINDEX, NOFOLLOW">
+
+  <%# Feature #5645: Add open graph meta tags to generate this page's
+      social graph that search engines can use. http://ogp.me/ %>
+  <meta property="og:type" content="article" />
+  <meta property="og:url" content="<%= request.url %>" />
+  <meta property="og:site_name" content="<%= Rails.configuration.Workbench.SiteName %>" />
+  <% if defined?(@object) && @object %>
+    <% if @object.respond_to?(:name) and @object.name.present? %>
+      <meta property="og:title" content="<%= @object.name%>" />
+    <% end %>
+    <% if (@object.respond_to?(:description) rescue nil) and @object.description.present? %>
+      <meta property="og:description" content="<%= @object.description%>" />
+    <% end %>
+  <% end %>
+  <%# Done adding open graph meta tags %>
+
   <%= stylesheet_link_tag    "application", :media => "all" %>
   <%= javascript_include_tag "application" %>
   <%= csrf_meta_tags %>
   <%= yield :head %>
   <%= javascript_tag do %>
+    angular.module('Arvados').value('arvadosApiToken', '<%=Thread.current[:arvados_api_token]%>');
+    angular.module('Arvados').value('arvadosDiscoveryUri', '<%= Rails.configuration.Services.Controller.ExternalURL.to_s.sub(/\/*$/,'/') + 'discovery/v1/apis/arvados/v1/rest' %>');
   <%= yield :js %>
   <% end %>
   <style>
     @media (max-width: 979px) { body { padding-top: 0; } }
 
     @media (max-width: 767px) {
-    .breadcrumbs {
-    display: none;
-    }
+      .breadcrumbs {
+        padding-top: 0;
+      }
     }
   </style>
   <link href="//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css" rel="stylesheet">
+  <%= piwik_tracking_tag if (PiwikAnalytics.configuration.url != 'localhost' rescue false) %>
 </head>
 <body>
-  <div id="wrapper" class="container-fluid">
-    <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
-      <div class="navbar-header">
-        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-          <span class="sr-only">Toggle navigation</span>
-          <span class="icon-bar"></span>
-          <span class="icon-bar"></span>
-          <span class="icon-bar"></span>
-        </button>
-        <a class="navbar-brand" href="/"><%= Rails.configuration.site_name.downcase rescue Rails.application.class.parent_name %></a>
-      </div>
-
-      <div class="collapse navbar-collapse">
-        <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>
-          -->
-
-          <li class="dropdown notification-menu">
-            <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="notifications-menu">
-              <span class="badge badge-alert notification-count"><%= @notification_count %></span>
-              <%= current_user.email %>
-            </a>
-            <ul class="dropdown-menu" role="menu">
-              <% if current_user.is_active %>
-              <li role="presentation"><a href="/authorized_keys" role="menuitem"><i class="fa fa-key fa-fw"></i> Manage ssh keys</a></li>
-              <li role="presentation"><a href="/api_client_authorizations" role="menuitem"><i class="fa fa-ticket fa-fw"></i> Manage API tokens</a></li>
-              <li role="presentation" class="divider"></li>
-              <% end %>
-              <li role="presentation"><a href="<%= logout_path %>" role="menuitem"><i class="fa fa-sign-out fa-fw"></i> Log out</a></li>
-              <% if current_user.is_active and
-                    (@notifications || []).length > 0 %>
-                <li role="presentation" class="divider"></li>
-                <% @notifications.each_with_index do |n, i| %>
-                  <% if i > 0 %><li class="divider"></li><% end %>
-                  <li class="notification"><%= n.call(self) %></li>
-                <% end %>
-              <% end %>
-            </ul>
-          </li>
-
-          <li class="dropdown selection-menu">
-            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
-              <span class="fa fa-lg fa-paperclip"></span>
-              <span class="badge" id="persistent-selection-count"></span>
-            </a>
-            <ul class="dropdown-menu" role="menu" id="persistent-selection-list">
-              <%= form_tag '/actions' do %>
-                <%= hidden_field_tag 'uuid', @object.andand.uuid %>
-                <div id="selection-form-content"></div>
-              <% end %>
-            </ul>
-          </li>
-
-          <% if current_user.is_active %>
-            <li class="dropdown">
-              <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="system-menu">
-                <span class="fa fa-lg fa-gear"></span>
-              </a>
-              <ul class="dropdown-menu" role="menu">
-                <li role="presentation" class="dropdown-header">
-                  Settings
-                </li>
-                <li role="presentation"><a href="/repositories">
-                    <i class="fa fa-lg fa-code-fork fa-fw"></i> Repositories
-                </a></li>
-                <li role="presentation"><a href="/virtual_machines">
-                    <i class="fa fa-lg fa-terminal fa-fw"></i> Virtual machines
-                </a></li>
-                <li role="presentation"><a href="/links">
-                    <i class="fa fa-lg fa-arrows-h fa-fw"></i> Links
-                </a></li>
-                <% if current_user.andand.is_admin %>
-                  <li role="presentation"><a href="/users">
-                      <i class="fa fa-lg fa-user fa-fw"></i> Users
-                  </a></li>
-                <% end %>
-                <li role="presentation"><a href="/groups">
-                    <i class="fa fa-lg fa-users fa-fw"></i> Groups
-                </a></li>
-                <li role="presentation"><a href="/nodes">
-                    <i class="fa fa-lg fa-cloud fa-fw"></i> Compute nodes
-                </a></li>
-                <li role="presentation"><a href="/keep_services">
-                    <i class="fa fa-lg fa-exchange fa-fw"></i> Keep services
-                </a></li>
-                <li role="presentation"><a href="/keep_disks">
-                    <i class="fa fa-lg fa-hdd-o fa-fw"></i> Keep disks
-                </a></li>
-              </ul>
-            </li>
-          <% end %>
-          <% else %>
-            <li><a href="<%= arvados_api_client.arvados_login_url(return_to: root_url) %>">Log in</a></li>
-          <% end %>
-
-          <li class="dropdown help-menu">
-            <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="arv-help">
-              <span class="fa fa-lg fa-question-circle"></span>
-            </a>
-            <ul class="dropdown-menu">
-              <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> Tutorials and User guide'), "#{Rails.configuration.arvados_docsite}/user", target: "_blank" %></li>
-              <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> API Reference'), "#{Rails.configuration.arvados_docsite}/api", target: "_blank" %></li>
-              <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> SDK Reference'), "#{Rails.configuration.arvados_docsite}/sdk", target: "_blank" %></li>
-            </ul>
-          </li>
-        </ul>
-      </div><!-- /.navbar-collapse -->
-    </nav>
-
-    <% if current_user.andand.is_active %>
-      <nav class="navbar navbar-default breadcrumbs" role="navigation">
-        <ul class="nav navbar-nav navbar-left">
-          <li class="dropdown">
-            <%= 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,
-                  :top_button => Proc.new do %>
-                    <% link_to projects_path, method: 'post', class: 'btn btn-xs btn-default pull-right' do %>
-                      <i class="fa fa-plus"></i> New project
-                    <% end %>
-                  <% 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 %>
-        </ul>
-      </nav>
-    <% end %>
-
-    <div id="page-wrapper">
-      <%= yield %>
-    </div>
-  </div>
-
-  <%= yield :footer_html %>
-  <%= piwik_tracking_tag %>
-  <%= javascript_tag do %>
-  <%= yield :footer_js %>
-  <% end %>
-
-<div class="modal-container"></div>
+<%= render template: 'layouts/body' %>
+<%= javascript_tag do %>
+<%= yield :footer_js %>
+<% end %>
 </body>
 </html>