Fix for #380 from Tim Schaub, with test. Don't overwrite already-existing parameters
in the URL. This makes the precedence of parameters: * params in URL * params in Layer * DEFAULT_PARAMS on the Layer. git-svn-id: http://svn.openlayers.org/trunk/openlayers@1907 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -121,7 +121,15 @@ OpenLayers.Layer.HTTPRequest.prototype =
|
|||||||
// create a new params hashtable with all the layer params and the
|
// create a new params hashtable with all the layer params and the
|
||||||
// new params together. then convert to string
|
// new params together. then convert to string
|
||||||
var allParams = OpenLayers.Util.extend(new Object(), this.params);
|
var allParams = OpenLayers.Util.extend(new Object(), this.params);
|
||||||
var allParams = OpenLayers.Util.extend(allParams, newParams);
|
allParams = OpenLayers.Util.extend(allParams, newParams);
|
||||||
|
// ignore parameters that are already in the url search string
|
||||||
|
var urlParams = OpenLayers.Util.upperCaseObject(
|
||||||
|
OpenLayers.Util.getArgs(url));
|
||||||
|
for(var key in allParams) {
|
||||||
|
if(key.toUpperCase() in urlParams) {
|
||||||
|
delete allParams[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
var paramsString = OpenLayers.Util.getParameterString(allParams);
|
var paramsString = OpenLayers.Util.getParameterString(allParams);
|
||||||
if (paramsString != "") {
|
if (paramsString != "") {
|
||||||
var lastServerChar = url.charAt(url.length - 1);
|
var lastServerChar = url.charAt(url.length - 1);
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
tParams = { layers: 'basic',
|
tParams = { layers: 'basic',
|
||||||
format: 'image/png'};
|
format: 'image/png'};
|
||||||
|
|
||||||
t.plan( 8 );
|
t.plan( 9 );
|
||||||
|
|
||||||
// without ?
|
// without ?
|
||||||
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
|
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
|
||||||
@@ -110,6 +110,12 @@
|
|||||||
str = layer.getFullRequestString();
|
str = layer.getFullRequestString();
|
||||||
t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&layers=basic&format=image/png", "getFullRequestString() works for url with ?param1=5");
|
t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&layers=basic&format=image/png", "getFullRequestString() works for url with ?param1=5");
|
||||||
|
|
||||||
|
// with ?param1=5&
|
||||||
|
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&format=image/jpeg";
|
||||||
|
layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
|
||||||
|
str = layer.getFullRequestString();
|
||||||
|
t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&format=image/jpeg&layers=basic", "getFullRequestString() doesn't override already-existing params in URL");
|
||||||
|
|
||||||
|
|
||||||
// with ?param1=5&
|
// with ?param1=5&
|
||||||
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&";
|
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&";
|
||||||
@@ -117,6 +123,8 @@
|
|||||||
str = layer.getFullRequestString();
|
str = layer.getFullRequestString();
|
||||||
t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&layers=basic&format=image/png", "getFullRequestString() works for url with ?param1=5&");
|
t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&layers=basic&format=image/png", "getFullRequestString() works for url with ?param1=5&");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// passing in new params
|
// passing in new params
|
||||||
layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
|
layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
|
||||||
str = layer.getFullRequestString( { chicken: 6,
|
str = layer.getFullRequestString( { chicken: 6,
|
||||||
|
|||||||
Reference in New Issue
Block a user