X-Git-Url: https://dev.renevier.net/?p=syj.git;a=blobdiff_plain;f=public%2Fjs%2Fsyj.js;h=7864fe9309575aa371e0109b49bc78816c6a82de;hp=ed68bcf7a43b383751b66bfee28fee785079075f;hb=ff69f7714757b203baa031cf3c86a7f4256b11e2;hpb=a73fb9125bf059e16ae583f82d67bcc59efb69b4 diff --git a/public/js/syj.js b/public/js/syj.js index ed68bcf..7864fe9 100644 --- a/public/js/syj.js +++ b/public/js/syj.js @@ -1,11 +1,15 @@ /* 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", @@ -272,7 +276,7 @@ var SYJView = { mode: 'view', init: function() { - var externalGraphic, baseURL, osmLayer, layerOptions, hidemessenger, layerCode, parameters; + var externalGraphic, baseURL, baseLayer, layerOptions, hidemessenger; // is svg context, opera does not resolve links with base element is svg context externalGraphic = styleMap.edit.styles.select.defaultStyle.externalGraphic; @@ -283,24 +287,16 @@ var SYJView = { controls: [ new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoom(), - this.createLayerSwitcher(), new OpenLayers.Control.Attribution() ], theme: null }); - osmLayer = new OpenLayers.Layer.OSM("OSM", [ + 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'], - { wrapDateLine: true , attribution: SyjStrings.osmAttribution, layerCode: 'O'}); - - mapquestLayer = new OpenLayers.Layer.OSM("Mapquest", [ - 'http://otile1.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png', - 'http://otile2.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png', - 'http://otile3.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png', - 'http://otile4.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png'], - { wrapDateLine: true , attribution: SyjStrings.mapquestAttribution, layerCode: 'M'}); + { attribution: SyjStrings.osmAttribution }); layerOptions = {format: OpenLayers.Format.WKT, projection: WGS84, @@ -308,39 +304,12 @@ var SYJView = { attribution: SyjStrings.geomAttribution }; this.viewLayer = new OpenLayers.Layer.Vector("View Layer", layerOptions); - this.map.addLayers([osmLayer, mapquestLayer, this.viewLayer]); - - this.map.setBaseLayer(mapquestLayer); - layerCode = null; - parameters = OpenLayers.Util.getParameters(window.location.href); - if (parameters.layer) { - layerCode = parameters.layer; - try { - store.remove('baselayer'); - } catch(e) {} - } else { - try { - layerCode = store.get('baselayer'); - } catch(e) {} - } - - if (layerCode) { - layerCode = layerCode.toUpperCase(); - var self = this; - $([osmLayer, mapquestLayer]).each(function(layer) { - if (layer.layerCode === layerCode) { - self.map.setBaseLayer(layer); - } - }); - } - - - this.map.events.register("changebaselayer", this, this.saveBaseLayer); + this.map.addLayers([baseLayer, this.viewLayer]); 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)); @@ -349,7 +318,7 @@ var SYJView = { 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)); @@ -359,7 +328,7 @@ var SYJView = { $("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)); @@ -466,33 +435,6 @@ var SYJView = { SYJPathLength.update(); }, - saveBaseLayer: function(data) { - try { - store.set('baselayer', data.layer.layerCode); - } catch(e) {} - }, - - createLayerSwitcher: function() { - var control = new OpenLayers.Control.LayerSwitcher({roundedCorner: false}); - // XXX: we need to "live-patch" LayerSwitcher to use our icons. We use - // a regexp instead of a string in case OpenLayers is modified and in - // case browsers modify the function representation - control.loadContents = eval('(function() { return (' + control.loadContents.toString().replace( - /\s*=\s*imgLocation\s*\+\s*['"]layer-switcher-maximize\.png['"]\s*;/, - " = 'icons/layer-switcher-maximize-flipped.png';" - ) + ')}())'); - var oldMaximizeControl = control.maximizeControl; - var self = this; - control.maximizeControl = (function(oldfunc) { - return function() { - oldfunc.apply(control, arguments); - self.messenger.hide(); - }; - }(control.maximizeControl)); - - return control; - }, - initMaPos: function (aPos) { var extent = null, center = null, zoom = 0; @@ -516,7 +458,7 @@ var SYJView = { observer: function(evt) { if (evt.eventName === "simplebox:shown" && evt.memo.element !== $("termsofusearea")) { - this.messenger.hide(); + this.messenger.clearMessages(); } }, @@ -552,7 +494,7 @@ var SYJView = { } this.needsFormResubmit = false; SyjSaveUI.disable.bind(SyjSaveUI).defer(); - this.messenger.hide(); + this.messenger.clearMessages(); return true; }, @@ -631,7 +573,7 @@ var SYJView = { } }, create: function(f, line) { - this.messenger.hide(); + this.messenger.clearMessages(); $("geom_upload_container").hide(); }.bind(this) }, @@ -800,7 +742,7 @@ var SYJModalClass = Class.create({ }, reset: function() { - this.messenger.hide(); + this.messenger.clearMessages(); this.area.select('.message').invoke('setMessageStatus', null); } }); @@ -813,7 +755,11 @@ var SYJUserClass = Class.create(SYJModalClass, { $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"] @@ -825,7 +771,11 @@ var SYJUserClass = Class.create(SYJModalClass, { $("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) { @@ -858,7 +808,7 @@ var SYJUserClass = Class.create(SYJModalClass, { }, presubmit: function() { - this.messenger.hide(); + this.messenger.clearMessages(); PseudoChecker.reset(); if (!(this.checkNotEmpty("user_pseudo", SyjStrings.userEmptyWarn))) { return false; @@ -976,7 +926,7 @@ var SYJLoginClass = Class.create(SYJModalClass, { }, presubmit: function() { - this.messenger.hide(); + this.messenger.clearMessages(); if (!(this.checkNotEmpty("login_user", SyjStrings.userEmptyWarn))) { return false; }