Abandon logging that does not work with Freenet’s logger at all
[Sone.git] / src / main / java / net / pterodactylus / sone / web / WebInterface.java
index f21d256..fbba8e0 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.web;
 
+import static java.util.logging.Logger.getLogger;
 import static net.pterodactylus.util.template.TemplateParser.parse;
 
 import java.io.IOException;
@@ -71,6 +72,7 @@ import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.freenet.L10nFilter;
 import net.pterodactylus.sone.freenet.wot.Identity;
 import net.pterodactylus.sone.freenet.wot.Trust;
+import net.pterodactylus.sone.main.ReparseFilter;
 import net.pterodactylus.sone.main.SonePlugin;
 import net.pterodactylus.sone.notify.ListNotification;
 import net.pterodactylus.sone.template.AlbumAccessor;
@@ -128,7 +130,6 @@ import net.pterodactylus.sone.web.page.FreenetRequest;
 import net.pterodactylus.sone.web.page.PageToadlet;
 import net.pterodactylus.sone.web.page.PageToadletFactory;
 import net.pterodactylus.util.io.Closer;
-import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.notify.Notification;
 import net.pterodactylus.util.notify.NotificationManager;
 import net.pterodactylus.util.notify.TemplateNotification;
@@ -173,7 +174,7 @@ import freenet.support.api.HTTPRequest;
 public class WebInterface {
 
        /** The logger. */
-       private static final Logger logger = Logging.getLogger(WebInterface.class);
+       private static final Logger logger = getLogger(WebInterface.class.getName());
 
        /** The notification manager. */
        private final NotificationManager notificationManager = new NotificationManager();
@@ -274,6 +275,7 @@ public class WebInterface {
                templateContextFactory.addFilter("css", new CssClassNameFilter());
                templateContextFactory.addFilter("js", new JavascriptFilter());
                templateContextFactory.addFilter("parse", parserFilter = new ParserFilter(getCore(), templateContextFactory, soneTextParser));
+               templateContextFactory.addFilter("reparse", new ReparseFilter());
                templateContextFactory.addFilter("unknown", new UnknownDateFilter(getL10n(), "View.Sone.Text.UnknownDate"));
                templateContextFactory.addFilter("format", new FormatFilter());
                templateContextFactory.addFilter("sort", new CollectionSortFilter());
@@ -324,11 +326,17 @@ public class WebInterface {
        }
 
        private Template parseTemplate(String resourceName) {
-               Reader reader = createReader(resourceName);
+               InputStream templateInputStream = null;
+               Reader reader = null;
                try {
+                       templateInputStream = getClass().getResourceAsStream(resourceName);
+                       reader = new InputStreamReader(templateInputStream, "UTF-8");
                        return parse(reader);
+               } catch (UnsupportedEncodingException uee1) {
+                       throw new RuntimeException("UTF-8 not supported.");
                } finally {
                        Closer.close(reader);
+                       Closer.close(templateInputStream);
                }
        }
 
@@ -434,7 +442,7 @@ public class WebInterface {
                if (soneId == null) {
                        return null;
                }
-               return getCore().getLocalSone(soneId, false);
+               return getCore().getLocalSone(soneId);
        }
 
        /**
@@ -635,6 +643,8 @@ public class WebInterface {
                Template deleteAlbumTemplate = parseTemplate("/templates/deleteAlbum.html");
                Template deleteImageTemplate = parseTemplate("/templates/deleteImage.html");
                Template noPermissionTemplate = parseTemplate("/templates/noPermission.html");
+               Template emptyImageTitleTemplate = parseTemplate("/templates/emptyImageTitle.html");
+               Template emptyAlbumTitleTemplate = parseTemplate("/templates/emptyAlbumTitle.html");
                Template optionsTemplate = parseTemplate("/templates/options.html");
                Template rescueTemplate = parseTemplate("/templates/rescue.html");
                Template aboutTemplate = parseTemplate("/templates/about.html");
@@ -684,8 +694,10 @@ public class WebInterface {
                pageToadlets.add(pageToadletFactory.createPageToadlet(new LogoutPage(emptyTemplate, this), "Logout"));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new OptionsPage(optionsTemplate, this), "Options"));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new RescuePage(rescueTemplate, this), "Rescue"));
-               pageToadlets.add(pageToadletFactory.createPageToadlet(new AboutPage(aboutTemplate, this, SonePlugin.VERSION), "About"));
+               pageToadlets.add(pageToadletFactory.createPageToadlet(new AboutPage(aboutTemplate, this, SonePlugin.VERSION, SonePlugin.getYear(), SonePlugin.getHomepage()), "About"));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new SoneTemplatePage("noPermission.html", noPermissionTemplate, "Page.NoPermission.Title", this)));
+               pageToadlets.add(pageToadletFactory.createPageToadlet(new SoneTemplatePage("emptyImageTitle.html", emptyImageTitleTemplate, "Page.EmptyImageTitle.Title", this)));
+               pageToadlets.add(pageToadletFactory.createPageToadlet(new SoneTemplatePage("emptyAlbumTitle.html", emptyAlbumTitleTemplate, "Page.EmptyAlbumTitle.Title", this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new DismissNotificationPage(emptyTemplate, this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new SoneTemplatePage("invalid.html", invalidTemplate, "Page.Invalid.Title", this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new StaticPage<FreenetRequest>("css/", "/static/css/", "text/css")));
@@ -747,22 +759,6 @@ public class WebInterface {
        }
 
        /**
-        * Creates a {@link Reader} from the {@link InputStream} for the resource
-        * with the given name.
-        *
-        * @param resourceName
-        *            The name of the resource
-        * @return A {@link Reader} for the resource
-        */
-       private Reader createReader(String resourceName) {
-               try {
-                       return new InputStreamReader(getClass().getResourceAsStream(resourceName), "UTF-8");
-               } catch (UnsupportedEncodingException uee1) {
-                       return null;
-               }
-       }
-
-       /**
         * Returns all {@link Sone#isLocal() local Sone}s that are referenced by
         * {@link SonePart}s in the given text (after parsing it using
         * {@link SoneTextParser}).
@@ -1021,7 +1017,7 @@ public class WebInterface {
        public void soneInserting(SoneInsertingEvent soneInsertingEvent) {
                TemplateNotification soneInsertNotification = getSoneInsertNotification(soneInsertingEvent.sone());
                soneInsertNotification.set("soneStatus", "inserting");
-               if (soneInsertingEvent.sone().getOptions().getBooleanOption("EnableSoneInsertNotifications").get()) {
+               if (soneInsertingEvent.sone().getOptions().isSoneInsertNotificationEnabled()) {
                        notificationManager.addNotification(soneInsertNotification);
                }
        }
@@ -1037,7 +1033,7 @@ public class WebInterface {
                TemplateNotification soneInsertNotification = getSoneInsertNotification(soneInsertedEvent.sone());
                soneInsertNotification.set("soneStatus", "inserted");
                soneInsertNotification.set("insertDuration", soneInsertedEvent.insertDuration() / 1000);
-               if (soneInsertedEvent.sone().getOptions().getBooleanOption("EnableSoneInsertNotifications").get()) {
+               if (soneInsertedEvent.sone().getOptions().isSoneInsertNotificationEnabled()) {
                        notificationManager.addNotification(soneInsertNotification);
                }
        }
@@ -1053,7 +1049,7 @@ public class WebInterface {
                TemplateNotification soneInsertNotification = getSoneInsertNotification(soneInsertAbortedEvent.sone());
                soneInsertNotification.set("soneStatus", "insert-aborted");
                soneInsertNotification.set("insert-error", soneInsertAbortedEvent.cause());
-               if (soneInsertAbortedEvent.sone().getOptions().getBooleanOption("EnableSoneInsertNotifications").get()) {
+               if (soneInsertAbortedEvent.sone().getOptions().isSoneInsertNotificationEnabled()) {
                        notificationManager.addNotification(soneInsertNotification);
                }
        }