[OpenLayers-Trac] [OpenLayers] #3499: OpenLayers Custom Build _getScriptLocation not working properly

OpenLayers trac-20090302 at openlayers.org
Tue Sep 13 07:22:54 EDT 2011


#3499: OpenLayers Custom Build _getScriptLocation not working properly
----------------------------------------------------------------------+-----
 Reporter:  ckreuzbe                                                  |       Owner:              
     Type:  bug                                                       |      Status:  new         
 Priority:  minor                                                     |   Milestone:  2.12 Release
Component:  general                                                   |     Version:  2.10        
 Keywords:  images getScriptLocation custom build filename different  |       State:              
----------------------------------------------------------------------+-----
 OpenLayers/SingleFile.js, Line 27:


 {{{
     _getScriptLocation: (function() {
         var r = new RegExp("(^|(.*?\\/))(OpenLayers\.js)(\\?|$)"),
 }}}

 This function tries to find the OpenLayers.js file in the html elements
 that are including javascript resources.
 However, when trying to do a custom build like this:

 {{{
 python build.py -c closure mainMap ../OpenLayers-mainMap.js
 }}}
 (yes the closer compiler is installed properly)

 while mainMap.cfg looks like this:
 {{{

 [first]

 [last]

 [include]
 OpenLayers/SingleFile.js
 OpenLayers/Control.js
 OpenLayers/Control/ZoomPanel.js
 OpenLayers/Control/MousePosition.js
 OpenLayers/Control/Navigation.js
 OpenLayers/Control/Permalink.js
 OpenLayers/Control/Attribution.js
 OpenLayers/Control/PanZoomBar.js
 OpenLayers/Control/SelectFeature.js
 OpenLayers/Control/NavigationHistory.js
 OpenLayers/Rule.js
 OpenLayers/Icon.js
 OpenLayers/Marker.js
 OpenLayers/Projection.js
 OpenLayers/Feature/Vector.js
 OpenLayers/Feature/WFS.js
 OpenLayers/Format/JSON.js
 OpenLayers/Format/GeoJSON.js
 OpenLayers/Filter.js
 OpenLayers/Filter/FeatureId.js
 OpenLayers/Filter/Function.js
 OpenLayers/Filter/Spatial.js
 OpenLayers/Protocol/HTTP.js
 OpenLayers/Protocol/WFS.js
 OpenLayers/Protocol/WFS/v1_0_0.js
 OpenLayers/Strategy/Fixed.js
 OpenLayers/Map.js
 OpenLayers/Renderer/SVG.js
 OpenLayers/Renderer/VML.js
 OpenLayers/Renderer/Canvas.js
 OpenLayers/Layer.js
 OpenLayers/Layer/SphericalMercator.js
 OpenLayers/Layer/XYZ.js
 OpenLayers/Layer/WMS.js
 OpenLayers/Layer/Vector.js
 OpenLayers/Layer/Markers.js
 OpenLayers/Layer/TMS.js
 OpenLayers/Layer/Google/v3.js



 [exclude]

 }}}

 you will not see any control images on your website, because
 getScriptLocation will NOT find OpenLayers.js at all (because the file is
 called OpenLayers-mainMap.js).


 One might ask: Why do you not just rename OpenLayers-mainMap.js to
 OpenLayers.js?
 Because I want to have a few different custom build profiles.
 so yeah, I could start playing around with symbolic links and other hacks,
 but that's not the point.
 The library should be able to find itself easily. I do understand that it
 is not possible to support every possible filename, however it is possible
 to come up with a clever way of how to do this.

 a) look for OpenLayers*.js


 b) look for OpenLayers.js first, if you can't find it, look for
 OpenLayers*.js (so you will not break compatibility)


 c) give the user a way to specify the actual javascript filename in the
 source code (e.g. OpenLayers.ScriptFileName='OpenLayers-mainMap.js'; ),
 and, if possible, include this in the python build script so it sets the
 default value according to the output-file-name option of build.py.


 While option a (and maybe even b) might break compability with other
 things that are out there, option c should not break anything, and
 therefor I highly recommend implementing option c).

 ideas, objections, other solutions that I have not mentioned?

-- 
Ticket URL: <http://trac.openlayers.org/ticket/3499>
OpenLayers <http://openlayers.org/>
A free AJAX map viewer


More information about the Trac mailing list