20850: Add deprecation notice & wb2 redirect to every page
[arvados.git] / apps / workbench / app / views / layouts / body.html.erb
1 <%# Copyright (C) The Arvados Authors. All rights reserved.
2
3 SPDX-License-Identifier: AGPL-3.0 %>
4
5   <div id="wrapper" class="container-fluid">
6     <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
7       <div class="navbar-header">
8         <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
9           <span class="sr-only">Toggle navigation</span>
10           <span class="icon-bar"></span>
11           <span class="icon-bar"></span>
12           <span class="icon-bar"></span>
13         </button>
14         <% site_name = Rails.configuration.Workbench.SiteName.downcase rescue Rails.application.class.parent_name %>
15         <% if current_user %>
16           <a class="navbar-brand" href="/" data-push=true><%= site_name %></a>
17         <% else %>
18           <span class="navbar-brand"><%= site_name %></span>
19         <% end %>
20       </div>
21
22       <div class="collapse navbar-collapse">
23         <ul class="nav navbar-nav navbar-right">
24
25           <li>
26             <a><i class="rotating loading glyphicon glyphicon-refresh"></i></a>
27           </li>
28
29           <% if current_user %>
30             <% if current_user.is_active %>
31               <% if !Rails.configuration.Workbench.MultiSiteSearch.empty? %>
32                 <li>
33                   <form class="navbar-form">
34                     <%=
35                        target = Rails.configuration.Workbench.MultiSiteSearch
36                        if target == "true"
37                          target = {controller: 'search', action: 'index'}
38                        end
39                        link_to("Multi-site search", target, {class: 'btn btn-default'}) %>
40                   </form>
41                 </li>
42               <% end %>
43               <li>
44                 <form class="navbar-form" role="search"
45                            data-search-modal=
46                            "<%= url_for(
47                             action: 'choose',
48                             controller: 'search',
49                             title: 'Search',
50                             action_name: 'Show',
51                             action_href: url_for(controller: :actions, action: :show),
52                             action_method: 'get',
53                             action_data: {selection_param: 'uuid', success: 'redirect-to-created-object'}.to_json)
54                            %>">
55                   <div class="input-group" style="width: 220px">
56                     <input type="text" class="form-control" placeholder="search this site">
57                     <a class="input-group-addon"><span class="glyphicon glyphicon-search"></span></a>
58                   </div>
59                 </form>
60               </li>
61             <% end %>
62
63             <li class="dropdown notification-menu">
64               <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="notifications-menu">
65                 <span class="badge badge-alert notification-count"><%= user_notifications.length if user_notifications.any? %></span>
66                 <span class="fa fa-lg fa-user"></span>
67                 <span class="caret"></span>
68               </a>
69               <ul class="dropdown-menu" role="menu">
70                 <li role="presentation" class="dropdown-header">
71                   <%= current_user.email %>
72                 </li>
73                 <% if current_user.is_active %>
74                 <li role="menuitem"><a href="/projects/<%=current_user.uuid%>" role="menuitem"><i class="fa fa-lg fa-home fa-fw"></i> Home project </a></li>
75                   <% if Rails.configuration.Services.Composer.ExternalURL != URI("") %>
76                     <li role="menuitem">
77                       <form action="<%= Rails.configuration.Services.Composer.ExternalURL.to_s %>" method="GET">
78                         <input type="hidden" name="api_token" value="<%= Thread.current[:arvados_api_token] %>" />
79                         <button role="menuitem" type="submit">
80                           <i class="fa fa-lg fa-share-alt fa-fw"></i> Workflow Composer
81                         </button>
82                       </form>
83                     </li>
84                   <% end %>
85                 <% if Rails.configuration.Services.Workbench2.ExternalURL != URI("") %>
86                 <li role="menuitem">
87                   <%
88                   wb2_url = Rails.configuration.Services.Workbench2.ExternalURL.to_s
89                     if wb2_url[-1] == '/'
90                   wb2_url  = wb2_url.chop
91                   end
92                   wb2_url += request.fullpath
93                   %>
94                   <form action="<%= wb2_url %>" method="GET">
95                     <button role="menuitem" type="submit">
96                       <i class="fa fa-lg fa-share-square fa-fw"></i> Go to Workbench 2
97                     </button>
98                   </form>
99                 </li>
100                 <% end %>
101                 <li role="menuitem">
102                   <%= link_to virtual_machines_user_path(current_user), role: 'menu-item' do %>
103                     <i class="fa fa-lg fa-terminal fa-fw"></i> Virtual machines
104                   <% end %>
105                 </li>
106                 <% if Rails.configuration.Workbench.Repositories %>
107                 <li role="menuitem"><a href="/repositories" role="menuitem"><i class="fa fa-lg fa-code-fork fa-fw"></i> Repositories </a></li>
108                 <% end -%>
109                 <li role="menuitem"><a href="/current_token" role="menuitem"><i class="fa fa-lg fa-ticket fa-fw"></i> Current token</a></li>
110                 <li role="menuitem">
111                   <%= link_to ssh_keys_user_path(current_user), role: 'menu-item' do %>
112                     <i class="fa fa-lg fa-key fa-fw"></i> SSH keys
113                   <% end %>
114 </li>
115                 <li role="menuitem"><a href="/users/link_account" role="menuitem"><i class="fa fa-lg fa-link fa-fw"></i> Link account </a></li>
116                 <% if !Rails.configuration.Workbench.UserProfileFormFields.empty? %>
117                   <li role="menuitem"><a href="/users/<%=current_user.uuid%>/profile" role="menuitem"><i class="fa fa-lg fa-user fa-fw"></i> Manage profile</a></li>
118                 <% end %>
119                 <% end %>
120                 <li role="presentation" class="divider"></li>
121                 <li role="menuitem"><a href="<%= logout_path %>" role="menuitem"><i class="fa fa-lg fa-sign-out fa-fw"></i> Log out</a></li>
122                 <% if user_notifications.any? %>
123                   <li role="presentation" class="divider"></li>
124                   <% user_notifications.each_with_index do |n, i| %>
125                     <% if i > 0 %><li class="divider"></li><% end %>
126                     <li class="notification"><%= n.call(self) %></li>
127                   <% end %>
128                 <% end %>
129               </ul>
130             </li>
131
132             <% if current_user.is_admin %>
133               <li class="dropdown">
134                 <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="system-menu">
135                   <span class="fa fa-lg fa-gear"></span>
136                   <span class="caret"></span>
137                 </a>
138                 <ul class="dropdown-menu" role="menu">
139                   <li role="presentation" class="dropdown-header">
140                     Admin Settings
141                   </li>
142                   <% if Rails.configuration.Workbench.Repositories %>
143                   <li role="menuitem"><a href="/repositories">
144                       <i class="fa fa-lg fa-code-fork fa-fw"></i> Repositories
145                   </a></li>
146                   <% end -%>
147                   <li role="menuitem"><a href="/virtual_machines">
148                       <i class="fa fa-lg fa-terminal fa-fw"></i> Virtual machines
149                   </a></li>
150                   <li role="menuitem"><a href="/authorized_keys">
151                       <i class="fa fa-lg fa-key fa-fw"></i> SSH keys
152                   </a></li>
153                   <li role="menuitem"><a href="/api_client_authorizations">
154                       <i class="fa fa-lg fa-ticket fa-fw"></i> API tokens
155                   </a></li>
156                   <li role="menuitem"><a href="/links">
157                       <i class="fa fa-lg fa-arrows-h fa-fw"></i> Links
158                   </a></li>
159                   <li role="menuitem"><a href="/users">
160                       <i class="fa fa-lg fa-user fa-fw"></i> Users
161                   </a></li>
162                   <li role="menuitem"><a href="/groups">
163                       <i class="fa fa-lg fa-users fa-fw"></i> Groups
164                   </a></li>
165                   <li role="menuitem"><a href="/keep_services">
166                       <i class="fa fa-lg fa-exchange fa-fw"></i> Keep services
167                   </a></li>
168                 </ul>
169               </li>
170             <% end %>
171           <% else %>
172             <% if !Rails.configuration.Users.AnonymousUserToken.empty? and Rails.configuration.Workbench.EnablePublicProjectsPage %>
173               <li><%= link_to 'Browse public projects', "/projects/public" %></li>
174             <% end %>
175             <li class="dropdown hover-dropdown login-menu">
176               <a href="<%= arvados_api_client.arvados_login_url(return_to: request.url) %>">Log in</a>
177               <ul class="dropdown-menu">
178                 <li>
179                   <a href="<%= arvados_api_client.arvados_login_url(return_to: request.url) %>">
180                     <span class="fa fa-lg fa-sign-in"></span>
181                     <p style="margin-left: 1.6em; margin-top: -1.35em; margin-bottom: 0em; margin-right: 0.5em;">Log in or register with<br/>any Google account</p>
182                   </a>
183                 </li>
184               </ul>
185             </li>
186           <% end %>
187
188           <li class="dropdown help-menu">
189             <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="arv-help">
190               <span class="fa fa-lg fa-question-circle"></span>
191               <span class="caret"></span>
192             </a>
193             <ul class="dropdown-menu">
194               <li role="presentation" class="dropdown-header">
195                 Help
196               </li>
197               <% if Rails.configuration.Workbench.EnableGettingStartedPopup %>
198                 <li>
199                 <%= link_to raw('<i class="fa fa-fw fa-info"></i> Getting Started ...'), "#",
200                      {'data-toggle' => "modal", 'data-target' => '#getting-started-modal-window'}  %>
201                 </li>
202               <% end %>
203               <% if !Rails.configuration.Workbench.ArvadosPublicDataDocURL.empty? %>
204                 <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> Public Pipelines and Data sets'), "#{Rails.configuration.Workbench.ArvadosPublicDataDocURL}", target: "_blank" %></li>
205               <% end %>
206               <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> Tutorials and User guide'), "#{Rails.configuration.Workbench.ArvadosDocsite}/user", target: "_blank" %></li>
207               <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> API Reference'), "#{Rails.configuration.Workbench.ArvadosDocsite}/api", target: "_blank" %></li>
208               <li><%= link_to raw('<i class="fa fa-book fa-fw"></i> SDK Reference'), "#{Rails.configuration.Workbench.ArvadosDocsite}/sdk", target: "_blank" %></li>
209               <li role="presentation" class="divider"></li>
210               <li> <%= link_to report_issue_popup_path(popup_type: 'version', current_location: request.url, current_path: request.fullpath, action_method: 'post'),
211                       {class: 'report-issue-modal-window', remote: true, return_to: request.url} do %>
212                        <i class="fa fa-fw fa-support"></i> Show version / debugging info ...
213                       <% end %>
214               </li>
215               <li> <%= link_to report_issue_popup_path(popup_type: 'report', current_location: request.url, current_path: request.fullpath, action_method: 'post'),
216                       {class: 'report-issue-modal-window', remote: true, return_to: request.url} do %>
217                        <i class="fa fa-fw fa-support"></i> Report a problem ...
218                       <% end %>
219               </li>
220             </ul>
221           </li>
222         </ul>
223       </div><!-- /.navbar-collapse -->
224     </nav>
225
226     <% if current_user.andand.is_active %>
227       <%= render partial: 'breadcrumbs' %>
228     <% elsif !current_user %>   <%# anonymous %>
229       <% if (@name_link or @object) and (project_breadcrumbs.any?) %>
230         <nav class="navbar navbar-default breadcrumbs" role="navigation">
231           <ul class="nav navbar-nav navbar-left">
232             <li>
233               <a href="/projects/public">Public Projects</a>
234             </li>
235             <% project_breadcrumbs.each do |p| %>
236               <li class="nav-separator">
237                 <i class="fa fa-lg fa-angle-double-right"></i>
238               </li>
239               <li>
240                 <%= link_to(p.name, project_path(p.uuid), data: {object_uuid: p.uuid, name: 'name'}) %>
241               </li>
242             <% end %>
243           </ul>
244         </nav>
245       <% end %>
246     <% end %>
247
248     <div id="deprecation-notice" class="row">
249       <div class="col-md-12">
250         <div class="alert alert-block alert-warning">
251             <button type="button" class="close" data-dismiss="alert">&times;</button>
252           <span>You are using the <a href="https://doc.arvados.org/user/topics/workbench-migration.html">deprecated workbench application</a>
253             to access Arvados. A newer workbench application is available.
254           <form action="<%= wb2_url %>" method="GET">
255                     <button type="submit">
256                       <i class="fa fa-lg fa-share-square fa-fw"></i> Go to Workbench 2
257                     </button>
258           </form>
259           </span>
260     </div>
261   </div>
262     </div>
263
264     <%= render partial: 'browser_unsupported' %><%# requires JS support below %>
265     <%= render partial: 'getting_started/getting_started_popup' %>
266
267     <div id="page-wrapper">
268       <%= yield %>
269     </div>
270   </div>
271
272   <%= yield :footer_html %>
273
274 <div class="modal-container"></div>
275 <div id="report-issue-modal-window"></div>
276 <script src="/browser_unsupported.js"></script>
277
278 <%  if Rails.configuration.Workbench.EnableGettingStartedPopup and current_user and !current_user.prefs[:getting_started_shown] and
279        !request.url.include?("/profile") and
280        !request.url.include?("/user_agreements") and
281        !request.url.include?("/inactive")%>
282   <script>
283     $("#getting-started-modal-window").modal('show');
284   </script>
285   <%
286     prefs = current_user.prefs
287     prefs[:getting_started_shown] = Time.now
288     current_user.update_attributes prefs: prefs.to_json
289   %>
290 <% end %>