diff options
author | David A. Madore <david+git@madore.org> | 2011-11-12 14:33:35 +0100 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2011-11-12 14:33:35 +0100 |
commit | 07f2f3c30a6e0bc811e436925dfdfcf5befdecb7 (patch) | |
tree | 823deb363f8c7449a2028bc5171bf46d7f6218eb /org/madore/damlengine/TodoWrefAttr.java | |
parent | 71dc0d53fcefea70ce978d305fba653cc2180a3b (diff) | |
download | damlengine-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.java | 37 |
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); } } |