package org.madore.damlengine; import java.util.ArrayList; import java.util.regex.Pattern; import org.w3c.dom.*; public final class TodoFooter extends TodoElement { public TodoFooter(Element node, Context ctx, TodoItem caller) { super(node, ctx, caller); } @Override public void handle() { Element footer = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "footer"); node.getParentNode().insertBefore(footer, node); node.getParentNode().insertBefore(ctx.doc.createTextNode("\n"), node); footer.setAttributeNS(null, "class", "cleared"); ArrayList toProcess = new ArrayList(2); Element hr = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "hr"); footer.appendChild(hr); footer.appendChild(ctx.doc.createTextNode("\n")); Element jsFootSpace = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "div"); footer.appendChild(jsFootSpace); footer.appendChild(ctx.doc.createTextNode("\n")); jsFootSpace.setAttributeNS(null, "id", "js-foot-space"); jsFootSpace.appendChild(ctx.doc.createComment(" To be filled by JavaScript ")); Element addr = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "address"); footer.appendChild(addr); footer.appendChild(ctx.doc.createTextNode("\n")); addr.setAttributeNS(null, "class", "author vcard"); toProcess.add(TodoElement.getTodoElement(addr, this.ctx, this)); Element a = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); a.setAttributeNS(null, "href", (ctx.gc.uriToTop==null)?"http://www.madore.org/~david/" :ctx.gc.uriToTop); // a.setAttributeNS(null, "rel", "author"); a.setAttributeNS(null, "class", "url fn"); addr.appendChild(a); a.appendChild(ctx.doc.createTextNode("David Madore")); addr.appendChild(ctx.doc.createTextNode(" (")); Element email = ctx.doc.createElementNS(DamlEngine.DAML_NS, "d:email-despammed"); addr.appendChild(email); email.appendChild(ctx.doc.createTextNode("david")); email.appendChild(ctx.doc.createElementNS(DamlEngine.DAML_NS, "d:email-plus")); email.appendChild(ctx.doc.createTextNode("www")); email.appendChild(ctx.doc.createElementNS(DamlEngine.DAML_NS, "d:email-at")); email.appendChild(ctx.doc.createTextNode("madore")); email.appendChild(ctx.doc.createElementNS(DamlEngine.DAML_NS, "d:email-dot")); email.appendChild(ctx.doc.createTextNode("org")); addr.appendChild(ctx.doc.createElementNS(DamlEngine.XHTML_NS, "wbr")); addr.appendChild(ctx.doc.createTextNode("|")); a = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); a.setAttributeNS(null, "href", ((ctx.gc.uriToTop==null)?"http://www.madore.org/~david/" :ctx.gc.uriToTop) + "ego.html"); a.setAttributeNS(null, "rel", "author"); addr.appendChild(a); a.appendChild(ctx.doc.createTextNode("\u2042")); // addr.appendChild(ctx.doc.createElementNS(DamlEngine.XHTML_NS, "wbr")); // addr.appendChild(ctx.doc.createTextNode("|")); // a = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); // a.setAttributeNS(null, "href", "https://plus.google.com/+davidamadore"); // a.setAttributeNS(null, "rel", "author"); // addr.appendChild(a); // a.appendChild(ctx.doc.createTextNode("Google+")); addr.appendChild(ctx.doc.createElementNS(DamlEngine.XHTML_NS, "wbr")); addr.appendChild(ctx.doc.createTextNode("|")); a = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); a.setAttributeNS(null, "href", "https://twitter.com/gro_tsen"); a.setAttributeNS(null, "rel", "me"); addr.appendChild(a); a.appendChild(ctx.doc.createTextNode("Twitter")); addr.appendChild(ctx.doc.createElementNS(DamlEngine.XHTML_NS, "wbr")); addr.appendChild(ctx.doc.createTextNode("|")); a = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); a.setAttributeNS(null, "href", "https://bsky.app/profile/gro-tsen.bsky.social"); a.setAttributeNS(null, "rel", "me"); addr.appendChild(a); a.appendChild(ctx.doc.createTextNode("Bluesky")); addr.appendChild(ctx.doc.createElementNS(DamlEngine.XHTML_NS, "wbr")); addr.appendChild(ctx.doc.createTextNode("|")); a = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); a.setAttributeNS(null, "href", "https://mastodon.sdf.org/@gro_tsen_test"); a.setAttributeNS(null, "rel", "me"); addr.appendChild(a); a.appendChild(ctx.doc.createTextNode("Mastodon (test)")); addr.appendChild(ctx.doc.createElementNS(DamlEngine.XHTML_NS, "wbr")); addr.appendChild(ctx.doc.createTextNode("|")); a = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); a.setAttributeNS(null, "href", "http://www.facebook.com/grotsen"); a.setAttributeNS(null, "rel", "me"); addr.appendChild(a); a.appendChild(ctx.doc.createTextNode("Facebook")); addr.appendChild(ctx.doc.createTextNode(")")); Node ws = node.getNextSibling(); if ( ws != null && ( ws.getNodeType() == Node.TEXT_NODE || ws.getNodeType() == Node.CDATA_SECTION_NODE ) && Pattern.matches("^\\s*$",((CharacterData)ws).getData()) ) node.getParentNode().removeChild(ws); node.getParentNode().removeChild(node); this.ownerDeque.registerAtStart(toProcess); } }