OpenLayers OpenLayers

Changeset 1907

Show
Ignore:
Timestamp:
11/18/06 10:19:42 (2 years ago)
Author:
crschmidt
Message:

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.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Layer/HTTPRequest.js

    r1872 r1907  
    122122        // new params together. then convert to string 
    123123        var allParams = OpenLayers.Util.extend(new Object(), this.params); 
    124         var allParams = OpenLayers.Util.extend(allParams, newParams); 
     124        allParams = OpenLayers.Util.extend(allParams, newParams); 
     125        // ignore parameters that are already in the url search string 
     126        var urlParams = OpenLayers.Util.upperCaseObject( 
     127                            OpenLayers.Util.getArgs(url)); 
     128        for(var key in allParams) { 
     129            if(key.toUpperCase() in urlParams) { 
     130                delete allParams[key]; 
     131            } 
     132        } 
    125133        var paramsString = OpenLayers.Util.getParameterString(allParams); 
    126134        if (paramsString != "") { 
  • trunk/openlayers/tests/test_Layer_HTTPRequest.html

    r1424 r1907  
    9090                   format: 'image/png'}; 
    9191         
    92         t.plan( 8 ); 
     92        t.plan( 9 ); 
    9393 
    9494  // without ?         
     
    110110        str = layer.getFullRequestString(); 
    111111        t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&layers=basic&format=image/png", "getFullRequestString() works for url with ?param1=5"); 
     112   
     113  // with ?param1=5& 
     114        tUrl = "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&format=image/jpeg"; 
     115        layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null); 
     116        str = layer.getFullRequestString(); 
     117        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"); 
    112118 
    113119  
     
    117123        str = layer.getFullRequestString(); 
    118124        t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&layers=basic&format=image/png", "getFullRequestString() works for url with ?param1=5&"); 
     125   
     126 
    119127 
    120128  // passing in new params