summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/TodoCategories.java
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2011-09-08 16:45:01 +0200
committerDavid A. Madore <david+git@madore.org>2011-09-08 16:47:19 +0200
commite1a28d91563986bb6bd8866f7df68a4b0569ec9b (patch)
tree4579da56b53866d55feaae0fcf8c553961f4bc1e /org/madore/damlengine/TodoCategories.java
parentc1aa7509008d3aaa4afa9ceb3c3e029b9542f75a (diff)
downloaddamlengine-e1a28d91563986bb6bd8866f7df68a4b0569ec9b.tar.gz
damlengine-e1a28d91563986bb6bd8866f7df68a4b0569ec9b.tar.bz2
damlengine-e1a28d91563986bb6bd8866f7df68a4b0569ec9b.zip
Display lists of categories, with appropriate links.
Diffstat (limited to 'org/madore/damlengine/TodoCategories.java')
-rw-r--r--org/madore/damlengine/TodoCategories.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/org/madore/damlengine/TodoCategories.java b/org/madore/damlengine/TodoCategories.java
new file mode 100644
index 0000000..3219e82
--- /dev/null
+++ b/org/madore/damlengine/TodoCategories.java
@@ -0,0 +1,60 @@
+package org.madore.damlengine;
+
+import java.util.Map;
+import java.util.HashMap;
+import org.w3c.dom.*;
+
+public final class TodoCategories extends TodoElement {
+
+ public TodoCategories(Element node,
+ Context ctx,
+ TodoItem caller) {
+ super(node, ctx, caller);
+ }
+
+ protected final static Map<String,String> listNameTable;
+
+ static {
+ listNameTable = new HashMap<String,String>();
+ listNameTable.put("en", "Categories:");
+ listNameTable.put("fr", "Cat\u00e9gories\u00a0:");
+ listNameTable.put("de", "Kategorien:");
+ listNameTable.put("ia", "Categorias\u00a0:");
+ }
+
+ @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 || listNameTable.get(lang) == null ) {
+ System.err.println("warning: will use English categories list");
+ lang = "en";
+ explicitLang = "en";
+ }
+ if ( explicitLang != null )
+ LangHelper.setLangNorec(p, explicitLang);
+ p.setAttributeNS(null, "class", "categories-list");
+ node.getParentNode().replaceChild(p, node);
+ p.appendChild(ctx.doc.createTextNode(listNameTable.get(lang)));
+ if ( ctx.ent == null )
+ throw new IllegalStateException("entry context not defined in categories element");
+ for ( String cat : ctx.ent.catList ) {
+ p.appendChild(ctx.doc.createTextNode(" "));
+ Element a1 = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a");
+ String target1URL = ((ctx.gc.uriToTop==null)?"":(ctx.gc.uriToTop+"weblog/"))
+ + cat + ".html";
+ a1.setAttributeNS(null, "href", target1URL);
+ p.appendChild(a1);
+ a1.appendChild(ctx.doc.createTextNode(cat));
+ p.appendChild(ctx.doc.createTextNode("("));
+ Element a2 = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a");
+ String target2URL = target1URL
+ + "#d." + ctx.ent.date + "." + ctx.ent.number;
+ a2.setAttributeNS(null, "href", target2URL);
+ p.appendChild(a2);
+ a2.appendChild(ctx.doc.createTextNode("\u2022"));
+ p.appendChild(ctx.doc.createTextNode(")"));
+ }
+ }
+}