X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a94cf58e4659109a62f0d91ef37d1b81e60c5790..744ca00ccd1e7fda9d4210b18c1f4a734f3b2261:/apps/workbench/app/views/layouts/application.html.erb diff --git a/apps/workbench/app/views/layouts/application.html.erb b/apps/workbench/app/views/layouts/application.html.erb index 969bbcbd85..a5460c295f 100644 --- a/apps/workbench/app/views/layouts/application.html.erb +++ b/apps/workbench/app/views/layouts/application.html.erb @@ -4,7 +4,7 @@ <% if content_for? :page_title %> - <%= yield :page_title %> + <%= yield :page_title %> / <%= Rails.configuration.site_name %> <% else %> <%= Rails.configuration.site_name %> <% end %> @@ -14,6 +14,7 @@ <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> <meta name="description" content=""> <meta name="author" content=""> + <meta name="robots" content="NOINDEX, NOFOLLOW"> <%= stylesheet_link_tag "application", :media => "all" %> <%= javascript_include_tag "application" %> <%= csrf_meta_tags %> @@ -22,87 +23,237 @@ <%= yield :js %> <% end %> <style> + <%= yield :css %> body { - padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */ + min-height: 100%; + height: 100%; + } + + body > div.container-fluid { + padding-top: 70px; /* 70px to make the container go all the way to the bottom of the navbar */ + } + + @media (max-width: 979px) { body { padding-top: 0; } } + + .navbar .nav li.nav-separator > span.glyphicon.glyphicon-arrow-right { + padding-top: 1.25em; + } + + @media (max-width: 767px) { + .breadcrumbs { + display: none; + } } </style> + <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> </head> <body> - - <div class="navbar navbar-inverse navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> + <div id="wrapper"> + <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> - </a> - <a class="brand" href="/"><%= Rails.configuration.site_name rescue Rails.application.class.parent_name %></a> - <div class="nav-collapse collapse"> - <% if current_user.andand.is_active %> - <ul class="nav"> - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown"> - Access <b class="caret"></b> - </a> - <ul class="dropdown-menu"> - <li><%= link_to 'Keys', authorized_keys_path %></li> - <li><%= link_to 'VMs', virtual_machines_path %></li> - <li><%= link_to 'Repositories', repositories_path %></li> - <li><%= link_to 'API Tokens', api_client_authorizations_path %></li> - </ul> - </li> - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown"> - Compute <b class="caret"></b> - </a> - <ul class="dropdown-menu"> - <li><%= link_to 'Jobs', jobs_path %></li> - <li><%= link_to 'Pipeline instances', pipeline_instances_path %></li> - <li><%= link_to 'Pipeline templates', pipeline_templates_path %></li> - </ul> + </button> + <a class="navbar-brand" href="/"><%= Rails.configuration.site_name rescue Rails.application.class.parent_name %></a> + </div> + + <div class="collapse navbar-collapse"> + <% if current_user.andand.is_active %> + <ul class="nav navbar-nav side-nav"> + + <li class="<%= 'arvados-nav-active' if params[:action] == 'home' %>"> + <a href="/"><i class="fa fa-lg fa-dashboard fa-fw"></i> Dashboard</a> </li> + <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown"> - Data <b class="caret"></b> - </a> + <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> <ul class="dropdown-menu"> - <li><%= link_to 'Collections', collections_path %></li> - <li><%= link_to 'Humans', humans_path %></li> - <li><%= link_to 'Traits', traits_path %></li> + <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> - <% if current_user.is_admin %> + <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown"> - Admin <b class="caret"></b> - </a> + <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> <ul class="dropdown-menu"> - <li><%= link_to 'Users', users_path %></li> - <li><%= link_to 'Groups', groups_path %></li> + <li><%= link_to raw('<i class="fa fa-plus fa-fw"></i> Create new folder'), folders_path, method: :post %></li> + <% @my_top_level_folders.call[0..7].each do |folder| %> + <li><%= link_to raw('<i class="fa fa-folder-open fa-fw"></i> ') + folder.name, folder_path(folder) %></li> + <% end %> + <li><a href="/folders"> + <i class="fa fa-ellipsis-h fa-fw"></i> Show all folders + </a></li> </ul> </li> + <li><a href="/collections"> + <i class="fa fa-lg fa-briefcase fa-fw"></i> Collections (data files) + </a></li> + <li><a href="/jobs"> + <i class="fa fa-lg fa-tasks fa-fw"></i> Jobs + </a></li> + <li><a href="/pipeline_instances"> + <i class="fa fa-lg fa-tasks fa-fw"></i> Pipeline instances + </a></li> + <li><a href="/pipeline_templates"> + <i class="fa fa-lg fa-gears fa-fw"></i> Pipeline templates + </a></li> + <li> </li> + <li><a href="/repositories"> + <i class="fa fa-lg fa-code-fork fa-fw"></i> Repositories + </a></li> + <li><a href="/virtual_machines"> + <i class="fa fa-lg fa-terminal fa-fw"></i> Virtual machines + </a></li> + <li><a href="/humans"> + <i class="fa fa-lg fa-male fa-fw"></i> Humans + </a></li> + <li><a href="/specimens"> + <i class="fa fa-lg fa-flask fa-fw"></i> Specimens + </a></li> + <li><a href="/traits"> + <i class="fa fa-lg fa-clipboard fa-fw"></i> Traits + </a></li> + <li><a href="/links"> + <i class="fa fa-lg fa-arrows-h fa-fw"></i> Links + </a></li> + <% if current_user.andand.is_admin %> + <li><a href="/users"> + <i class="fa fa-lg fa-user fa-fw"></i> Users + </a></li> <% end %> - </ul> - <% end %> - <ul class="nav pull-right"> - <% if current_user -%> - <li><span class="badge badge-info" style="margin: 10px auto 10px; padding-top: 4px; padding-bottom: 4px"><%= current_user.email %></span></li> - <li><a href="<%= logout_path %>">Log out</a></li> - <% else -%> - <li><a href="<%= root_path %>">Log in</a></li> - <% end -%> + <li><a href="/groups"> + <i class="fa fa-lg fa-users fa-fw"></i> Groups + </a></li> + <li><a href="/nodes"> + <i class="fa fa-lg fa-cloud fa-fw"></i> Compute nodes + </a></li> + <li><a href="/keep_services"> + <i class="fa fa-lg fa-exchange fa-fw"></i> Keep services + </a></li> + <li><a href="/keep_disks"> + <i class="fa fa-lg fa-hdd-o fa-fw"></i> Keep disks + </a></li> </ul> - </div><!--/.nav-collapse --> - </div> + <% end %> + + <ul class="nav navbar-nav navbar-left breadcrumbs"> + <% if current_user %> + <% if content_for?(:breadcrumbs) %> + <%= yield(:breadcrumbs) %> + <% else %> + <li class="nav-separator"><span class="glyphicon glyphicon-arrow-right"></span></li> + <li> + <%= link_to( + controller.controller_name.humanize.downcase, + url_for({controller: params[:controller]})) %> + </li> + <% if params[:action] != 'index' %> + <li class="nav-separator"> + <span class="glyphicon glyphicon-arrow-right"></span> + </li> + <li> + <%= link_to_if_arvados_object @object, {friendly_name: true}, {data: {object_uuid: @object.andand.uuid, name: 'name'}} %> + </li> + <li style="padding: 14px 0 14px"> + <%= form_tag do |f| %> + <%= render :partial => "selection_checkbox", :locals => {:object => @object} %> + <% end %> + </li> + <% end %> + <% end %> + <% end %> + </ul> + + <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="collections-menu"> + <span class="glyphicon glyphicon-paperclip"></span> + <span class="badge" id="persistent-selection-count"></span> + <span class="caret"></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 notification-menu"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="notifications-menu"> + <span class="glyphicon glyphicon-envelope"></span> + <span class="badge badge-alert notification-count"><%= @notification_count %></span> + <span class="caret"></span> + </a> + <ul class="dropdown-menu" role="menu"> + <% if (@notifications || []).length > 0 %> + <% @notifications.each_with_index do |n, i| %> + <% if i > 0 %><li class="divider"></li><% end %> + <li class="notification"><%= n.call(self) %></li> + <% end %> + <% else %> + <li class="notification empty">No notifications.</li> + <% end %> + </ul> + </li> + <% end %> + + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="user-menu"> + <span class="glyphicon glyphicon-user"></span><span class="caret"></span> + </a> + <ul class="dropdown-menu" role="menu"> + <li role="presentation" class="dropdown-header"><%= current_user.email %></li> + <% if current_user.is_active %> + <li role="presentation" class="divider"></li> + <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> + </ul> + </li> + <% else %> + <li><a href="<%= arvados_api_client.arvados_login_url(return_to: root_url) %>">Log in</a></li> + <% end %> + </ul> + </div><!-- /.navbar-collapse --> + </nav> + + <div id="page-wrapper"> + <%= yield %> </div> </div> - <div class="container"> - - <%= yield %> +</div> - </div> <!-- /container --> + <%= yield :footer_html %> + <%= piwik_tracking_tag %> + <%= javascript_tag do %> + <%= yield :footer_js %> + <% end %> </body> </html>