[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