diff options
author | David A. Madore <david+git@madore.org> | 2014-10-10 16:50:30 +0200 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2014-10-10 16:50:30 +0200 |
commit | 01ad55efbfb3b0056efaa0f9a7d7c48765d7db81 (patch) | |
tree | 9148ef9f713d9d31fae3444217c047755677e2cb | |
parent | 00f33d7378a04bf8dd83ac4c033eb98c0133eedb (diff) | |
parent | 608c0e55989d40c0f8f3a47c244356acf5002f48 (diff) | |
download | damlengine-01ad55efbfb3b0056efaa0f9a7d7c48765d7db81.tar.gz damlengine-01ad55efbfb3b0056efaa0f9a7d7c48765d7db81.tar.bz2 damlengine-01ad55efbfb3b0056efaa0f9a7d7c48765d7db81.zip |
Merge branch 'master' into servlet
-rw-r--r-- | org/madore/damlengine/TodoWXrefAttr.java | 2 | ||||
-rw-r--r-- | org/madore/damlengine/TodoWrefAttr.java | 15 |
2 files changed, 12 insertions, 5 deletions
diff --git a/org/madore/damlengine/TodoWXrefAttr.java b/org/madore/damlengine/TodoWXrefAttr.java index 5065465..bb1c861 100644 --- a/org/madore/damlengine/TodoWXrefAttr.java +++ b/org/madore/damlengine/TodoWXrefAttr.java @@ -38,6 +38,8 @@ public class TodoWXrefAttr extends TodoAttr { = ctx.doc.createAttributeNS(DamlEngine.DAML_NS, "d:wref"); newAttr.setValue(target); this.owner.setAttributeNodeNS(newAttr); + // Force linking to the month page. + this.owner.setAttributeNS(DamlEngine.DAML_NS, "d:wrefcat", "@month"); this.ownerDeque.registerAtStart(new TodoWrefAttr(newAttr, this.owner, this.ctx, this)); } else { diff --git a/org/madore/damlengine/TodoWrefAttr.java b/org/madore/damlengine/TodoWrefAttr.java index 9341919..b707a95 100644 --- a/org/madore/damlengine/TodoWrefAttr.java +++ b/org/madore/damlengine/TodoWrefAttr.java @@ -54,13 +54,16 @@ public class TodoWrefAttr extends TodoAttr { if ( ! ((wrefYearStr+"-"+wrefMonthStr+"-"+wrefDayStr) .equals(esum.date)) ) throw new IllegalArgumentException("date mismatch for reference to entry "+wrefNumberStr); - if ( wrefCat != null ) { + if ( wrefCat != null && ! wrefCat.equals("@month") ) { if ( esum.catSet == null || ! esum.catSet.contains(wrefCat) ) throw new IllegalArgumentException("reference to entry "+wrefNumberStr+" in wrong category "+wrefCat); } } // Choose file portion of link target if ( esum != null && esum.doSinglePage != null && ! wrefSupplementStr.equals("") ) { + // Linking to a _fragment_ of an entry that has a single page. + if ( wrefCat != null ) + System.err.println("warning: ignoring d:wrefcat attribute!"); if ( ctx.wsc != null && ctx.wsc.sel != null && ctx.wsc instanceof Context.WeblogSingleSelectionContext && ((Context.WeblogSingleSelectionContext)ctx.wsc).number == wrefNumber ) @@ -69,16 +72,18 @@ public class TodoWrefAttr extends TodoAttr { targetFile = targetStdDir + esum.date + "-" + esum.doSinglePage + ".html"; } else if ( ctx.wsc != null && ctx.wsc.sel != null && ctx.wsc.sel.contains(wrefNumber) ) { + // Linking to an entry already present on this page. targetFile = ""; - } else if ( wrefCat != null ) { + } else if ( wrefCat != null && ! wrefCat.equals("@month") ) { + // Linking to an entry in a designated category. targetFile = targetStdDir + wrefCat + ".html"; } else { + // Linking to an entry in its month, or single page. targetFile = targetStdDir + wrefYearStr + "-" + wrefMonthStr + ".html"; if ( esum != null && esum.doSinglePage != null // Note to self: remember we could be called from d:wxref - // because of link on "older entries": we don't want - // to link to single entry page in this case. :-\ - && ! ( caller instanceof TodoWXrefAttr ) ) { + // because of link on "older entries". + && ( wrefCat == null || ! wrefCat.equals("@month") ) ) { targetFile = targetStdDir + esum.date + "-" + esum.doSinglePage + ".html"; } } |