That was kind of my point. Things shouldn’t break across versions like this, at least not in the way that it is breaking. There’s no point in blaming Debian for packaging it when Redmine will probably want to upgrade eventually anyway. That being said, it doesn’t appear to be browser specific (I tested Safari, Firefox mac, Firefox PC, and IE, all did the same thing), and it appears to be a naming scheme that breaks it.
The code in question from 1.6.0.3
findElements: function(root) {
root = root || document;
var e = this.expression, results;
switch (this.mode) {
case 'selectorsAPI':
// querySelectorAll queries document-wide, then filters to descendants
// of the context element. That's not what we want.
// Add an explicit context to the selector if necessary.
if (root !== document) {
var oldId = root.id, id = $(root).identify();
e = "#" + id + " " + e;
}
results = $A(root.querySelectorAll(e)).map(Element.extend);
root.id = oldId;
return results;
case 'xpath':
return document._getElementsByXPath(this.xpath, root);
default:
return this.matcher(root);
}
},
From 1.6.1:
findElements: function(root) {
root = root || document;
var e = this.expression, results;
switch (this.mode) {
case 'selectorsAPI':
if (root !== document) {
var oldId = root.id, id = $(root).identify();
id = id.replace(/([\.:])/g, "\\$1");
e = "#" + id + " " + e;
}
results = $A(root.querySelectorAll(e)).map(Element.extend);
root.id = oldId;
return results;
case 'xpath':
return document._getElementsByXPath(this.xpath, root);
default:
return this.matcher(root);
}
},
By my diff the only code difference is:
id = id.replace(/([\.:])/g, "\\$1”);
Essentially they’re now escaping any periods or colons with a backslash. How this causes the problem I am not sure, as I didn’t dive into the Ruby deep enough to figure out the specifics, but maybe this leg work will make it quicker for somebody more familiar with the guts to recognize and patch?