(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:
@@ -35,9 +35,7 @@ OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
initialize: function(element, base) {
|
initialize: function(element, base) {
|
||||||
OpenLayers.Control.prototype.initialize.apply(this, arguments);
|
OpenLayers.Control.prototype.initialize.apply(this, arguments);
|
||||||
this.element = OpenLayers.Util.getElement(element);
|
this.element = OpenLayers.Util.getElement(element);
|
||||||
if (base) {
|
this.base = base || document.location.href;
|
||||||
this.base = base;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -116,8 +114,22 @@ OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
layers += (layer.getVisibility()) ? "T" : "F";
|
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;
|
this.element.href = href;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,32 @@
|
|||||||
map.addControl(control);
|
map.addControl(control);
|
||||||
t.eq(map.controls[3].div.firstChild.nodeName, "A", "Permalink control creates div with 'a' inside." );
|
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>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
Reference in New Issue
Block a user