* Left nav correctly highlights current section
[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   <%= stylesheet_link_tag    "application", :media => "all" %>
18   <%= javascript_include_tag "application" %>
19   <%= csrf_meta_tags %>
20   <%= yield :head %>
21   <%= javascript_tag do %>
22   <%= yield :js %>
23   <% end %>
24   <style>
25     <%= yield :css %>
26     body {
27     min-height: 100%;
28     height: 100%;
29     }
30
31     body > div.container-fluid {
32     padding-top: 70px; /* 70px to make the container go all the way to the bottom of the navbar */
33     }
34     
35     body > div.container-fluid > div.col-sm-9.col-sm-offset-3 {
36     overflow: auto;
37     }
38
39     @media (max-width: 979px) { body { padding-top: 0; } }
40
41     .navbar .nav li.nav-separator > span.glyphicon.glyphicon-arrow-right {
42     padding-top: 1.25em;
43     }
44
45     /* Setting the height needs to be fixed with javascript. */
46     .dropdown-menu {
47     padding-right: 20px;
48     max-height: 440px;
49     width: 400px;
50     overflow-y: auto;
51     }
52
53     .arvados-nav-container {
54     position: fixed; 
55     top: 70px; 
56     height: calc(100% - 70px); 
57     overflow: auto; 
58     z-index: 2;
59     }
60     .arvados-nav-active {
61     background: rgb(66, 139, 202);
62     }
63     .arvados-nav-active a {
64     color: white;
65     }
66   </style>
67 </head>
68 <body>
69
70   <div class="navbar navbar-default navbar-fixed-top">
71     <div class="container-fluid">
72       <ul class="nav navbar-nav navbar-left">
73         <li><a class="navbar-brand" href="/"><%= Rails.configuration.site_name rescue Rails.application.class.parent_name %></a></li>
74         <% if current_user %>
75         <li class="nav-separator"><span class="glyphicon glyphicon-arrow-right"></span></li>
76         <% if content_for?(:breadcrumbs) %>
77           <%= yield(:breadcrumbs) %>
78         <% else %>
79           <li>
80             <%= link_to(
81                         controller.model_class.to_s.pluralize.underscore.gsub('_', ' '),
82                         url_for({controller: params[:controller]})) %>
83           </li>
84           <% if params[:action] != 'index' %>
85             <li class="nav-separator">
86               <span class="glyphicon glyphicon-arrow-right"></span>
87             </li>
88             <li>
89 <%= link_to controller.breadcrumb_page_name, request.fullpath %>
90             </li>
91           <% end %>
92         <% end %>
93         <% end %>
94       </ul>
95   
96       <ul class="nav navbar-nav navbar-right">
97
98         <% if current_user %>
99         <li>
100           <div class="loading" style="transform: translate(-20px,20px) scale(0.1,0.1); -ms-transform: translate(-20px,20px) scale(0.1,0.1); -webkit-transform: translate(-20px,20px) scale(0.1,0.1); display: none">
101             <%= render partial: 'loading' %>
102           </div>
103         </li>
104
105         <li>
106           <form class="navbar-form" role="search">
107             <div class="input-group" style="width: 220px">
108               <input type="text" class="form-control" placeholder="search">
109               <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
110             </div>
111           </form>
112         </li>
113
114         <li class="dropdown">
115           <a href="#" class="dropdown-toggle" data-toggle="dropdown">
116             <span class="glyphicon glyphicon-envelope"></span>
117             <span class="badge"><%= @notification_count %></span>
118             <span class="caret"></span>
119           </a>
120           <ul class="dropdown-menu" role="menu">
121             <% if @notifications.length > 0 %>
122               <% @notifications.each do |n| %>
123                 <li style="padding: 10px"><%= n.call(self) %></li>
124                 <li class="divider"></li>
125               <% end %>
126             <% else %>
127               <li style="padding: 10px">No notifications.</li>
128             <% end %>
129           </ul>
130         </li>        
131
132         <li class="dropdown">
133           <a href="#" class="dropdown-toggle" data-toggle="dropdown">
134             <span class="glyphicon glyphicon-user"></span><span class="caret"></span>
135           </a>
136           <ul class="dropdown-menu" role="menu">
137             <li role="presentation" class="dropdown-header"><%= current_user.email %></li>
138             <li role="presentation" class="divider"></li>
139             <li role="presentation"><a href="/authorized_keys" role="menuitem">Manage ssh keys</a></li>
140             <li role="presentation"><a href="/api_client_authorizations" role="menuitem">Manage API tokens</a></li>
141             <li role="presentation" class="divider"></li>
142             <li role="presentation"><a href="<%= logout_path %>" role="menuitem">Log out</a></li>
143           </ul>
144         </li>
145         <% else -%>
146           <li><a href="<%= $arvados_api_client.arvados_login_url(return_to: root_url) %>">Log in</a></li>
147         <% end -%>
148       </ul>
149     </div>
150   </div>
151
152   <div class="container-fluid">
153       <div class="col-sm-3">
154         <div class="left-nav arvados-nav-container">
155         <% if current_user %>
156         <div class="well">
157         <ul class="arvados-nav">
158           <li><a href="/">Dashboard</a></li>
159           
160           <% [['Data', [['humans'],
161                         ['traits'],
162                         ['specimens'],
163                         ['collections', 'Files']]],
164               ['Compute', [['pipeline_templates', 'Pipelines'],
165                            ['repositories', 'Code repositories'],
166                            ['virtual_machines']]],
167               ['Activity', [['pipeline_instances', 'Recent pipelines'],
168                             ['jobs', 'Recent jobs']]]].each do |j| %>
169             <li><%= j[0] %>
170               <ul>
171               <% j[1].each do |k| %>
172                 <li class="<%= 'arvados-nav-active' if params[:controller] == k[0] %>">
173                   <a href="/<%= k[0] %>">
174                     <%= if k[1] then k[1] else k[0].capitalize.gsub('_', ' ') end %>
175                   </a>
176                 </li>
177               <% end %>
178               </ul>
179             </li>
180           <% end %>
181
182           <li>Help
183             <ul>
184               <li><%= link_to 'Tutorials and User guide', "#{Rails.configuration.arvados_docsite}/user", target: "_blank" %></li>
185               <li><%= link_to 'API Reference', "#{Rails.configuration.arvados_docsite}/api", target: "_blank" %></li>
186               <li><%= link_to 'SDK Reference', "#{Rails.configuration.arvados_docsite}/sdk", target: "_blank" %></li>
187               <li><%= link_to 'Admin guide', "#{Rails.configuration.arvados_docsite}/admin", target: "_blank" %></li>
188             </ul>
189           </li>
190           <% if current_user.andand.is_admin %>
191
192           <% [['Admin', [['users'],
193                          ['groups'],
194                          ['nodes', 'Compute nodes'],
195                          ['keep_disks']]]].each do |j| %>   
196             <li><%= j[0] %>
197               <ul>
198               <% j[1].each do |k| %>
199                 <li class="<%= "arvados-nav-active" if params[:controller] == k[0] %>">
200                   <a href="/<%= k[0] %>">
201                     <%= if k[1] then k[1] else k[0].capitalize.gsub('_', ' ') end %>
202                   </a>
203                 </li>
204               <% end %>
205               </ul>
206             </li>
207           <% end %>
208           <% end %>
209         </ul>
210         </div>
211         <% end %>
212       </div>
213         </div>
214       <div class="col-sm-9 col-sm-offset-3">
215         <div id="content">
216           <%= yield %>
217         </div>
218       </div>
219   </div>
220
221   <%= piwik_tracking_tag %>
222   <%= javascript_tag do %>
223   <%= yield :footer_js %>
224   <% end %>
225 </body>
226 </html>