Updated Branches:
  refs/heads/master dbfd31663 -> 918a7c748

CLOUDSTACK-1065: cloudstack UI - AWS Style Regions - implement region switching 
action triggered by region dropdown on top menu.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/918a7c74
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/918a7c74
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/918a7c74

Branch: refs/heads/master
Commit: 918a7c7481454e78a648389ed3173c0037fc715b
Parents: dbfd316
Author: Jessica Wang <[email protected]>
Authored: Wed Mar 20 11:58:17 2013 -0700
Committer: Jessica Wang <[email protected]>
Committed: Wed Mar 20 11:58:57 2013 -0700

----------------------------------------------------------------------
 ui/scripts/cloud.core.callbacks.js |   25 +++++++++++++++++++------
 ui/scripts/cloudStack.js           |    9 +++++++--
 ui/scripts/sharedFunctions.js      |    1 +
 ui/scripts/ui-custom/regions.js    |    4 ++--
 4 files changed, 29 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/918a7c74/ui/scripts/cloud.core.callbacks.js
----------------------------------------------------------------------
diff --git a/ui/scripts/cloud.core.callbacks.js 
b/ui/scripts/cloud.core.callbacks.js
index 857c247..6384f9b 100644
--- a/ui/scripts/cloud.core.callbacks.js
+++ b/ui/scripts/cloud.core.callbacks.js
@@ -52,17 +52,29 @@ Below is a sample login attempt
 var clientApiUrl = "/client/api";
 var clientConsoleUrl   = "/client/console";
 
-$(document).ready(function() {
+$(document).ready(function() {         
+  /*
+       condition 1: If window.location.href contains parameter 'loginUrl', 
save the parameter's value to a cookie, then reload the page without any URL 
parameter.
+       (After the page is reloaded without any URL parameter, it will fall in 
condition 2.) 
+       */
+       if ($.urlParam('loginUrl') != 0) {       
+               $.cookie('loginUrl', $.urlParam('loginUrl'), { expires: 1});
+         document.location.href = '/client/';  
+       }
        
-       var url = $.urlParam("loginUrl");
-       if (url != undefined && url != null && url.length > 0) {
-               url = unescape(clientApiUrl+"?"+url);
+       /* 
+       condition 2: If window.location.href does not contain parameter 
'loginUrl' but cookie 'loginUrl' exists, 
+       save the cookie's value to g_regionUrlParam (a global variable for 
switching regions), 
+       then call login API to set g_loginResponse (a global variable for 
single-sign-on).
+       */
+       else if($.cookie('loginUrl') != null) {   
+         g_regionUrlParam = '?loginUrl=' + $.cookie('loginUrl');               
                $.ajax({
-                       url: url,
+                       url: unescape(clientApiUrl + "?" + 
$.cookie('loginUrl')),
                        dataType: "json",
                        async: false,
                        success: function(json) {
-                               g_loginResponse = json.loginresponse;
+                               g_loginResponse = json.loginresponse;           
                
                        },
                        error: function() {
                                onLogoutCallback();
@@ -73,6 +85,7 @@ $(document).ready(function() {
                        }
                });
        }
+       
 });
 
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/918a7c74/ui/scripts/cloudStack.js
----------------------------------------------------------------------
diff --git a/ui/scripts/cloudStack.js b/ui/scripts/cloudStack.js
index f9b5a58..00b06ab 100644
--- a/ui/scripts/cloudStack.js
+++ b/ui/scripts/cloudStack.js
@@ -251,6 +251,9 @@
           array1.push("&domain=" + encodeURIComponent("/"));
         }
 
+                               g_regionUrlParam = '?loginUrl=' + 
escape("command=login" + array1.join("") + "&response=json");
+                               $.cookie('loginUrl', escape("command=login" + 
array1.join("") + "&response=json"), { expires: 1});
+                               
         $.ajax({
           type: "POST",
           data: "command=login" + array1.join("") + "&response=json",          
                        
@@ -382,8 +385,9 @@
                                                g_domainid = null;      
                                                g_timezoneoffset = null;
                                                g_timezone = null;
-                                               g_supportELB = null;
-                                                               
+                                               g_supportELB = null;            
                                
+                                               g_regionUrlParam = null;
+                                               
                                                $.cookie('JSESSIONID', null);
                                                $.cookie('sessionKey', null);
                                                $.cookie('username', null);
@@ -394,6 +398,7 @@
                                                $.cookie('timezoneoffset', 
null);
                                                $.cookie('timezone', null);
                                                $.cookie('supportELB', null);
+                                               $.cookie('loginUrl', null);
                                                                                
                
                                                if(onLogoutCallback()) {        
 //onLogoutCallback() will set g_loginResponse(single-sign-on variable) to 
null, then bypassLoginCheck() will show login screen.
               document.location.reload(); //when onLogoutCallback() returns 
true, reload the current document.

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/918a7c74/ui/scripts/sharedFunctions.js
----------------------------------------------------------------------
diff --git a/ui/scripts/sharedFunctions.js b/ui/scripts/sharedFunctions.js
index 8bcdff9..dbcb781 100644
--- a/ui/scripts/sharedFunctions.js
+++ b/ui/scripts/sharedFunctions.js
@@ -20,6 +20,7 @@ var g_role = null; // roles - root, domain-admin, ro-admin, 
user
 var g_username = null;
 var g_account = null;
 var g_domainid = null;
+var g_regionUrlParam = null;
 var g_enableLogging = false;
 var g_timezoneoffset = null;
 var g_timezone = null;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/918a7c74/ui/scripts/ui-custom/regions.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui-custom/regions.js b/ui/scripts/ui-custom/regions.js
index ac52776..579cdce 100644
--- a/ui/scripts/ui-custom/regions.js
+++ b/ui/scripts/ui-custom/regions.js
@@ -81,8 +81,8 @@
       closeRegionSelector({
         complete: function() {
           $('#container').prepend($('<div>').addClass('loading-overlay'));
-
-          document.location.href = url;
+          
+          document.location.href = url + g_regionUrlParam;
         }
       });
     };

Reply via email to