X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FSoneTemplatePage.java;h=d6c41c14ed36af3a7348de3aaa6e9df476680ae3;hp=a04873dfd1ec3f1ce188d49c55da84214853a67a;hb=2ee1747f28b213da04a98456aac925f315f52dac;hpb=c3745c94d79e6fba53c95003287f539b79b2e749 diff --git a/src/main/java/net/pterodactylus/sone/web/SoneTemplatePage.java b/src/main/java/net/pterodactylus/sone/web/SoneTemplatePage.java index a04873d..d6c41c1 100644 --- a/src/main/java/net/pterodactylus/sone/web/SoneTemplatePage.java +++ b/src/main/java/net/pterodactylus/sone/web/SoneTemplatePage.java @@ -21,11 +21,15 @@ import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Arrays; import java.util.Collection; +import java.util.List; +import java.util.Map; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.main.SonePlugin; import net.pterodactylus.sone.web.page.Page; -import net.pterodactylus.sone.web.page.TemplatePage; +import net.pterodactylus.sone.web.page.FreenetTemplatePage; +import net.pterodactylus.util.collection.ListBuilder; +import net.pterodactylus.util.collection.MapBuilder; import net.pterodactylus.util.template.Template; import net.pterodactylus.util.template.TemplateContext; import freenet.clients.http.SessionManager.Session; @@ -37,11 +41,14 @@ import freenet.support.api.HTTPRequest; * * @author David ‘Bombe’ Roden */ -public class SoneTemplatePage extends TemplatePage { +public class SoneTemplatePage extends FreenetTemplatePage { /** The Sone core. */ protected final WebInterface webInterface; + /** The page title l10n key. */ + private final String pageTitleKey; + /** Whether to require a login. */ private final boolean requireLogin; @@ -53,6 +60,21 @@ public class SoneTemplatePage extends TemplatePage { * The path of the page * @param template * The template to render + * @param webInterface + * The Sone web interface + */ + public SoneTemplatePage(String path, Template template, WebInterface webInterface) { + this(path, template, null, webInterface, false); + } + + /** + * Creates a new template page for Freetalk that does not require the user + * to be logged in. + * + * @param path + * The path of the page + * @param template + * The template to render * @param pageTitleKey * The l10n key of the page title * @param webInterface @@ -69,6 +91,22 @@ public class SoneTemplatePage extends TemplatePage { * The path of the page * @param template * The template to render + * @param webInterface + * The Sone web interface + * @param requireLogin + * Whether this page requires a login + */ + public SoneTemplatePage(String path, Template template, WebInterface webInterface, boolean requireLogin) { + this(path, template, null, webInterface, requireLogin); + } + + /** + * Creates a new template page for Freetalk. + * + * @param path + * The path of the page + * @param template + * The template to render * @param pageTitleKey * The l10n key of the page title * @param webInterface @@ -77,7 +115,8 @@ public class SoneTemplatePage extends TemplatePage { * Whether this page requires a login */ public SoneTemplatePage(String path, Template template, String pageTitleKey, WebInterface webInterface, boolean requireLogin) { - super(path, webInterface.getTemplateContextFactory(), template, webInterface.getL10n(), pageTitleKey, "noPermission.html"); + super(path, webInterface.getTemplateContextFactory(), template, "noPermission.html"); + this.pageTitleKey = pageTitleKey; this.webInterface = webInterface; this.requireLogin = requireLogin; template.getInitialContext().set("webInterface", webInterface); @@ -163,6 +202,25 @@ public class SoneTemplatePage extends TemplatePage { * {@inheritDoc} */ @Override + protected String getPageTitle(Request request) { + if (pageTitleKey != null) { + return webInterface.getL10n().getString(pageTitleKey); + } + return ""; + } + + /** + * {@inheritDoc} + */ + @Override + protected List> getAdditionalLinkNodes(Request request) { + return new ListBuilder>().add(new MapBuilder().put("rel", "search").put("type", "application/opensearchdescription+xml").put("title", "Sone").put("href", "http://" + request.getHttpRequest().getHeader("host") + "/Sone/OpenSearch.xml").get()).get(); + } + + /** + * {@inheritDoc} + */ + @Override protected Collection getStyleSheets() { return Arrays.asList("css/sone.css"); }