Merge branch '2376-show-collection-tags-everywhere' into 1971-show-image-thumbnails
[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     @media (min-width: 768px) {
46     .left-nav {
47     position: fixed;
48     }
49     }
50     @media (max-width: 767px) {
51     .breadcrumbs {
52     display: none;
53     }
54     }
55   </style>
56 </head>
57 <body>
58
59   <div class="navbar navbar-default navbar-fixed-top">
60     <div class="container-fluid">
61       <div class="navbar-header">
62         <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#workbench-navbar.navbar-collapse">
63           <span class="sr-only">Toggle navigation</span>
64           <span class="icon-bar"></span>
65           <span class="icon-bar"></span>
66           <span class="icon-bar"></span>
67         </button>
68         <a class="navbar-brand" href="/"><%= Rails.configuration.site_name rescue Rails.application.class.parent_name %></a>
69       </div>
70
71       <div class="collapse navbar-collapse" id="workbench-navbar">
72       <ul class="nav navbar-nav navbar-left breadcrumbs">
73         <% if current_user %>
74         <% if content_for?(:breadcrumbs) %>
75           <%= yield(:breadcrumbs) %>
76         <% else %>
77           <li class="nav-separator"><span class="glyphicon glyphicon-arrow-right"></span></li>
78           <li>
79             <%= link_to(
80                         controller.model_class.to_s.pluralize.underscore.gsub('_', ' '),
81                         url_for({controller: params[:controller]})) %>
82           </li>
83           <% if params[:action] != 'index' %>
84             <li class="nav-separator">
85               <span class="glyphicon glyphicon-arrow-right"></span>
86             </li>
87             <li>
88               <!-- <%= link_to controller.breadcrumb_page_name, request.fullpath %> -->
89               <%= link_to_if_arvados_object @object %>
90             </li>
91             <li style="padding: 14px 0 14px">
92               <%= form_tag do |f| %>
93                 <%= render :partial => "selection_checkbox", :locals => {:object => @object} %>
94               <% end %>
95             </li>
96           <% end %>
97         <% end %>
98         <% end %>
99       </ul>
100
101       <ul class="nav navbar-nav navbar-right">
102
103         <li>
104           <a><i class="rotating loading glyphicon glyphicon-refresh"></i></a>
105         </li>
106
107         <% if current_user %>
108         <!-- XXX placeholder for this when search is implemented
109         <li>
110           <form class="navbar-form" role="search">
111             <div class="input-group" style="width: 220px">
112               <input type="text" class="form-control" placeholder="search">
113               <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
114             </div>
115           </form>
116         </li>
117         -->
118
119         <li class="dropdown notification-menu">
120           <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="collections-menu">
121             <span class="glyphicon glyphicon-paperclip"></span>
122             <span class="badge" id="persistent-selection-count"></span>
123             <span class="caret"></span>
124           </a>
125             <ul class="dropdown-menu" role="menu" id="persistent-selection-list">
126               <%= form_tag '/actions' do %>
127               <div id="selection-form-content"></div>
128               <% end %>
129           </ul>
130         </li>
131
132         <% if current_user.is_active %>
133         <li class="dropdown notification-menu">
134           <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="notifications-menu">
135             <span class="glyphicon glyphicon-envelope"></span>
136             <span class="badge badge-alert notification-count"><%= @notification_count %></span>
137             <span class="caret"></span>
138           </a>
139           <ul class="dropdown-menu" role="menu">
140             <% if (@notifications || []).length > 0 %>
141               <% @notifications.each_with_index do |n, i| %>
142                 <% if i > 0 %><li class="divider"></li><% end %>
143                 <li class="notification"><%= n.call(self) %></li>
144               <% end %>
145             <% else %>
146               <li class="notification empty">No notifications.</li>
147             <% end %>
148           </ul>
149         </li>
150         <% end %>
151
152         <li class="dropdown">
153           <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="user-menu">
154             <span class="glyphicon glyphicon-user"></span><span class="caret"></span>
155           </a>
156           <ul class="dropdown-menu" role="menu">
157             <li role="presentation" class="dropdown-header"><%= current_user.email %></li>
158             <% if current_user.is_active %>
159             <li role="presentation" class="divider"></li>
160             <li role="presentation"><a href="/authorized_keys" role="menuitem">Manage ssh keys</a></li>
161             <li role="presentation"><a href="/api_client_authorizations" role="menuitem">Manage API tokens</a></li>
162             <li role="presentation" class="divider"></li>
163             <% end %>
164             <li role="presentation"><a href="<%= logout_path %>" role="menuitem">Log out</a></li>
165           </ul>
166         </li>
167         <% else -%>
168           <li><a href="<%= $arvados_api_client.arvados_login_url(return_to: root_url) %>">Log in</a></li>
169         <% end -%>
170       </ul>
171       </div><!-- /.navbar-collapse -->
172     </div><!-- /.container-fluid -->
173   </div>
174
175   <div class="container-fluid">
176       <div class="col-sm-9 col-sm-offset-3">
177         <div id="content" class="body-content">
178           <%= yield %>
179         </div>
180       </div>
181       <div class="col-sm-3 left-nav">
182         <div class="arvados-nav-container">
183         <% if current_user.andand.is_active %>
184         <div class="well">
185         <ul class="arvados-nav">
186           <li class="<%= 'arvados-nav-active' if params[:action] == 'home' %>">
187             <a href="/">Dashboard</a>
188           </li>
189
190           <% [['Data', [['collections', 'Collections (data files)'],
191                         ['humans'],
192                         ['traits'],
193                         ['specimens'],
194                         ['links']]],
195               ['Activity', [['pipeline_instances', 'Recent pipeline instances'],
196                             ['jobs', 'Recent jobs']]],
197               ['Compute', [['pipeline_templates'],
198                            ['repositories', 'Code repositories'],
199                            ['virtual_machines']]],
200               ['System', [['users'],
201                          ['groups'],
202                          ['nodes', 'Compute nodes'],
203                          ['keep_disks']]]].each do |j| %>
204             <li><%= j[0] %>
205               <ul>
206               <% j[1].each do |k| %>
207                 <% unless k[0] == 'users' and !current_user.andand.is_admin %>
208                   <li class="<%= 'arvados-nav-active' if (params[:controller] == k[0] && params[:action] != 'home') %>">
209                     <a href="/<%= k[0] %>">
210                       <%= if k[1] then k[1] else k[0].capitalize.gsub('_', ' ') end %>
211                     </a>
212                   </li>
213                 <% end %>
214               <% end %>
215               </ul>
216             </li>
217           <% end %>
218
219           <li>Help
220             <ul>
221               <li><%= link_to 'Tutorials and User guide', "#{Rails.configuration.arvados_docsite}/user", target: "_blank" %></li>
222               <li><%= link_to 'API Reference', "#{Rails.configuration.arvados_docsite}/api", target: "_blank" %></li>
223               <li><%= link_to 'SDK Reference', "#{Rails.configuration.arvados_docsite}/sdk", target: "_blank" %></li>
224               <li><%= link_to 'Admin guide', "#{Rails.configuration.arvados_docsite}/admin", target: "_blank" %></li>
225             </ul>
226           </li>
227         </ul>
228         </div>
229         <% end %>
230       </div>
231         </div>
232   </div>
233
234   <%= yield :footer_html %>
235   <%= piwik_tracking_tag %>
236   <%= javascript_tag do %>
237   <%= yield :footer_js %>
238   <% end %>
239
240 </body>
241 </html>