1 /* This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
2 and is published under the AGPL license. */
6 var WGS84 = new OpenLayers.Projection("EPSG:4326");
7 var Mercator = new OpenLayers.Projection("EPSG:900913");
10 document.observe("dom:loaded", function() {
13 $$(".item").each(function(elt) {
19 this.deleteHandler = elt.on('click', '.delete-link', this.remove.bindAsEventListener(this));
21 this.map = this.createmap(elt.down('.map'));
24 createmap: function(elt) {
25 var geom = elt.getAttribute('data-geom'),
26 baseLayer = new OpenLayers.Layer.OSM("OSM"),
27 map = new OpenLayers.Map(elt, { controls: [], theme: null}),
28 layerOptions = {format: OpenLayers.Format.WKT,
30 styleMap: new OpenLayers.StyleMap({
31 "default": new OpenLayers.Style({
37 wkt = new OpenLayers.Format.WKT({ internalProjection: Mercator, externalProjection: WGS84 }),
38 viewLayer = new OpenLayers.Layer.Vector("View Layer", layerOptions),
41 map.addLayers([baseLayer, viewLayer]);
42 viewLayer.addFeatures([wkt.read(geom)]);
43 map.zoomToExtent(viewLayer.getDataExtent());
47 deleteSuccess: function() {
49 $("message").setMessage(SyjStrings.deleteSuccess, "success");
52 deactivate: function() {
54 this.elt.down('.title').update();
55 this.elt.down('.geom').update().setStyle({backgroundColor: 'gray'});
56 this.deleteHandler.stop();
57 this.elt.on('click', 'a', function(evt) { evt.stop(); });
58 this.elt.select('a').invoke('setStyle', {textDecoration: 'line-through'});
61 deleteFailure: function(transport) {
62 var httpCode = 0, message = "";
64 httpCode = transport.getStatus();
68 message = SyjStrings.notReachedError;
72 location = loginlink();
76 message = SyjStrings.requestError;
80 message = SyjStrings.gonePathError;
83 message = SyjStrings.serverError;
86 message = SyjStrings.unknownError;
89 $("message").setMessage(message, "error");
92 remove: function(evt) {
94 if (!confirm(SyjStrings.confirmDelete)) {
97 var id = this.elt.getAttribute('data-id');
99 $("message").clearMessages();
100 new Ajax.Request('path/' + id.toString() + '/delete', {
102 onSuccess: this.deleteSuccess.bind(this),
103 onFailure: this.deleteFailure.bind(this)
108 function loginlink() {
110 if (location.search && location.search.length && location.search[0] === '?') {
111 lang = location.search.slice(1).split('&').find(function(str) {
112 return str.startsWith('lang=');
115 lang = lang.slice('lang='.length);
118 return 'login?redirect=' + encodeURIComponent(location.pathname + location.search) + ((lang) ? '&lang=' + lang: "");