/* This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
and is published under the AGPL license. */
+"use strict";
+
// avoid openlayers alerts
OpenLayers.Console.userError = function(error) {
SYJView.messenger.setMessage(error, "error");
};
+OpenLayers.Layer.Vector.prototype.renderers = ["SVG2", "VML", "Canvas"];
+
var SyjSaveUI = {
status: "unknown",
if (!infotoggler) {
infotoggler = new Toggler('path-infos-content');
$("path-infos-toggler").insert({bottom: infotoggler.element});
- $("path-infos-anchor").observe('click', function(evt) {
+ var anchor = $("path-infos-anchor");
+ var parent = anchor.up('.menu-item');
+ if (parent) {
+ anchor = parent;
+ }
+ anchor.observe('click', function(evt) {
evt.stop();
infotoggler.toggle(evt);
});
theme: null
});
- baseLayer = new OpenLayers.Layer.OSM("OSM", null, { wrapDateLine: true , attribution: SyjStrings.osmAttribution });
+ baseLayer = new OpenLayers.Layer.OSM("OSM", [
+ 'http://a.tile.openstreetmap.org/${z}/${x}/${y}.png',
+ 'http://b.tile.openstreetmap.org/${z}/${x}/${y}.png',
+ 'http://c.tile.openstreetmap.org/${z}/${x}/${y}.png'],
+ { attribution: SyjStrings.osmAttribution });
layerOptions = {format: OpenLayers.Format.WKT,
projection: WGS84,
if ($("edit-btn")) {
$("edit-btn").observe('click', function() {
$("geom_submit").value = SyjStrings.editAction;
- this.messenger.hide();
+ this.messenger.clearMessages();
this.editMode();
this.mode = 'edit';
}.bind(this));
if ($("create-btn")) {
$("create-btn").observe('click', function() {
$("geom_submit").value = SyjStrings.createAction;
- this.messenger.hide();
+ this.messenger.clearMessages();
this.editMode();
this.mode = 'create';
}.bind(this));
$("clone-btn").observe('click', function() {
$("geom_submit").value = SyjStrings.cloneAction;
$("geom_title").value = "";
- this.messenger.hide();
+ this.messenger.clearMessages();
this.editMode();
this.mode = 'create';
}.bind(this));
this.messenger.setMessage(SyjStrings.uploadFileError, "warn");
}.bind(this);
reader.onload = function(evt) {
- var data = null, results = null, engine = null, vector = null, i = 0, formats = ['KML', 'GPX', 'GeoJSON'];
+ var data = null, results = null, engine = null, vector = null, i = 0, format = null, formats = ['KML', 'GPX', 'GeoJSON'];
$("geom_upload_container").removeClassName("disabled");
$("geom_upload").disabled = false;
data = evt.target.result;
for (i = 0; i < formats.length; i++) {
- engine = new OpenLayers.Format[formats[i]]({ internalProjection: Mercator, externalProjection: WGS84 });
+ format = formats[i];
+ engine = new OpenLayers.Format[format]({ internalProjection: Mercator, externalProjection: WGS84 });
try {
results = engine.read(data);
} catch(e) {
readerror();
return;
}
+ // merge linestrings for gpx containting multiple trkseg elements.
+ if (format === 'GPX') {
+ for (i = 1; i < results.length; i++) {
+ vector.geometry.addComponents(results[i].geometry.components);
+ }
+ }
this.viewLayer.addFeatures([vector]);
this.map.zoomToExtent(this.viewLayer.getDataExtent());
observer: function(evt) {
if (evt.eventName === "simplebox:shown" && evt.memo.element !== $("termsofusearea")) {
- this.messenger.hide();
+ this.messenger.clearMessages();
}
},
}
this.needsFormResubmit = false;
SyjSaveUI.disable.bind(SyjSaveUI).defer();
- this.messenger.hide();
+ this.messenger.clearMessages();
return true;
},
}
},
create: function(f, line) {
- this.messenger.hide();
+ this.messenger.clearMessages();
$("geom_upload_container").hide();
}.bind(this)
},
case 400:
case 404:
message = SyjStrings.requestError;
- if (transport.responseJSON) {
- switch (transport.responseJSON.message) {
- case "uniquepath":
- message = SyjStrings.uniquePathError;
- break;
- default:
- break;
- }
- }
break;
case 403:
message = "";
closeMethods: ["onescapekey", "onouterclick", "onbutton"]
});
- $(this.type + "_control_anchor").observe("click", function(evt) {
+ var anchor = $(this.type + '_control_anchor');
+ var parent = anchor.up('.menu-item');
+ if (parent) {
+ anchor = parent;
+ }
+ anchor.observe("click", function(evt) {
this.modalbox.show();
evt.stop();
}.bindAsEventListener(this));
},
reset: function() {
- this.messenger.hide();
+ this.messenger.clearMessages();
this.area.select('.message').invoke('setMessageStatus', null);
}
});
$super();
$("termsofusearea").hide();
- $$("#user_termsofuse_anchor, #geom_termsofuse_anchor").invoke('observe', "click", function(evt) {
+ var touevt = (function(evt) {
+ if (evt.type === "keyup" && evt.keyCode !== 32) { // 32 = space
+ // allow opening box by pressing space
+ return;
+ }
if (!this.toubox) {
this.toubox = new SimpleBox($("termsofusearea"), {
closeMethods: ["onescapekey", "onouterclick", "onbutton"]
$("termsofuseiframe").setAttribute("src", evt.target.href);
}
evt.stop();
- }.bindAsEventListener(this));
+ }).bindAsEventListener(this);
+
+ ["click", "keyup"].each(function (evtName) {
+ $$("#user_termsofuse_anchor, #geom_termsofuse_anchor").invoke('observe', evtName, touevt);
+ })
$$("#login_area_create > a").invoke('observe', 'click',
function(evt) {
},
presubmit: function() {
- this.messenger.hide();
+ this.messenger.clearMessages();
PseudoChecker.reset();
if (!(this.checkNotEmpty("user_pseudo", SyjStrings.userEmptyWarn))) {
return false;
},
presubmit: function() {
- this.messenger.hide();
+ this.messenger.clearMessages();
if (!(this.checkNotEmpty("login_user", SyjStrings.userEmptyWarn))) {
return false;
}