Merge branch 'master' into 2756-eventbus-in-workbench
[arvados.git] / apps / workbench / app / views / layouts / application.html.erb
1 <!DOCTYPE html>
2 <html>
3 <head>
4   <meta charset="utf-8">
5   <title>
6     <% if content_for? :page_title %>
7     <%= yield :page_title %> / <%= Rails.configuration.site_name %>
8     <% else %>
9     <%= Rails.configuration.site_name %>
10     <% end %>
11   </title>
12   <meta name="viewport" content="width=device-width, initial-scale=1.0">
13   <link rel="icon" href="/favicon.ico" type="image/x-icon">
14   <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
15   <meta name="description" content="">
16   <meta name="author" content="">
17
18   <% if current_user %>
19   <meta name="arv-websocket-url" content="<%=$arvados_api_client.discovery[:websocketUrl]%>?api_token=<%=Thread.current[:arvados_api_token]%>">
20   <% end %>
21
22   <%= stylesheet_link_tag    "application", :media => "all" %>
23   <%= javascript_include_tag "application" %>
24   <%= csrf_meta_tags %>
25   <%= yield :head %>
26   <%= javascript_tag do %>
27   <%= yield :js %>
28   <% end %>
29   <style>
30     <%= yield :css %>
31     body {
32     min-height: 100%;
33     height: 100%;
34     }
35
36     body > div.container-fluid {
37     padding-top: 70px; /* 70px to make the container go all the way to the bottom of the navbar */
38     }
39
40     @media (max-width: 979px) { body { padding-top: 0; } }
41
42     .navbar .nav li.nav-separator > span.glyphicon.glyphicon-arrow-right {
43     padding-top: 1.25em;
44     }
45
46     @media (max-width: 767px) {
47     .breadcrumbs {
48     display: none;
49     }
50     }
51   </style>
52   <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
53 </head>
54 <body>
55   <div id="wrapper">
56     <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
57       <div class="navbar-header">
58         <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
59           <span class="sr-only">Toggle navigation</span>
60           <span class="icon-bar"></span>
61           <span class="icon-bar"></span>
62           <span class="icon-bar"></span>
63         </button>
64         <a class="navbar-brand" href="/"><%= Rails.configuration.site_name rescue Rails.application.class.parent_name %></a>
65       </div>
66
67       <div class="collapse navbar-collapse">
68         <% if current_user.andand.is_active %>
69           <ul class="nav navbar-nav side-nav">
70
71             <li class="<%= 'arvados-nav-active' if params[:action] == 'home' %>">
72               <a href="/"><i class="fa fa-lg fa-dashboard fa-fw"></i> Dashboard</a>
73             </li>
74
75             <li class="dropdown">
76               <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-lg fa-hand-o-up fa-fw"></i> Help <b class="caret"></b></a>
77               <ul class="dropdown-menu">
78                 <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> Tutorials and User guide'), "#{Rails.configuration.arvados_docsite}/user", target: "_blank" %></li>
79                 <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> API Reference'), "#{Rails.configuration.arvados_docsite}/api", target: "_blank" %></li>
80                 <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> SDK Reference'), "#{Rails.configuration.arvados_docsite}/sdk", target: "_blank" %></li>
81               </ul>
82             </li>
83
84             <li class="dropdown">
85               <a href="/folders" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-lg fa-folder-o fa-fw"></i> Folders <b class="caret"></b></a>
86               <ul class="dropdown-menu">
87                 <li><%= link_to raw('<i class="fa fa-plus fa-fw"></i> Create new folder'), folders_path, method: :post %></li>
88                 <% @my_top_level_folders.call[0..7].each do |folder| %>
89                 <li><%= link_to raw('<i class="fa fa-folder-open fa-fw"></i> ') + folder.name, folder_path(folder) %></li>
90                 <% end %>
91                 <li><a href="/folders">
92                     <i class="fa fa-ellipsis-h fa-fw"></i> Show all folders
93                 </a></li>
94               </ul>
95             </li>
96             <li><a href="/collections">
97                 <i class="fa fa-lg fa-briefcase fa-fw"></i> Collections (data files)
98             </a></li>
99             <li><a href="/jobs">
100                 <i class="fa fa-lg fa-tasks fa-fw"></i> Jobs
101             </a></li>
102             <li><a href="/pipeline_instances">
103                 <i class="fa fa-lg fa-tasks fa-fw"></i> Pipeline instances
104             </a></li>
105             <li><a href="/pipeline_templates">
106                 <i class="fa fa-lg fa-gears fa-fw"></i> Pipeline templates
107             </a></li>
108             <li>&nbsp;</li>
109             <li><a href="/repositories">
110                 <i class="fa fa-lg fa-code-fork fa-fw"></i> Repositories
111             </a></li>
112             <li><a href="/virtual_machines">
113                 <i class="fa fa-lg fa-terminal fa-fw"></i> Virtual machines
114             </a></li>
115             <li><a href="/humans">
116                 <i class="fa fa-lg fa-male fa-fw"></i> Humans
117             </a></li>
118             <li><a href="/specimens">
119                 <i class="fa fa-lg fa-flask fa-fw"></i> Specimens
120             </a></li>
121             <li><a href="/traits">
122                 <i class="fa fa-lg fa-clipboard fa-fw"></i> Traits
123             </a></li>
124             <li><a href="/links">
125                 <i class="fa fa-lg fa-arrows-h fa-fw"></i> Links
126             </a></li>
127             <% if current_user.andand.is_admin %>
128               <li><a href="/users">
129                   <i class="fa fa-lg fa-user fa-fw"></i> Users
130               </a></li>
131             <% end %>
132             <li><a href="/groups">
133                 <i class="fa fa-lg fa-users fa-fw"></i> Groups
134             </a></li>
135             <li><a href="/nodes">
136                 <i class="fa fa-lg fa-cogs fa-fw"></i> Compute nodes
137             </a></li>
138             <li><a href="/keep_disks">
139                 <i class="fa fa-lg fa-hdd-o fa-fw"></i> Keep disks
140             </a></li>
141           </ul>
142         <% end %>
143
144         <ul class="nav navbar-nav navbar-left breadcrumbs">
145           <% if current_user %>
146             <% if content_for?(:breadcrumbs) %>
147               <%= yield(:breadcrumbs) %>
148             <% else %>
149               <li class="nav-separator"><span class="glyphicon glyphicon-arrow-right"></span></li>
150               <li>
151                 <%= link_to(
152                             controller.controller_name.humanize.downcase,
153                             url_for({controller: params[:controller]})) %>
154               </li>
155               <% if params[:action] != 'index' %>
156                 <li class="nav-separator">
157                   <span class="glyphicon glyphicon-arrow-right"></span>
158                 </li>
159                 <li>
160                   <%= link_to_if_arvados_object @object, {friendly_name: true}, {data: {object_uuid: @object.andand.uuid, name: 'name'}} %>
161                 </li>
162                 <li style="padding: 14px 0 14px">
163                   <%= form_tag do |f| %>
164                     <%= render :partial => "selection_checkbox", :locals => {:object => @object} %>
165                   <% end %>
166                 </li>
167               <% end %>
168             <% end %>
169           <% end %>
170         </ul>
171
172         <ul class="nav navbar-nav navbar-right">
173
174           <li>
175             <a><i class="rotating loading glyphicon glyphicon-refresh"></i></a>
176           </li>
177
178           <% if current_user %>
179           <!-- XXX placeholder for this when search is implemented
180           <li>
181             <form class="navbar-form" role="search">
182               <div class="input-group" style="width: 220px">
183                 <input type="text" class="form-control" placeholder="search">
184                 <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
185               </div>
186             </form>
187           </li>
188           -->
189
190           <li class="dropdown notification-menu">
191             <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="collections-menu">
192               <span class="glyphicon glyphicon-paperclip"></span>
193               <span class="badge" id="persistent-selection-count"></span>
194               <span class="caret"></span>
195             </a>
196               <ul class="dropdown-menu" role="menu" id="persistent-selection-list">
197                 <%= form_tag '/actions' do %>
198                 <%= hidden_field_tag 'uuid', @object.andand.uuid %>
199                 <div id="selection-form-content"></div>
200                 <% end %>
201             </ul>
202           </li>
203
204           <% if current_user.is_active %>
205           <li class="dropdown notification-menu">
206             <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="notifications-menu">
207               <span class="glyphicon glyphicon-envelope"></span>
208               <span class="badge badge-alert notification-count"><%= @notification_count %></span>
209               <span class="caret"></span>
210             </a>
211             <ul class="dropdown-menu" role="menu">
212               <% if (@notifications || []).length > 0 %>
213                 <% @notifications.each_with_index do |n, i| %>
214                   <% if i > 0 %><li class="divider"></li><% end %>
215                   <li class="notification"><%= n.call(self) %></li>
216                 <% end %>
217               <% else %>
218                 <li class="notification empty">No notifications.</li>
219               <% end %>
220             </ul>
221           </li>
222           <% end %>
223
224           <li class="dropdown">
225             <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="user-menu">
226               <span class="glyphicon glyphicon-user"></span><span class="caret"></span>
227             </a>
228             <ul class="dropdown-menu" role="menu">
229               <li role="presentation" class="dropdown-header"><%= current_user.email %></li>
230               <% if current_user.is_active %>
231               <li role="presentation" class="divider"></li>
232               <li role="presentation"><a href="/authorized_keys" role="menuitem"><i class="fa fa-key fa-fw"></i> Manage ssh keys</a></li>
233               <li role="presentation"><a href="/api_client_authorizations" role="menuitem"><i class="fa fa-ticket fa-fw"></i> Manage API tokens</a></li>
234               <li role="presentation" class="divider"></li>
235               <% end %>
236               <li role="presentation"><a href="<%= logout_path %>" role="menuitem"><i class="fa fa-sign-out fa-fw"></i> Log out</a></li>
237             </ul>
238           </li>
239           <% else %>
240             <li><a href="<%= arvados_api_client.arvados_login_url(return_to: root_url) %>">Log in</a></li>
241           <% end %>
242         </ul>
243       </div><!-- /.navbar-collapse -->
244     </nav>
245
246     <div id="page-wrapper">
247       <%= yield %>
248     </div>
249   </div>
250
251 </div>
252
253   <%= yield :footer_html %>
254   <%= piwik_tracking_tag %>
255   <%= javascript_tag do %>
256   <%= yield :footer_js %>
257   <% end %>
258
259 </body>
260 </html>