X-Git-Url: https://dev.renevier.net/gitweb.cgi?a=blobdiff_plain;f=public%2Fjs%2Fsyj.js;h=190cc76ee4d7a192aa56cb298cad4289c7b99f96;hb=17ac0916d7f99be6c7568f0100e5bd628b52124d;hp=112c6f762530d03ba2c67a0144dc98ab075911e3;hpb=925b83c0d6703c33469ec668171ac11f36db7980;p=syj.git diff --git a/public/js/syj.js b/public/js/syj.js index 112c6f7..190cc76 100644 --- a/public/js/syj.js +++ b/public/js/syj.js @@ -243,32 +243,32 @@ var SYJView = { this.map.addLayers([baseLayer, this.viewLayer]); if ($("edit-btn")) { - $("edit-btn").observe('click', (function() { + $("edit-btn").observe('click', function() { $("geom_submit").value = SyjStrings.editAction; this.messenger.hide(); this.editMode(); this.mode = 'edit'; - }).bind(this)); + }.bind(this)); } if ($("create-btn")) { - $("create-btn").observe('click', (function() { + $("create-btn").observe('click', function() { $("geom_submit").value = SyjStrings.createAction; this.messenger.hide(); this.editMode(); this.mode = 'create'; - }).bind(this)); + }.bind(this)); } if ($("clone-btn")) { - $("clone-btn").observe('click', (function() { + $("clone-btn").observe('click', function() { $("geom_submit").value = SyjStrings.cloneAction; $("geom_title").value = ""; this.messenger.hide(); this.editMode(); this.mode = 'create'; SyjSaveUI.enableSubmit(); - }).bind(this)); + }.bind(this)); } $("geomform").ajaxize({ @@ -289,8 +289,8 @@ var SYJView = { this.messenger.hide(); } - if ($("geom_data").value) { - this.viewLayer.addFeatures([this.wkt.read($("geom_data").value)]); + if (typeof gInitialGeom !== "undefined" && typeof gInitialGeom.data !== "undefined") { + this.viewLayer.addFeatures([this.wkt.read(gInitialGeom.data)]); extent = this.viewLayer.getDataExtent(); // XXX: ie has not guessed height of map main div yet during map // initialisation. Now, it will read it correctly. @@ -397,6 +397,9 @@ var SYJView = { this.editControl = new OpenLayers.Control.DrawFeature(new OpenLayers.Layer.Vector(), OpenLayers.Handler.SyjModifiablePath, { callbacks: { modify: function(f, line) { + if (!SYJView.unsavedRoute) { + SYJView.unsavedRoute = {}; + } if (this.handler.realPoints.length < 2) { SyjSaveUI.show().disable(); } else { @@ -429,10 +432,10 @@ var SYJView = { SyjEditUI.show(); this.messenger.hide(); - if (typeof this.unsavedRoute.features !== "undefined") { + if (this.unsavedRoute && typeof this.unsavedRoute.features !== "undefined") { this.viewLayer.addFeatures(this.unsavedRoute.features); } - if (typeof this.unsavedRoute.title !== "undefined") { + if (this.unsavedRoute && typeof this.unsavedRoute.title !== "undefined") { $("geom_title").value = this.unsavedRoute.title; } else { $("geom_title").value = ""; @@ -443,6 +446,8 @@ var SYJView = { }, saveSuccess: function(transport) { + this.unsavedRoute = null; + if (transport.responseJSON && (typeof transport.responseJSON.redirect === "string")) { location = transport.responseJSON.redirect; return; @@ -451,7 +456,6 @@ var SYJView = { this.messenger.setMessage(SyjStrings.saveSuccess, "success"); SyjSaveUI.hide(); SyjEditUI.show(); - this.unsavedRoute = null; document.title = $('geom_title').value; }, @@ -975,3 +979,10 @@ document.observe("dom:loaded", function() { SYJNewpwd.init(); LoginMgr.updateUI(); }); +window.onbeforeunload = function() { + if (SYJView.unsavedRoute) { + return SyjStrings.unsavedConfirmExit; + } else { + return undefined; + } +};