From ffe182b338e90ecd3f702c7142c4e43996e37d3c Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Fri, 26 Aug 2011 16:43:40 +0200 Subject: Implement comments (talkback) link. --- org/madore/damlengine/TodoComments.java | 57 +++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 org/madore/damlengine/TodoComments.java (limited to 'org/madore/damlengine/TodoComments.java') 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 linkNameTable; + + static { + linkNameTable = new HashMap(); + 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 ")); + } +} -- cgit v1.2.3