[Mapbender-commits] r7471 - in trunk/mapbender/http: javascripts php plugins

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed Jan 26 09:53:24 EST 2011


Author: armin11
Date: 2011-01-26 06:53:24 -0800 (Wed, 26 Jan 2011)
New Revision: 7471

Modified:
   trunk/mapbender/http/javascripts/mod_savewmc.js
   trunk/mapbender/http/php/mod_sessionWmc_server.php
   trunk/mapbender/http/plugins/mb_sessionWmc.js
Log:
bugfixing problems onunload

Modified: trunk/mapbender/http/javascripts/mod_savewmc.js
===================================================================
--- trunk/mapbender/http/javascripts/mod_savewmc.js	2011-01-25 14:21:17 UTC (rev 7470)
+++ trunk/mapbender/http/javascripts/mod_savewmc.js	2011-01-26 14:53:24 UTC (rev 7471)
@@ -57,6 +57,29 @@
 var overwrite = options.overwrite || false;
 var saveInSession = typeof options.saveInSession === "undefined" ?
 	0 : options.saveInSession;
+
+var browserCompatibilityMode = typeof options.browserCompatibilityMode === "undefined" ?
+	0 : options.browserCompatibilityMode;
+
+var userAgent = navigator.userAgent;
+
+var pattern1=/Chrome/gi;
+var pattern2=/Konqueror/gi;
+var pattern3=/Opera/gi;
+//alert(userAgent.match(pattern));
+if (userAgent.match(pattern1) || userAgent.match(pattern2) || userAgent.match(pattern3)) {
+	//alert("Identified Browser don't support beforeunload sufficiently - the application will be slower than normal!");
+	browserCompatibilityMode = 1;
+}
+
+function pausecomp(millis) { //http://www.sean.co.uk/a/webdesign/javascriptdelay.shtm
+	var date = new Date();
+	var curDate = null;
+	do { curDate = new Date(); }
+	while(curDate-date < millis);
+} 
+
+
 if (typeof originalI18nObj !== "object") {
 	var originalI18nObj = {};
 }
@@ -314,33 +337,62 @@
 
 	Mapbender.events.afterInit.register(function(){
 		if (saveInSession === 1) {
-			options.$target.each(function () {
-	//			$(this).mapbender().events.afterMapRequest.register(function () {
-				var supportsOnbeforeunload = false;
-				for (var prop in window) {
-    					if (prop === 'onbeforeunload') {
-    						supportsOnbeforeunload = true;
-    						break;
-    					}
-				}
-				//alert("Support of onBeforeUnload: "+supportsOnbeforeunload);
-				if (supportsOnbeforeunload) {
-					//$(window).unbind('unload');
-					$(window).bind('beforeunload', function(){ 
-						//alert("Write WMC to session - onBeforeUnload!");
-						that.save({
-							session : true
-						});
-					}); 
-				} else {
-					$(window).bind('unload', function(){ 
-						//alert("Write WMC to session - onUnload!");
-						that.save({
-							session : true
-						});
-					}); 
-				}
-			});
+			if (browserCompatibilityMode === 0) {
+				options.$target.each(function () {
+					var supportsOnbeforeunload = true; //TODO: The problem is the time for a job on onunload - there is not much. Therefor only simple things work - not saving a huge amount of data thru ajax
+					/*for (var prop in window) {
+    						if (prop === 'onbeforeunload') {
+    							supportsOnbeforeunload = true;
+						
+    							break;
+    						}
+					}*/
+					//alert("Support of onBeforeUnload: "+supportsOnbeforeunload+" Browser:"+navigator.userAgent);
+					if (supportsOnbeforeunload) { 
+						//$(window).bind('beforeunload', function(){//after hint in web http://stackoverflow.com/questions/4376596/jquery-unload-or-beforeunload
+						window.onbeforeunload = function(e){//after hint in web http://stackoverflow.com/questions/4376596/jquery-unload-or-beforeunload
+							var e = e || window.event;
+							//alert("Write WMC to session - onBeforeUnload!");
+							if (!window.resetSession) {
+								that.save({
+									session : true
+								});
+								//alert("Save Context!");
+							}
+							pausecomp(1000); //hope that fix the synro problem
+							/*// For IE and Firefox
+  							if (e) {
+    								e.returnValue = 'Any string';
+  							}
+  							// For Safari
+  							return 'Any string';*/
+						}; 
+					} else {
+						$(window).bind('unload', function(){ 
+							//alert("Write WMC to session - onUnload!");
+							if (!window.resetSession) {
+								that.save({
+									session : true
+								});
+								//alert("no reset of session stored wmc requested - wmc will be saved into session!");
+							}
+						}); 
+					}
+				});
+			} else {
+				//alert("Your are in a browser compatibility mode - this make the application slow!");
+				options.$target.each(function () {
+					$(this).mapbender().events.afterMapRequest.register(function () {
+						if (!window.resetSession) {
+							that.save({
+								session : true
+							});
+							//alert("no reset of session stored wmc requested - wmc will be saved into session!");
+						}
+					});
+				});
+			}
+			
 		}
 
 	});

Modified: trunk/mapbender/http/php/mod_sessionWmc_server.php
===================================================================
--- trunk/mapbender/http/php/mod_sessionWmc_server.php	2011-01-25 14:21:17 UTC (rev 7470)
+++ trunk/mapbender/http/php/mod_sessionWmc_server.php	2011-01-26 14:53:24 UTC (rev 7471)
@@ -21,6 +21,17 @@
 		$ajaxResponse->setResult($resultObj);
 		$ajaxResponse->setSuccess(true);
 		break;
+	case 'deleteWmc':
+		if (Mapbender::session()->exists("mb_wmc")) {
+			Mapbender::session()->delete("mb_wmc");
+			$ajaxResponse->setMessage(_mb("WMC in session reset."));
+			$ajaxResponse->setSuccess(true);
+		} else {
+			$ajaxResponse->setMessage(_mb("No WMC in session found."));
+			$ajaxResponse->setResult($resultObj);
+			$ajaxResponse->setSuccess(false);
+		}
+		break;
 	case 'updateWmc':
 		if (
 			!Mapbender::session()->exists("wmcGetApi") ||

Modified: trunk/mapbender/http/plugins/mb_sessionWmc.js
===================================================================
--- trunk/mapbender/http/plugins/mb_sessionWmc.js	2011-01-25 14:21:17 UTC (rev 7470)
+++ trunk/mapbender/http/plugins/mb_sessionWmc.js	2011-01-26 14:53:24 UTC (rev 7471)
@@ -82,6 +82,22 @@
 		req.send();
 	};
 
+	this.deleteWmc = function () {
+		var req = new Mapbender.Ajax.Request({
+			url: "../php/mod_sessionWmc_server.php",
+			method: "deleteWmc",
+			parameters: {
+			},
+			callback: function (obj, result, message) {
+				window.resetSession = true;
+				//alert(message);
+				location.reload();
+				//mapbender reload!
+			}
+		});
+		req.send();
+	};
+
 	var displayConstraints = function (obj) {
 		var html = "";
 		var constraintTypeArray = [];
@@ -124,7 +140,7 @@
 			return;
 		}
 
-		$dialog = $("<div id='" + o.id + "_constraint_form' title='Warning'>" +
+		$dialog = $("<div id='" + o.id + "_constraint_form' title='Hinweis'>" +
 			"<style> fieldset label { display: block; }</style>" +
 			"<form>" + html + "</form></div>").dialog({
 				bgiframe: true,



More information about the Mapbender_commits mailing list