summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/TodoWrefAttr.java
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2011-11-12 14:33:35 +0100
committerDavid A. Madore <david+git@madore.org>2011-11-12 14:33:35 +0100
commit07f2f3c30a6e0bc811e436925dfdfcf5befdecb7 (patch)
tree823deb363f8c7449a2028bc5171bf46d7f6218eb /org/madore/damlengine/TodoWrefAttr.java
parent71dc0d53fcefea70ce978d305fba653cc2180a3b (diff)
downloaddamlengine-07f2f3c30a6e0bc811e436925dfdfcf5befdecb7.tar.gz
damlengine-07f2f3c30a6e0bc811e436925dfdfcf5befdecb7.tar.bz2
damlengine-07f2f3c30a6e0bc811e436925dfdfcf5befdecb7.zip
Entry single pages: handle permalinks gracefully, populate with attribute.
* A single page is generated from the single-page attribute on <entry> element (stored in database as do_single_page). * Permalink refers to the single page. Same from weblog index. Other links are subject to debate (e.g., what about internal links? now we link to single page when link has a supplement part, but this is debatable).
Diffstat (limited to 'org/madore/damlengine/TodoWrefAttr.java')
-rw-r--r--org/madore/damlengine/TodoWrefAttr.java37
1 files changed, 23 insertions, 14 deletions
diff --git a/org/madore/damlengine/TodoWrefAttr.java b/org/madore/damlengine/TodoWrefAttr.java
index d9b8950..9f33406 100644
--- a/org/madore/damlengine/TodoWrefAttr.java
+++ b/org/madore/damlengine/TodoWrefAttr.java
@@ -42,25 +42,34 @@ public class TodoWrefAttr extends TodoAttr {
String targetFragment = "d." + wrefYearStr + "-" + wrefMonthStr
+ "-" + wrefDayStr + "." + wrefNumberStr + wrefSupplementStr;
String target = targetFile + "#" + targetFragment;
- this.owner.removeAttributeNode(this.attr);
- this.owner.setAttributeNS(null, "href", target);
if ( ! this.owner.hasAttributeNS(null, "class") )
this.owner.setAttributeNS(null, "class", "weblog-internal-link");
- if ( wrefSupplementStr.equals("")
- && ! this.owner.hasAttributeNS(null, "title") ) {
- WeblogSummary wsum = WeblogSummary.getSummary();
- if ( wsum != null && wsum.entries != null ) {
- WeblogSummary.EntrySummary esum
- = wsum.entries.get(new Integer(wrefNumberStr));
- if ( esum != null ) {
- if ( ! ((wrefYearStr+"-"+wrefMonthStr+"-"+wrefDayStr)
- .equals(esum.date)) )
- System.err.println("warning: date mismatch for reference to entry "+wrefNumberStr);
- if ( esum.title != null )
- this.owner.setAttributeNS(null, "title", esum.title);
+ WeblogSummary wsum = WeblogSummary.getSummary();
+ if ( wsum != null && wsum.entries != null ) {
+ WeblogSummary.EntrySummary esum
+ = wsum.entries.get(new Integer(wrefNumberStr));
+ if ( esum != null ) {
+ if ( ! ((wrefYearStr+"-"+wrefMonthStr+"-"+wrefDayStr)
+ .equals(esum.date)) )
+ throw new IllegalArgumentException("date mismatch for reference to entry "+wrefNumberStr);
+ if ( esum.doSinglePage != null
+ && ! wrefSupplementStr.equals("")
+ // 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. :-\
+ && ! ( ctx.wsc instanceof Context.WeblogSingleSelectionContext ) ) {
+ targetFile = ((ctx.gc.uriToTop==null)?"":(ctx.gc.uriToTop+"weblog/"))
+ + esum.date + "-" + esum.doSinglePage + ".html";
+ target = targetFile + "#" + targetFragment;
}
+ if ( wrefSupplementStr.equals("")
+ && ! this.owner.hasAttributeNS(null, "title")
+ && esum.title != null )
+ this.owner.setAttributeNS(null, "title", esum.title);
}
}
+ this.owner.removeAttributeNode(this.attr);
+ this.owner.setAttributeNS(null, "href", target);
}
}