Let status page give out information about loaded elements
[Sone.git] / src / main / java / net / pterodactylus / sone / web / WebInterface.java
index 766098f..8f7203c 100644 (file)
@@ -73,6 +73,9 @@ import net.pterodactylus.sone.freenet.wot.Trust;
 import net.pterodactylus.sone.main.Loaders;
 import net.pterodactylus.sone.main.ReparseFilter;
 import net.pterodactylus.sone.main.SonePlugin;
+import net.pterodactylus.sone.main.SonePlugin.PluginHomepage;
+import net.pterodactylus.sone.main.SonePlugin.PluginVersion;
+import net.pterodactylus.sone.main.SonePlugin.PluginYear;
 import net.pterodactylus.sone.notify.ListNotification;
 import net.pterodactylus.sone.notify.ListNotificationFilter;
 import net.pterodactylus.sone.notify.PostVisibilityFilter;
@@ -211,6 +214,7 @@ public class WebInterface {
        private final PostVisibilityFilter postVisibilityFilter;
        private final ReplyVisibilityFilter replyVisibilityFilter;
 
+       private final ElementLoader elementLoader;
        private final TimeTextConverter timeTextConverter = new TimeTextConverter();
        private final L10nFilter l10nFilter = new L10nFilter(this);
 
@@ -269,6 +273,7 @@ public class WebInterface {
                this.listNotificationFilter = listNotificationFilter;
                this.postVisibilityFilter = postVisibilityFilter;
                this.replyVisibilityFilter = replyVisibilityFilter;
+               this.elementLoader = elementLoader;
                formPassword = sonePlugin.pluginRespirator().getToadletContainer().getFormPassword();
                soneTextParser = new SoneTextParser(getCore(), getCore());
 
@@ -372,68 +377,32 @@ public class WebInterface {
                return templateContextFactory;
        }
 
-       /**
-        * Returns the current session, creating a new session if there is no
-        * current session.
-        *
-        * @param toadletContenxt
-        *            The toadlet context
-        * @return The current session, or {@code null} if there is no current
-        *         session
-        */
-       private Session getCurrentSession(ToadletContext toadletContenxt) {
-               return getCurrentSession(toadletContenxt, true);
+       private Session getCurrentSessionWithoutCreation(ToadletContext toadletContenxt) {
+               return getSessionManager().useSession(toadletContenxt);
        }
 
-       /**
-        * Returns the current session, creating a new session if there is no
-        * current session and {@code create} is {@code true}.
-        *
-        * @param toadletContenxt
-        *            The toadlet context
-        * @param create
-        *            {@code true} to create a new session if there is no current
-        *            session, {@code false} otherwise
-        * @return The current session, or {@code null} if there is no current
-        *         session
-        */
-       private Session getCurrentSession(ToadletContext toadletContenxt, boolean create) {
-               Session session = getSessionManager().useSession(toadletContenxt);
-               if (create && (session == null)) {
+       private Session getOrCreateCurrentSession(ToadletContext toadletContenxt) {
+               Session session = getCurrentSessionWithoutCreation(toadletContenxt);
+               if (session == null) {
                        session = getSessionManager().createSession(UUID.randomUUID().toString(), toadletContenxt);
                }
                return session;
        }
 
-       /**
-        * Returns the currently logged in Sone.
-        *
-        * @param toadletContext
-        *            The toadlet context
-        * @return The currently logged in Sone, or {@code null} if no Sone is
-        *         currently logged in
-        */
-       public Sone getCurrentSone(ToadletContext toadletContext) {
-               return getCurrentSone(toadletContext, true);
+       public Sone getCurrentSoneCreatingSession(ToadletContext toadletContext) {
+               Collection<Sone> localSones = getCore().getLocalSones();
+               if (localSones.size() == 1) {
+                       return localSones.iterator().next();
+               }
+               return getCurrentSone(getOrCreateCurrentSession(toadletContext));
        }
 
-       /**
-        * Returns the currently logged in Sone.
-        *
-        * @param toadletContext
-        *            The toadlet context
-        * @param create
-        *            {@code true} to create a new session if no session exists,
-        *            {@code false} to not create a new session
-        * @return The currently logged in Sone, or {@code null} if no Sone is
-        *         currently logged in
-        */
-       public Sone getCurrentSone(ToadletContext toadletContext, boolean create) {
+       public Sone getCurrentSoneWithoutCreatingSession(ToadletContext toadletContext) {
                Collection<Sone> localSones = getCore().getLocalSones();
                if (localSones.size() == 1) {
                        return localSones.iterator().next();
                }
-               return getCurrentSone(getCurrentSession(toadletContext, create));
+               return getCurrentSone(getCurrentSessionWithoutCreation(toadletContext));
        }
 
        /**
@@ -444,7 +413,7 @@ public class WebInterface {
         * @return The currently logged in Sone, or {@code null} if no Sone is
         *         currently logged in
         */
-       public Sone getCurrentSone(Session session) {
+       private Sone getCurrentSone(Session session) {
                if (session == null) {
                        return null;
                }
@@ -464,7 +433,7 @@ public class WebInterface {
         *            The Sone to set as currently logged in
         */
        public void setCurrentSone(ToadletContext toadletContext, Sone sone) {
-               Session session = getCurrentSession(toadletContext);
+               Session session = getOrCreateCurrentSession(toadletContext);
                if (sone == null) {
                        session.removeAttribute("Sone.CurrentSone");
                } else {
@@ -732,7 +701,7 @@ 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.getPluginVersion(), SonePlugin.getYear(), SonePlugin.getHomepage()), "About"));
+               pageToadlets.add(pageToadletFactory.createPageToadlet(new AboutPage(aboutTemplate, this, new PluginVersion(SonePlugin.getPluginVersion()), new PluginYear(SonePlugin.getYear()), new PluginHomepage(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)));
@@ -744,7 +713,7 @@ public class WebInterface {
                pageToadlets.add(pageToadletFactory.createPageToadlet(new TemplatePage<FreenetRequest>("OpenSearch.xml", "application/opensearchdescription+xml", templateContextFactory, openSearchTemplate)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new GetImagePage(this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new GetTranslationPage(this)));
-               pageToadlets.add(pageToadletFactory.createPageToadlet(new GetStatusAjaxPage(this, timeTextConverter, l10nFilter)));
+               pageToadlets.add(pageToadletFactory.createPageToadlet(new GetStatusAjaxPage(this, elementLoader, timeTextConverter, l10nFilter)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new GetNotificationsAjaxPage(this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new DismissNotificationAjaxPage(this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new CreatePostAjaxPage(this)));