]> dev.renevier.net Git - syj.git/blob - public/js/list.js
redirection after path creation is decided by server (php), not guessed by client...
[syj.git] / public / js / list.js
1 var WGS84 = new OpenLayers.Projection("EPSG:4326");
2 var Mercator = new OpenLayers.Projection("EPSG:900913");
3
4
5 document.observe("dom:loaded", function() {
6     $("message").hide();
7     $$(".map").each(function(elt) {
8         var geom = elt.getAttribute('data-geom'),
9             baseLayer = new OpenLayers.Layer.OSM("OSM"),
10             map = new OpenLayers.Map(elt, { controls: [], theme: null}),
11             layerOptions = {format:     OpenLayers.Format.WKT,
12                             projection: WGS84,
13                             styleMap:   new OpenLayers.StyleMap({
14                                             "default": new OpenLayers.Style({
15                                                 strokeColor: "blue",
16                                                 strokeWidth: 5,
17                                                 strokeOpacity: 0.7
18                                             })
19                                          })},
20             wkt = new OpenLayers.Format.WKT({ internalProjection: Mercator, externalProjection: WGS84 }),
21             viewLayer = new OpenLayers.Layer.Vector("View Layer", layerOptions),
22             extent;
23
24         map.addLayers([baseLayer, viewLayer]);
25         viewLayer.addFeatures([wkt.read(geom)]);
26         map.zoomToExtent(viewLayer.getDataExtent());
27     });
28
29     $$(".item").each(function(elt) {
30         new item(elt);
31     });
32 });
33
34 function item(elt) {
35     this.deleteHandler = elt.on('click', '.delete-link', this.remove.bindAsEventListener(this));
36     this.elt = elt;
37 }
38 item.prototype = {
39     deleteSuccess: function() {
40         this.deactivate();
41         $("message").setMessage(SyjStrings.deleteSuccess, "success");
42     },
43
44     deactivate: function() {
45         this.elt.down('.title').update();
46         this.elt.down('.geom').update().setStyle({backgroundColor: 'gray'});
47         this.deleteHandler.stop();
48         this.elt.on('click', 'a', function(evt) { evt.stop(); });
49         this.elt.select('a').invoke('setStyle', {textDecoration: 'line-through'});
50     },
51
52     deleteFailure: function(transport) {
53         var httpCode = 0, message = "";
54         if (transport) {
55             httpCode = transport.getStatus();
56         }
57         switch (httpCode) {
58             case 0:
59                 message = SyjStrings.notReachedError;
60             break;
61             case 400:
62             case 403:
63                 location = loginlink();
64                 return;
65             break;
66             case 404:
67                  message = SyjStrings.requestError;
68             break;
69             case 410:
70                 this.deactivate();
71                 message = SyjStrings.gonePathError;
72             break;
73             case 500:
74                 message = SyjStrings.serverError;
75             break;
76             default:
77                 message = SyjStrings.unknownError;
78             break;
79         }
80         $("message").setMessage(message, "error");
81     },
82
83     remove: function(evt) {
84         evt.stop();
85         if (!confirm(SyjStrings.confirmDelete)) {
86             return;
87         }
88         var id = this.elt.getAttribute('data-id');
89
90         $("message").hide();
91         new Ajax.Request('path/' + id.toString() + '/delete', {
92             method: 'post',
93             onSuccess: this.deleteSuccess.bind(this),
94             onFailure: this.deleteFailure.bind(this)
95         });
96     }
97 };
98
99 function loginlink() {
100     var lang;
101     if (location.search && location.search.length && location.search[0] === '?') {
102         lang = location.search.slice(1).split('&').find(function(str) {
103             return str.startsWith('lang=');
104         });
105         if (lang) {
106             lang = lang.slice('lang='.length);
107         }
108     }
109     return 'login?redirect=' + encodeURIComponent(location.pathname + location.search) + ((lang) ? '&lang=' + lang: "");
110 }