]> dev.renevier.net Git - syj.git/blobdiff - public/js/syj.js
separate route to create a new path, and to update an existing one
[syj.git] / public / js / syj.js
index b5121d4752a5a56fda3605ae5f1fa26674cb374b..f2ae9e19125230221488fe2c8eb6654a50550533 100644 (file)
@@ -80,10 +80,6 @@ var SyjSaveUI = {
 };
 
 var SyjEditUI = {
-    init: function() {
-        return this;
-    },
-
     hide: function() {
         $("edit-btn").blur();
         $("edit-btn").hide();
@@ -229,9 +225,10 @@ var SYJView = {
     map: null,
     wkt: new OpenLayers.Format.WKT({ internalProjection: Mercator, externalProjection: WGS84 }),
     needsFormResubmit: false,
+    hasInitialGeom: false,
 
     init: function() {
-        var externalGraphic, baseURL, baseLayer, layerOptions, extent = null, hidemessenger;
+        var externalGraphic, baseURL, baseLayer, layerOptions, extent, hidemessenger;
 
         // is svg context, opera does not resolve links with base element is svg context
         externalGraphic = styleMap.edit.styles.select.defaultStyle.externalGraphic;
@@ -263,7 +260,6 @@ var SYJView = {
             this.messenger.hide();
             this.editMode();
         }).bind(this));
-        SyjEditUI.init().hide();
 
         $("geomform").ajaxize({
                 presubmit: this.prepareForm.bind(this),
@@ -283,18 +279,16 @@ var SYJView = {
             this.messenger.hide();
         }
 
-        extent = null;
         if ($("geom_data").value) {
             this.viewLayer.addFeatures([this.wkt.read($("geom_data").value)]);
             extent = this.viewLayer.getDataExtent();
             // XXX: ie has not guessed height of map main div yet during map
             // initialisation. Now, it will read it correctly.
             this.map.updateSize();
-            SyjEditUI.show();
+            this.hasInitialGeom = true;
         } else {
             extent = new OpenLayers.Bounds(gMaxExtent.minlon, gMaxExtent.minlat, gMaxExtent.maxlon, gMaxExtent.maxlat)
                                          .transform(WGS84, Mercator);
-            this.editMode();
         }
         this.map.zoomToExtent(extent);
         document.observe('simplebox:shown', this.observer.bindAsEventListener(this));
@@ -402,12 +396,12 @@ var SYJView = {
     },
 
     saveSuccess: function(transport) {
-      if (!$("geom_id").value) {
+      if (!this.hasInitialGeom) { // we have created a new path, change location
           location = "idx/" + transport.responseText;
           return;
       }
-      this.messenger.setMessage(SyjStrings.saveSuccess, "success");
 
+      this.messenger.setMessage(SyjStrings.saveSuccess, "success");
       SyjSaveUI.hide();
       SyjEditUI.show();
       document.title = $('geom_title').value;
@@ -419,20 +413,15 @@ var SYJView = {
         if (transport) {
             httpCode = transport.getStatus();
         }
-        message = "";
         switch (httpCode) {
             case 0:
                 message = SyjStrings.notReachedError;
             break;
             case 400:
             case 404:
-            case 410:
                 message = SyjStrings.requestError; // default message
                 if (transport.responseJSON) {
                     switch (transport.responseJSON.message) {
-                        case "unreferenced":
-                            message = SyjStrings.unreferencedError;
-                        break;
                         case "uniquepath":
                             message = SyjStrings.uniquePathError;
                         break;
@@ -441,6 +430,9 @@ var SYJView = {
                     }
                 }
             break;
+            case 410:
+                message = SyjStrings.gonePathError;
+            break;
             case 500:
                 message = SyjStrings.serverError;
                 this.needsFormResubmit = true;