(Closes #730) These changes make the permalink smarter in the case where we

already have some URL args in the URL. Thanks to penyaskito for the bug 
report.


git-svn-id: http://svn.openlayers.org/trunk/openlayers@4047 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2007-08-27 12:46:29 +00:00
parent 61a6171a63
commit c79f1a56c8
2 changed files with 43 additions and 5 deletions

View File

@@ -35,9 +35,7 @@ OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, {
initialize: function(element, base) {
OpenLayers.Control.prototype.initialize.apply(this, arguments);
this.element = OpenLayers.Util.getElement(element);
if (base) {
this.base = base;
}
this.base = base || document.location.href;
},
/**
@@ -116,8 +114,22 @@ OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, {
layers += (layer.getVisibility()) ? "T" : "F";
}
}
var href = this.base + "?" + lat + "&" + lon + "&" + zoom +
"&" + layers;
var href = this.base;
var paramsString = lat + "&" + lon + "&" + zoom + "&" + layers;
var lastServerChar = href.charAt(href.length - 1);
if ((lastServerChar == "&") || (lastServerChar == "?")) {
href += paramsString;
} else {
if (href.indexOf('?') == -1) {
//serverPath has no ? -- add one
href += '?' + paramsString;
} else {
//serverPath contains ?, so must already have paramsString at the end
href += '&' + paramsString;
}
}
this.element.href = href;
},

View File

@@ -49,6 +49,32 @@
map.addControl(control);
t.eq(map.controls[3].div.firstChild.nodeName, "A", "Permalink control creates div with 'a' inside." );
}
function test_05_Control_Permalink_base_with_query (t) {
t.plan( 3 );
control = new OpenLayers.Control.Permalink('permalink', "./edit.html?foo=bar" );
map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.WMS('Test Layer', "http://example.com" );
map.addLayer(layer);
if (!map.getCenter()) map.zoomToMaxExtent();
map.addControl(control);
map.pan(5, 0);
OpenLayers.Util.getElement('edit_permalink').href = './edit.html?foo=bar&lat=0&lon=1.75781&zoom=2&layers=B';
t.eq(OpenLayers.Util.getElement('permalink').href, OpenLayers.Util.getElement('edit_permalink').href, "Panning sets permalink with base and querystring");
control = new OpenLayers.Control.Permalink('permalink', "./edit.html?foo=bar&" );
map.addControl(control);
map.pan(0, 0);
t.eq(OpenLayers.Util.getElement('permalink').href, OpenLayers.Util.getElement('edit_permalink').href, "Panning sets permalink with base and querystring ending with '&'");
control = new OpenLayers.Control.Permalink('permalink', "./edit.html?" );
OpenLayers.Util.getElement('edit_permalink').href = './edit.html?lat=0&lon=1.75781&zoom=2&layers=B';
map.addControl(control);
map.pan(5, 0);
map.pan(-5, 0);
t.eq(OpenLayers.Util.getElement('permalink').href, OpenLayers.Util.getElement('edit_permalink').href, "Panning sets permalink with base and querystring ending with '?'");
}
// -->
</script>
</head>