diff options
author | David A. Madore <david+git@madore.org> | 2011-09-08 16:45:01 +0200 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2011-09-08 16:47:19 +0200 |
commit | e1a28d91563986bb6bd8866f7df68a4b0569ec9b (patch) | |
tree | 4579da56b53866d55feaae0fcf8c553961f4bc1e /org/madore/damlengine/TodoCategories.java | |
parent | c1aa7509008d3aaa4afa9ceb3c3e029b9542f75a (diff) | |
download | damlengine-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.java | 60 |
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(")")); + } + } +} |