Skip to content

Commit

Permalink
Fix for #380 from Tim Schaub, with test. Don't overwrite already-exis…
Browse files Browse the repository at this point in the history
…ting 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
  • Loading branch information
crschmidt committed Nov 18, 2006
1 parent fb7b5ff commit 7685037
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
10 changes: 9 additions & 1 deletion lib/OpenLayers/Layer/HTTPRequest.js
Expand Up @@ -121,7 +121,15 @@ OpenLayers.Layer.HTTPRequest.prototype =
// create a new params hashtable with all the layer params and the
// new params together. then convert to string
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);
if (paramsString != "") {
var lastServerChar = url.charAt(url.length - 1);
Expand Down
10 changes: 9 additions & 1 deletion tests/test_Layer_HTTPRequest.html
Expand Up @@ -89,7 +89,7 @@
tParams = { layers: 'basic',
format: 'image/png'};

t.plan( 8 );
t.plan( 9 );

// without ?
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
Expand All @@ -109,13 +109,21 @@
layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
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");

// 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&
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&";
layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
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&");



// passing in new params
layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
Expand Down

0 comments on commit 7685037

Please sign in to comment.