summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/TodoComments.java
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2011-08-26 16:43:40 +0200
committerDavid A. Madore <david+git@madore.org>2011-08-26 16:43:40 +0200
commitffe182b338e90ecd3f702c7142c4e43996e37d3c (patch)
tree8efae0d5e96ed00e0adec6f8ad505ab537f84923 /org/madore/damlengine/TodoComments.java
parente3ac578e74c3197d7e4bb03e10cd5756b9405e76 (diff)
downloaddamlengine-ffe182b338e90ecd3f702c7142c4e43996e37d3c.tar.gz
damlengine-ffe182b338e90ecd3f702c7142c4e43996e37d3c.tar.bz2
damlengine-ffe182b338e90ecd3f702c7142c4e43996e37d3c.zip
Implement comments (talkback) link.
Diffstat (limited to 'org/madore/damlengine/TodoComments.java')
-rw-r--r--org/madore/damlengine/TodoComments.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/org/madore/damlengine/TodoComments.java b/org/madore/damlengine/TodoComments.java
new file mode 100644
index 0000000..e1dd027
--- /dev/null
+++ b/org/madore/damlengine/TodoComments.java
@@ -0,0 +1,57 @@
+package org.madore.damlengine;
+
+import java.util.Map;
+import java.util.HashMap;
+import org.w3c.dom.*;
+
+public final class TodoComments extends TodoElement {
+
+ public TodoComments(Element node,
+ Context ctx,
+ TodoItem caller) {
+ super(node, ctx, caller);
+ }
+
+ protected final static Map<String,String> linkNameTable;
+
+ static {
+ linkNameTable = new HashMap<String,String>();
+ linkNameTable.put("en", "Comments");
+ linkNameTable.put("fr", "Commentaires");
+ linkNameTable.put("de", "Kommentare");
+ linkNameTable.put("ia", "Commentos");
+ }
+
+ @Override
+ public void handle() {
+ Element p = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "p");
+ String lang = LangHelper.getLangRec(node);
+ String explicitLang = LangHelper.getLangNorec(node);
+ if ( lang == null || linkNameTable.get(lang) == null ) {
+ System.err.println("warning: will use English comments link");
+ lang = "en";
+ explicitLang = "en";
+ }
+ if ( explicitLang != null )
+ LangHelper.setLangNorec(p, explicitLang);
+ p.setAttributeNS(null, "class", "talkback-link");
+ node.getParentNode().replaceChild(p, node);
+ Element a = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a");
+ if ( ctx.entryCtx == null )
+ throw new IllegalStateException("entry context not defined in comments element");
+ String commentURL = "http://www.madore.org/cgi-bin/comment.pl/"
+ + "showcomments?href=http%3a%2f%2fwww.madore.org%2f"
+ + "%7edavid%2fweblog%2f"
+ + ctx.entryCtx.yandm + ".html%23d." + ctx.entryCtx.date
+ + "." + ctx.entryCtx.number;
+ a.setAttributeNS(null, "href", commentURL);
+ p.appendChild(a);
+ a.appendChild(ctx.doc.createTextNode(linkNameTable.get(lang)));
+ Element span = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "span");
+ span.setAttributeNS(null, "id",
+ "d." + ctx.entryCtx.date + "."
+ + ctx.entryCtx.number + ".numcomments");
+ p.appendChild(span);
+ span.appendChild(ctx.doc.createComment(" EMPTY "));
+ }
+}