415805 - r=sayrer, a=schrep - if a geo has its own text, don't use the text of an hCard or hCal that contains it

This commit is contained in:
mkaply@us.ibm.com 2008-02-12 09:44:54 -08:00
Родитель 23119ec1f5
Коммит 1fdf239f57
2 изменённых файлов: 48 добавлений и 3 удалений

Просмотреть файл

@ -1466,13 +1466,16 @@ function geo(node, validate) {
geo.prototype.toString = function() {
if (this.latitude && this.longitude) {
var s;
if ((this.node.localName.toLowerCase() != "abbr") && (this.node.localName.toLowerCase() == "html:abbr")) {
if ((this.node.localName.toLowerCase() != "abbr") && (this.node.localName.toLowerCase() != "html:abbr")) {
s = Microformats.parser.textGetter(this.node);
} else {
s = this.node.textContent;
}
/* FIXME - THIS IS FIREFOX SPECIFIC */
if (s) {
return s;
}
/* check if geo is contained in a vcard */
var xpathExpression = "ancestor::*[contains(concat(' ', @class, ' '), ' vcard ')]";
var xpathResult = this.node.ownerDocument.evaluate(xpathExpression, this.node, null, Components.interfaces.nsIDOMXPathResult.FIRST_ORDERED_NODE_TYPE, null);

Просмотреть файл

@ -23,6 +23,32 @@
<abbr class="geo" id="01-geo-abbr" title="30.267991;-97.739568">Paradise</abbr>
<span class="vcard">
<span class="fn org">John Doe</span>
<abbr class="geo" id="02-geo-vcard-01" title="37.77;-122.41"></abbr>
</span>
<span class="vcard">
<span class="fn org">John Doe</span>
<abbr class="geo" id="02-geo-vcard-02" title="37.77;-122.41">Northern California</abbr>
</span>
<span class="vevent">
<span class="summary">SXSW Interactive (South by Southwest)</span>
<ABBR title="20080307" class="dtstart">Friday, March 7, 2008</ABBR>
-
<ABBR title="20080311" class="dtend">Tuesday, March 11, 2008</ABBR>
<abbr class="geo" id="02-geo-vevent-01" title="30.2622;-97.7399"></abbr>
</span>
<span class="vevent">
<span class="summary">SXSW Interactive (South by Southwest)</span>
<ABBR title="20080307" class="dtstart">Friday, March 7, 2008</ABBR>
-
<ABBR title="20080311" class="dtend">Tuesday, March 11, 2008</ABBR>
<abbr class="geo" id="02-geo-vevent-02" title="30.2622;-97.7399">Convention Center</abbr>
</span>
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
@ -59,6 +85,22 @@ function test_geo() {
is(Geo.latitude, "30.267991", "01-geo-abbr - latitude");
is(Geo.longitude, "-97.739568", "01-geo-abbr - longitude");
Geo = new geo(document.getElementById("02-geo-vcard-01"));
is(Geo.toString(), "John Doe", "02-geo-vcard-01");
Geo = new geo(document.getElementById("02-geo-vcard-02"));
is(Geo.toString(), "Northern California", "02-geo-vcard-02");
Geo = new geo(document.getElementById("02-geo-vevent-01"));
is(Geo.toString(), "SXSW Interactive (South by Southwest)", "02-geo-vevent-01");
Geo = new geo(document.getElementById("02-geo-vevent-02"));
is(Geo.toString(), "Convention Center", "02-geo-vevent-02");
}
</script>