Made _getScriptLocation smarter, and added it to SingleFile.js also. This means that single file builds no longer need to contain OpenLayers.js. r=eleomine (closes #2873)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@10822 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
|
||||
[first]
|
||||
OpenLayers/SingleFile.js
|
||||
OpenLayers.js
|
||||
OpenLayers/BaseTypes.js
|
||||
OpenLayers/BaseTypes/Class.js
|
||||
OpenLayers/Util.js
|
||||
@@ -15,4 +14,5 @@ Rico/Corner.js
|
||||
|
||||
[exclude]
|
||||
Firebug
|
||||
OpenLayers.js
|
||||
OpenLayers/Lang
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
[first]
|
||||
OpenLayers/SingleFile.js
|
||||
OpenLayers.js
|
||||
OpenLayers/BaseTypes.js
|
||||
OpenLayers/BaseTypes/Class.js
|
||||
OpenLayers/Util.js
|
||||
@@ -16,6 +15,7 @@ Rico/Corner.js
|
||||
|
||||
[exclude]
|
||||
Firebug
|
||||
OpenLayers.js
|
||||
OpenLayers/Format/GeoRSS.js
|
||||
OpenLayers/Format/GML.js
|
||||
OpenLayers/Format/WKT.js
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
[first]
|
||||
OpenLayers/SingleFile.js
|
||||
OpenLayers.js
|
||||
OpenLayers/BaseTypes.js
|
||||
OpenLayers/BaseTypes/Class.js
|
||||
OpenLayers/Util.js
|
||||
|
||||
@@ -14,28 +14,21 @@
|
||||
* Before creating the OpenLayers namespace, check to see if
|
||||
* OpenLayers.singleFile is true. This occurs if the
|
||||
* OpenLayers/SingleFile.js script is included before this one - as is the
|
||||
* case with single file builds.
|
||||
* case with old single file build profiles that included both
|
||||
* OpenLayers.js and OpenLayers/SingleFile.js.
|
||||
*/
|
||||
var singleFile = (typeof OpenLayers == "object" && OpenLayers.singleFile);
|
||||
|
||||
/**
|
||||
* Cache for the script location returned from
|
||||
* OpenLayers._getScriptLocation
|
||||
* Relative path of this script.
|
||||
*/
|
||||
var scriptLocation;
|
||||
var scriptName = (!singleFile) ? "lib/OpenLayers.js" : "OpenLayers.js";
|
||||
|
||||
/**
|
||||
* Namespace: OpenLayers
|
||||
* The OpenLayers object provides a namespace for all things OpenLayers
|
||||
*/
|
||||
window.OpenLayers = {
|
||||
|
||||
/**
|
||||
* Property: _scriptName
|
||||
* {String} Relative path of this script.
|
||||
*/
|
||||
_scriptName: (!singleFile) ? "lib/OpenLayers.js" : "OpenLayers.js",
|
||||
|
||||
/**
|
||||
* Function: _getScriptLocation
|
||||
* Return the path to this script.
|
||||
@@ -43,26 +36,12 @@
|
||||
* Returns:
|
||||
* {String} Path to this script
|
||||
*/
|
||||
_getScriptLocation: function () {
|
||||
if (scriptLocation != undefined) {
|
||||
return scriptLocation;
|
||||
}
|
||||
scriptLocation = "";
|
||||
var isOL = new RegExp("(^|(.*?\\/))(" + OpenLayers._scriptName + ")(\\?|$)");
|
||||
|
||||
var scripts = document.getElementsByTagName('script');
|
||||
for (var i=0, len=scripts.length; i<len; i++) {
|
||||
var src = scripts[i].getAttribute('src');
|
||||
if (src) {
|
||||
var match = src.match(isOL);
|
||||
if(match) {
|
||||
scriptLocation = match[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return scriptLocation;
|
||||
}
|
||||
_getScriptLocation: (function() {
|
||||
var r = new RegExp("(^|(.*?\\/))(" + scriptName + ")(\\?|$)");
|
||||
var s = document.getElementsByTagName('script');
|
||||
var l = s[s.length-1].getAttribute("src").match(r)[1];
|
||||
return (function() { return l; });
|
||||
})()
|
||||
};
|
||||
/**
|
||||
* OpenLayers.singleFile is a flag indicating this file is being included
|
||||
|
||||
@@ -4,7 +4,12 @@
|
||||
* full text of the license. */
|
||||
|
||||
var OpenLayers = {
|
||||
singleFile: true
|
||||
singleFile: true,
|
||||
_getScriptLocation: (function() {
|
||||
var s = document.getElementsByTagName('script');
|
||||
var l = s[s.length-1].getAttribute("src").match(/(^|(.*?\/))(OpenLayers\.js)(\?|$)/)[1];
|
||||
return (function() { return l; });
|
||||
})()
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="bogus/1/OpenLayers.js-foo"></script>
|
||||
<script src="bogus/2/foo-OpenLayers.js"></script>
|
||||
<script id="script" src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
function test_OpenLayers(t) {
|
||||
t.plan(3);
|
||||
|
||||
var script = document.getElementById("script");
|
||||
|
||||
t.eq(OpenLayers._getScriptLocation(), "../", "Script location correctly detected.");
|
||||
|
||||
// create a clone of OpenLayers._getScriptLocation
|
||||
eval("var getScriptLocation = " + OpenLayers._getScriptLocation.toString());
|
||||
var scriptLocation;
|
||||
|
||||
script.setAttribute("src", "../lib/OpenLayers.js?foo");
|
||||
t.eq(getScriptLocation(), "../", "Script location with search string correctly detected.");
|
||||
scriptLocation = null;
|
||||
|
||||
// now pretend we're using a built script
|
||||
OpenLayers._scriptName = "OpenLayers.js";
|
||||
t.eq(getScriptLocation(), "../lib/", "not fooled by bogus paths");
|
||||
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
32
tests/OpenLayers1.html
Normal file
32
tests/OpenLayers1.html
Normal file
@@ -0,0 +1,32 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
function test_OpenLayers(t) {
|
||||
t.plan(1);
|
||||
|
||||
var script = document.getElementById("script");
|
||||
|
||||
t.eq(OpenLayers._getScriptLocation(), "../", "Script location correctly detected.");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
function test_OpenLayers(t) {
|
||||
t.plan(1);
|
||||
|
||||
var script = document.getElementById("script");
|
||||
|
||||
t.eq(OpenLayers._getScriptLocation(), "../", "Script location correctly detected.");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
38
tests/OpenLayers2.html
Normal file
38
tests/OpenLayers2.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="bogus/1/OpenLayers.js-foo"></script>
|
||||
<script src="bogus/2/foo-OpenLayers.js"></script>
|
||||
<script src="../lib/OpenLayers.js?foo"></script>
|
||||
<script src="bogus/3/after-OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
function test_OpenLayers(t) {
|
||||
t.plan(1);
|
||||
|
||||
var script = document.getElementById("script");
|
||||
|
||||
t.eq(OpenLayers._getScriptLocation(), "../", "Script location with search string correctly detected, and not fooled by other scripts.");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="bogus/1/OpenLayers.js-foo"></script>
|
||||
<script src="bogus/2/foo-OpenLayers.js"></script>
|
||||
<script src="../lib/OpenLayers.js?foo"></script>
|
||||
<script src="bogus/3/after-OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
function test_OpenLayers(t) {
|
||||
t.plan(1);
|
||||
|
||||
var script = document.getElementById("script");
|
||||
|
||||
t.eq(OpenLayers._getScriptLocation(), "../", "Script location with search string correctly detected, and not fooled by other scripts.");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
38
tests/OpenLayers3.html
Normal file
38
tests/OpenLayers3.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<html>
|
||||
<head>
|
||||
<script>
|
||||
var OpenLayers = {singleFile: true};
|
||||
</script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
function test_OpenLayers(t) {
|
||||
t.plan(1);
|
||||
|
||||
var script = document.getElementById("script");
|
||||
|
||||
t.eq(OpenLayers._getScriptLocation(), "../lib/", "Script location for single file build correctly detected.");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
<html>
|
||||
<head>
|
||||
<script>
|
||||
var OpenLayers = {singleFile: true};
|
||||
</script>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
function test_OpenLayers(t) {
|
||||
t.plan(1);
|
||||
|
||||
var script = document.getElementById("script");
|
||||
|
||||
t.eq(OpenLayers._getScriptLocation(), "../lib/", "Script location for single file build correctly detected.");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
@@ -156,7 +156,9 @@
|
||||
<li>Map.html</li>
|
||||
<li>Marker.html</li>
|
||||
<li>Marker/Box.html</li>
|
||||
<li>OpenLayers.html</li>
|
||||
<li>OpenLayers1.html</li>
|
||||
<li>OpenLayers2.html</li>
|
||||
<li>OpenLayers3.html</li>
|
||||
<li>Popup.html</li>
|
||||
<li>Popup/Anchored.html</li>
|
||||
<li>Popup/AnchoredBubble.html</li>
|
||||
|
||||
Reference in New Issue
Block a user