From 47d2becfd53af8314accaee3b1aaa3c7a7ef401e Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Wed, 26 Jan 2011 11:09:20 +0100 Subject: [PATCH] Allow specifying a Sone ID in addition to a template object name. --- .../java/net/pterodactylus/sone/template/ParserFilter.java | 12 +++++++++++- src/main/java/net/pterodactylus/sone/web/WebInterface.java | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java index f1190e0..1e274cc 100644 --- a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.StringReader; import java.util.Map; +import net.pterodactylus.sone.core.Core; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.text.FreenetLinkParser; import net.pterodactylus.sone.text.FreenetLinkParserContext; @@ -35,6 +36,9 @@ import net.pterodactylus.util.template.TemplateContextFactory; */ public class ParserFilter implements Filter { + /** The core. */ + private final Core core; + /** The link parser. */ private final FreenetLinkParser linkParser; @@ -42,10 +46,13 @@ public class ParserFilter implements Filter { * Creates a new filter that runs its input through a * {@link FreenetLinkParser}. * + * @param core + * The core * @param templateContextFactory * The context factory for rendering the parts */ - public ParserFilter(TemplateContextFactory templateContextFactory) { + public ParserFilter(Core core, TemplateContextFactory templateContextFactory) { + this.core = core; linkParser = new FreenetLinkParser(templateContextFactory); } @@ -60,6 +67,9 @@ public class ParserFilter implements Filter { soneKey = "sone"; } Sone sone = (Sone) templateContext.get(soneKey); + if (sone == null) { + sone = core.getSone(soneKey, false); + } FreenetLinkParserContext context = new FreenetLinkParserContext(sone); try { return linkParser.parse(context, new StringReader(text)); diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index 9023ccf..cc5fd5b 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -198,7 +198,7 @@ public class WebInterface implements CoreListener { templateContextFactory.addFilter("match", new MatchFilter()); templateContextFactory.addFilter("css", new CssClassNameFilter()); templateContextFactory.addFilter("js", new JavascriptFilter()); - templateContextFactory.addFilter("parse", new ParserFilter(templateContextFactory)); + templateContextFactory.addFilter("parse", new ParserFilter(getCore(), templateContextFactory)); templateContextFactory.addFilter("unknown", new UnknownDateFilter(getL10n(), "View.Sone.Text.UnknownDate")); templateContextFactory.addFilter("format", new FormatFilter()); templateContextFactory.addPlugin("getpage", new GetPagePlugin()); -- 2.7.4