Merge branch 'master' of https://github.com/openlayers/openlayers into no-$
This commit is contained in:
@@ -172,11 +172,18 @@ OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, {
|
||||
updateLink: function() {
|
||||
var separator = this.anchor ? '#' : '?';
|
||||
var href = this.base;
|
||||
var anchor = null;
|
||||
if (href.indexOf("#") != -1 && this.anchor == false) {
|
||||
anchor = href.substring( href.indexOf("#"), href.length);
|
||||
}
|
||||
if (href.indexOf(separator) != -1) {
|
||||
href = href.substring( 0, href.indexOf(separator) );
|
||||
}
|
||||
|
||||
href += separator + OpenLayers.Util.getParameterString(this.createParams());
|
||||
var splits = href.split("#");
|
||||
href = splits[0] + separator+ OpenLayers.Util.getParameterString(this.createParams());
|
||||
if (anchor) {
|
||||
href += anchor;
|
||||
}
|
||||
if (this.anchor && !this.element) {
|
||||
window.location.href = href;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Format/WKT.js
|
||||
* @requires OpenLayers/Filter/Comparison.js
|
||||
* @requires OpenLayers/Filter/Logical.js
|
||||
* @requires OpenLayers/Filter/Spatial.js
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -799,7 +799,7 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
if (data[3] === 255) { // antialiased
|
||||
var id = data[2] + (256 * (data[1] + (256 * data[0])));
|
||||
if (id) {
|
||||
featureId = "OpenLayers.Feature.Vector_" + (id - 1 + this.hitOverflow);
|
||||
featureId = "OpenLayers_Feature_Vector_" + (id - 1 + this.hitOverflow);
|
||||
try {
|
||||
feature = this.features[featureId][0];
|
||||
} catch(err) {
|
||||
|
||||
@@ -61,7 +61,7 @@ OpenLayers.Style = OpenLayers.Class({
|
||||
rules: null,
|
||||
|
||||
/**
|
||||
* Property: context
|
||||
* APIProperty: context
|
||||
* {Object} An optional object with properties that symbolizers' property
|
||||
* values should be evaluated against. If no context is specified,
|
||||
* feature.attributes will be used
|
||||
|
||||
@@ -123,6 +123,17 @@ OpenLayers.Util.indexOf = function(array, obj) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Property: dotless
|
||||
* {RegExp}
|
||||
* Compiled regular expression to match dots ("."). This is used for replacing
|
||||
* dots in identifiers. Because object identifiers are frequently used for
|
||||
* DOM element identifiers by the library, we avoid using dots to make for
|
||||
* more sensible CSS selectors.
|
||||
*
|
||||
* TODO: Use a module pattern to avoid bloating the API with stuff like this.
|
||||
*/
|
||||
OpenLayers.Util.dotless = /\./g;
|
||||
|
||||
/**
|
||||
* Function: modifyDOMElement
|
||||
@@ -132,7 +143,8 @@ OpenLayers.Util.indexOf = function(array, obj) {
|
||||
*
|
||||
* Parameters:
|
||||
* element - {DOMElement} DOM element to modify.
|
||||
* id - {String} The element id attribute to set.
|
||||
* id - {String} The element id attribute to set. Note that dots (".") will be
|
||||
* replaced with underscore ("_") in setting the element id.
|
||||
* px - {<OpenLayers.Pixel>|Object} The element left and top position,
|
||||
* OpenLayers.Pixel or an object with
|
||||
* a 'x' and 'y' properties.
|
||||
@@ -150,7 +162,7 @@ OpenLayers.Util.modifyDOMElement = function(element, id, px, sz, position,
|
||||
border, overflow, opacity) {
|
||||
|
||||
if (id) {
|
||||
element.id = id;
|
||||
element.id = id.replace(OpenLayers.Util.dotless, "_");
|
||||
}
|
||||
if (px) {
|
||||
element.style.left = px.x + "px";
|
||||
@@ -188,7 +200,8 @@ OpenLayers.Util.modifyDOMElement = function(element, id, px, sz, position,
|
||||
* Parameters:
|
||||
* id - {String} An identifier for this element. If no id is
|
||||
* passed an identifier will be created
|
||||
* automatically.
|
||||
* automatically. Note that dots (".") will be replaced with
|
||||
* underscore ("_") when generating ids.
|
||||
* px - {<OpenLayers.Pixel>|Object} The element left and top position,
|
||||
* OpenLayers.Pixel or an object with
|
||||
* a 'x' and 'y' properties.
|
||||
@@ -921,6 +934,7 @@ OpenLayers.Util.lastSeqID = 0;
|
||||
*
|
||||
* Parameters:
|
||||
* prefix - {String} Optional string to prefix unique id. Default is "id_".
|
||||
* Note that dots (".") in the prefix will be replaced with underscore ("_").
|
||||
*
|
||||
* Returns:
|
||||
* {String} A unique id string, built on the passed in prefix.
|
||||
@@ -928,6 +942,8 @@ OpenLayers.Util.lastSeqID = 0;
|
||||
OpenLayers.Util.createUniqueID = function(prefix) {
|
||||
if (prefix == null) {
|
||||
prefix = "id_";
|
||||
} else {
|
||||
prefix = prefix.replace(OpenLayers.Util.dotless, "_");
|
||||
}
|
||||
OpenLayers.Util.lastSeqID += 1;
|
||||
return prefix + OpenLayers.Util.lastSeqID;
|
||||
|
||||
9
notes/2.13.md
Normal file
9
notes/2.13.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Enhancements and Additions
|
||||
|
||||
## Dotless identifiers
|
||||
|
||||
Previously, objects generated by the library were given id properties with values that contained dots (e.g. "OpenLayers.Control.Navigation_2"). These same identifiers are also used for DOM elements in some case. Though uncommon, a developer may want to access these elements with a CSS selector. To facilitate this, we now always generate ids with underscore instead of dot.
|
||||
|
||||
Corresponding issues/pull requests:
|
||||
|
||||
* https://github.com/openlayers/openlayers/pull/416
|
||||
@@ -139,7 +139,7 @@
|
||||
}
|
||||
function test_Control_Permalink_base_with_query (t) {
|
||||
t.plan( 3 );
|
||||
|
||||
|
||||
control = new OpenLayers.Control.Permalink('permalink', "./edit.html?foo=bar" );
|
||||
map = new OpenLayers.Map('map');
|
||||
layer = new OpenLayers.Layer.WMS('Test Layer', "http://example.com" );
|
||||
@@ -162,7 +162,38 @@
|
||||
map.pan(-5, 0, {animate:false});
|
||||
t.eq(OpenLayers.Util.getElement('permalink').href, OpenLayers.Util.getElement('edit_permalink').href, "Panning sets permalink with base and querystring ending with '?'");
|
||||
map.destroy();
|
||||
}
|
||||
|
||||
function test_Control_Permalink_base_with_anchor (t) {
|
||||
t.plan( 4 );
|
||||
control = new OpenLayers.Control.Permalink('permalink', "./edit.html#foo" );
|
||||
map = new OpenLayers.Map('map');
|
||||
layer = new OpenLayers.Layer.WMS('Test Layer', "http://example.com" );
|
||||
map.addLayer(layer);
|
||||
if (!map.getCenter()) map.zoomToMaxExtent();
|
||||
map.addControl(control);
|
||||
map.pan(5, 0, {animate:false});
|
||||
OpenLayers.Util.getElement('edit_permalink').href = './edit.html?zoom=2&lat=0&lon=1.75781&layers=B#foo';
|
||||
t.eq(OpenLayers.Util.getElement('permalink').href, OpenLayers.Util.getElement('edit_permalink').href, "Panning sets permalink with base and anchor");
|
||||
|
||||
control = new OpenLayers.Control.Permalink('permalink', "./edit.html#" );
|
||||
map.addControl(control);
|
||||
map.pan(0, 0, {animate:false});
|
||||
OpenLayers.Util.getElement('edit_permalink').href = './edit.html?zoom=2&lat=0&lon=1.75781&layers=B#';
|
||||
t.eq(OpenLayers.Util.getElement('permalink').href, OpenLayers.Util.getElement('edit_permalink').href, "Panning sets permalink with base and an empty anchor");
|
||||
|
||||
control = new OpenLayers.Control.Permalink('permalink', "./edit.html?foo=bar#test" );
|
||||
OpenLayers.Util.getElement('edit_permalink').href = './edit.html?foo=bar&zoom=2&lat=0&lon=1.75781&layers=B#test';
|
||||
map.addControl(control);
|
||||
map.pan(5, 0, {animate:false});
|
||||
map.pan(-5, 0, {animate:false});
|
||||
t.eq(OpenLayers.Util.getElement('permalink').href, OpenLayers.Util.getElement('edit_permalink').href, "Panning sets permalink with base, querystring and an anchor");
|
||||
|
||||
control = new OpenLayers.Control.Permalink('permalink', "./edit.html#foo", {anchor : true} );
|
||||
map.addControl(control);
|
||||
map.pan(0, 0, {animate:false});
|
||||
OpenLayers.Util.getElement('edit_permalink').href = './edit.html#zoom=2&lat=0&lon=1.75781&layers=B';
|
||||
t.eq(OpenLayers.Util.getElement('permalink').href, OpenLayers.Util.getElement('edit_permalink').href, "Panning sets permalink with base and an empty anchor");
|
||||
}
|
||||
|
||||
function test_Control_Permalink_nonRepeating (t) {
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
t.ok( feature instanceof OpenLayers.Feature, "new OpenLayers.Feature returns Feature object" );
|
||||
t.eq( feature.layer, layer, "feature.layer set correctly" );
|
||||
t.ok(OpenLayers.String.startsWith(feature.id, "OpenLayers.Feature_"),
|
||||
t.ok(OpenLayers.String.startsWith(feature.id, "OpenLayers_Feature_"),
|
||||
"feature.id set correctly");
|
||||
t.ok( feature.lonlat.equals(lonlat), "feature.lonlat set correctly" );
|
||||
t.eq( feature.data.iconURL, iconURL, "feature.data.iconURL set correctly" );
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var g = new OpenLayers.Geometry();
|
||||
|
||||
t.eq(g.CLASS_NAME, "OpenLayers.Geometry", "correct CLASS_NAME")
|
||||
t.ok(OpenLayers.String.startsWith(g.id, "OpenLayers.Geometry_"),
|
||||
t.ok(OpenLayers.String.startsWith(g.id, "OpenLayers_Geometry_"),
|
||||
"id correctly set");
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
var clone = geometry.clone();
|
||||
|
||||
t.eq(clone.CLASS_NAME, "OpenLayers.Geometry", "correct CLASS_NAME")
|
||||
t.ok(OpenLayers.String.startsWith(clone.id, "OpenLayers.Geometry_"),
|
||||
t.ok(OpenLayers.String.startsWith(clone.id, "OpenLayers_Geometry_"),
|
||||
"id correctly set");
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
popup = new OpenLayers.Popup();
|
||||
|
||||
t.ok( popup instanceof OpenLayers.Popup, "new OpenLayers.Popup returns Popup object" );
|
||||
t.ok(OpenLayers.String.startsWith(popup.id, "OpenLayers.Popup"),
|
||||
t.ok(OpenLayers.String.startsWith(popup.id, "OpenLayers_Popup"),
|
||||
"valid default popupid");
|
||||
var firstID = popup.id;
|
||||
t.ok(popup.contentSize.equals(size), "good default popup.size");
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
popup = new OpenLayers.Popup.Anchored();
|
||||
|
||||
t.ok( popup instanceof OpenLayers.Popup.Anchored, "new OpenLayers.Popup.Anchored returns Popup.Anchored object" );
|
||||
t.ok(OpenLayers.String.startsWith(popup.id, "OpenLayers.Popup.Anchored"), "valid default popupid");
|
||||
t.ok(OpenLayers.String.startsWith(popup.id, "OpenLayers_Popup_Anchored"), "valid default popupid");
|
||||
var firstID = popup.id;
|
||||
t.eq(popup.contentHTML, null, "good default popup.contentHTML");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user