[pve-devel] r5802 - pve-manager/pve2/www/new

svn-commits at proxmox.com svn-commits at proxmox.com
Fri Apr 8 07:25:09 CEST 2011


Author: dietmar
Date: 2011-04-08 07:25:09 +0200 (Fri, 08 Apr 2011)
New Revision: 5802

Modified:
   pve-manager/pve2/www/new/StateProvider.js
   pve-manager/pve2/www/new/index.pl
Log:
bug fixes


Modified: pve-manager/pve2/www/new/StateProvider.js
===================================================================
--- pve-manager/pve2/www/new/StateProvider.js	2011-04-07 13:49:26 UTC (rev 5801)
+++ pve-manager/pve2/www/new/StateProvider.js	2011-04-08 05:25:09 UTC (rev 5802)
@@ -2,10 +2,16 @@
 PVE.StopPageUnload = false;
 PVE.PageUnloadMessFn = function (){
     var mess = "Are you sure you want to navigate away from this page?";
-    return PVE.StopPageUnload ? mess : undefined;
+    if (PVE.StopPageUnload)
+	return mess;
 }
 window.onbeforeunload = PVE.PageUnloadMessFn;
 
+/* This state provider keeps part of the state inside
+ * the browser history, the rest is stored using HTML5
+ * localStorage Feature
+*/
+
 Ext.define('PVE.StateProvider', {
     extend: 'Ext.state.Provider',
 
@@ -23,19 +29,11 @@
 	    'ltab'
 	];
 
-	var urlstate = Ext.urlDecode(Ext.History.getToken());
-
 	Ext.Array.each(list, function(name) {
-	    if (typeof urlstate[name] != "undefined") {
-		var value = { value: urlstate[name] };
-  		window.localStorage.setItem(name, Ext.encode(value));
-	    }
-	    var text = window.localStorage.getItem(name);
-	    var value = Ext.decode(text);
-	    self.UIState[name] = value ? value.value : null;
+	    self.UIState[name] = null;
 	});
 
-	Ext.History.on('change', function(token) {
+	var history_change_cb = function(token) {
 	    //console.log("HC " + token);
 	    if (!token) {
 		PVE.StopPageUnload = true;
@@ -48,35 +46,54 @@
 		if (typeof newstate[name] == "undefined")
 		    return;
 
-		var newvalue = { value: newstate[name] };
+		var oldvalue = { value: self.UIState[name] };
+ 		var newvalue = { value: newstate[name] };
  		var newtext = Ext.encode(newvalue);
-		var oldtext = window.localStorage.getItem(name);
+		var oldtext = Ext.encode(oldvalue);
 		if (newtext != oldtext) {
- 		    window.localStorage.setItem(name, newtext);
-		    self.UIState[name] = newstate[name];
+ 		    self.UIState[name] = newstate[name];
 		    //console.log("changed " + name + " " + newtext);
 		    self.fireEvent("statechange", self, name, newvalue);
 		}
 	    });
-	});
+	};
+
+	var start_token = Ext.History.getToken();
+	if (start_token)
+	    history_change_cb(start_token);
+
+	Ext.History.on('change', history_change_cb);
     },
 
     get: function(name, defaultValue){
 	var self = this;
-	var text = window.localStorage.getItem(name);
-	//console.log("GET " + name + " " + text +  " " + Ext.decode(text));
-        if (typeof text == "undefined")
-	    return defaultValue;
+	var data;
 
-	var value = Ext.decode(text);
+	if (typeof self.UIState[name] != "undefined") {
+	    data = { value: self.UIState[name] };
+	} else {
+	    var text = window.localStorage.getItem(name);
+            if (typeof text == "undefined") {
+		data = defaultValue;
+	    } else {
+		data = Ext.decode(text);
+	    }
+	}
 
-	return value;
+	//console.log("GET " + name + " " + text +  " " + data);
+
+	return data;
     },
 
     clear: function(name){
 	var self = this;
 
-	window.localStorage.removeItem(name); 
+	if (typeof self.UIState[name] != "undefined") {
+	    self.UIState[name] = null;
+	} else {
+	    window.localStorage.removeItem(name); 
+	}
+
         self.fireEvent("statechange", self, name, null);
     },
 

Modified: pve-manager/pve2/www/new/index.pl
===================================================================
--- pve-manager/pve2/www/new/index.pl	2011-04-07 13:49:26 UTC (rev 5801)
+++ pve-manager/pve2/www/new/index.pl	2011-04-08 05:25:09 UTC (rev 5802)
@@ -64,7 +64,6 @@
     'PVE.Workspace']);
 
 Ext.History.fieldid = 'x-history-field';
-Ext.History.iframeId = 'x-history-frame';
 
 Ext.onReady(function() {
     Ext.History.init();
@@ -95,7 +94,6 @@
     <!-- Fields required for history management -->
     <form id="history-form" class="x-hidden">
     <input type="hidden" id="x-history-field"/>
-    <iframe id="x-history-frame"></iframe>
     </form>
   </body>
 </html>



More information about the pve-devel mailing list