4951: when a request for shell access is made, remember this in html5 localStorage...
authorRadhika Chippada <radhika@curoverse.com>
Thu, 5 Feb 2015 21:20:48 +0000 (16:20 -0500)
committerRadhika Chippada <radhika@curoverse.com>
Thu, 5 Feb 2015 21:20:48 +0000 (16:20 -0500)
apps/workbench/app/assets/javascripts/application.js
apps/workbench/app/assets/javascripts/request_shell_access.js
apps/workbench/app/controllers/users_controller.rb
apps/workbench/app/views/layouts/body.html.erb
apps/workbench/app/views/users/_manage_virtual_machines.html.erb
apps/workbench/config/routes.rb

index 63887b3ab970f3d75f4035169790e05752ea15a8..8d929676ad7ec2fb111eae4e81581b9bb88a3761 100644 (file)
@@ -238,3 +238,16 @@ function hideLoadingModal() {
 function hasHTML5History() {
     return !!(window.history && window.history.pushState);
 }
+
+function invokeUrlWithLocalStorageValue(url, alias, item) {
+    value = localStorage.getItem(item);
+    if (value) {
+      window.location = alias;
+    } else {
+      window.location = url;
+    }
+}
+
+function clearLocalStorageValue(item) {
+    localStorage.removeItem(item);
+}
index 57e302697df048ad30223c90777f74d77b3cfd85..c8cbe347fc257bd2b2b1e0e352131fd98b19e8af 100644 (file)
@@ -8,6 +8,7 @@ $(document).
       success(function(data, status, jqxhr) {
         $('div').remove('.no_shell_access_msg');
         $('.no_shell_access').append('<div class="alert alert-success"><p class="contain-align-left">Request sent for shell access.</p></div>');
+        localStorage.setItem("request_shell_access", "sent");
       }).
       fail(function(jqxhr, status, error) {
         var $sendButton = $('#request_shell_submit');
index 6d9d8cb7d193f80300601b1bb1e42d516041387a..dae9ae5eb205c6903daea731b2a4eab12725e548 100644 (file)
@@ -264,6 +264,9 @@ class UsersController < ApplicationController
     # current user's ssh keys
     @my_ssh_keys = AuthorizedKey.where(key_type: 'SSH', owner_uuid: current_user.uuid)
 
+    # when localStorage indicating previous shell access request, the url used is "manage_acct"
+    @local_storage_request_shell_access = true if request.url.include?('/manage_acct')
+
     respond_to do |f|
       f.html { render template: 'users/manage_account' }
     end
index fb28efe1d40cb8cdf14b48f926b318c7bc016674..8b1fd739ab377a51ca76283dd029a275ae563ecc 100644 (file)
@@ -46,7 +46,9 @@
               </a>
               <ul class="dropdown-menu" role="menu">
                 <% if current_user.is_active %>
-                <li role="menuitem"><a href="/manage_account" role="menuitem"><i class="fa fa-key fa-fw"></i> Manage account</a></li>
+                <li id='manage_account_link' role="menuitem"><a href="#"
+                    onClick="invokeUrlWithLocalStorageValue('/manage_account', '/manage_acct', 'request_shell_access');"
+                    role="menuitem"><i class="fa fa-key fa-fw"></i> Manage account</a></li>
                 <% if Rails.configuration.user_profile_form_fields %>
                   <li role="menuitem"><a href="/users/<%=current_user.uuid%>/profile" role="menuitem"><i class="fa fa-key fa-fw"></i> Manage profile</a></li>
                 <% end %>
index 897f1d8369064a60527420c0f6fb9f4be6217899..b324572f11cde7618c12bf5dbb12a363643ad86c 100644 (file)
@@ -6,17 +6,26 @@
   </p>
 
   <% if !@my_virtual_machines.any? %>
-    <div id='no_shell_access' class='no_shell_access'>
-      <div id='no_shell_access_msg' class='no_shell_access_msg'>
-        You do not have access to any virtual machines. Many of the Arvados features depend on having shell access to a hosted VM.
-        &nbsp;&nbsp;&nbsp;
-        <div style='display:inline-block'>
-          <%= button_to('Request shell access', request_shell_access_user_url(id: current_user.uuid),
-                         id: 'request_shell_submit', class: 'btn btn-xs btn-primary', remote: true) %>
+    <% if @local_storage_request_shell_access %>
+      <div id='shell_access_requested' class='shell_access_requested'>
+        <div class="alert alert-info">
+          <p class="contain-align-left">You do not have access to any virtual machines. A request was sent on your behalf.</p>
         </div>
       </div>
-    </div>
+    <% else %>
+      <div id='no_shell_access' class='no_shell_access'>
+        <div id='no_shell_access_msg' class='no_shell_access_msg'>
+          You do not have access to any virtual machines. Many of the Arvados features depend on having shell access to a hosted VM.
+          &nbsp;&nbsp;&nbsp;
+          <div style='display:inline-block'>
+            <%= button_to('Request shell access', request_shell_access_user_url(id: current_user.uuid),
+                           id: 'request_shell_submit', class: 'btn btn-xs btn-primary', remote: true) %>
+          </div>
+        </div>
+      </div>
+    <% end %>
   <% else %>
+    <script> clearLocalStorageValue('request_shell_access'); </script>
     <table class="table virtual-machines-table">
       <colgroup>
         <col style="width: 25%" />
index 7ed02e7dc9ba11aa8beb07cae5f9c934ce77fd9f..a077c2e7c1453d71dfa54374f965a1fe3f7d07a1 100644 (file)
@@ -42,6 +42,7 @@ ArvadosWorkbench::Application.routes.draw do
     post 'request_shell_access', :on => :member
   end
   get '/manage_account' => 'users#manage_account'
+  get '/manage_acct' => 'users#manage_account', :as => :manage_acct
   get "/add_ssh_key_popup" => 'users#add_ssh_key_popup', :as => :add_ssh_key_popup
   get "/add_ssh_key" => 'users#add_ssh_key', :as => :add_ssh_key
   resources :logs