X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterface.java;h=ee309df9bd6b5d834168eec3a10ffbdc04d77939;hp=1ee72922d2e590a402035d1580f896c29429f7cf;hb=de7568a82eb4150bf6d2b0553841b7b69f84c968;hpb=b739f34bb13029472389137f4cb3632ddec6c57c diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index 1ee7292..ee309df 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -120,6 +120,7 @@ import net.pterodactylus.sone.web.ajax.EditImageAjaxPage; import net.pterodactylus.sone.web.ajax.EditProfileFieldAjaxPage; import net.pterodactylus.sone.web.ajax.FollowSoneAjaxPage; import net.pterodactylus.sone.web.ajax.GetLikesAjaxPage; +import net.pterodactylus.sone.web.ajax.GetLinkedElementAjaxPage; import net.pterodactylus.sone.web.ajax.GetNotificationsAjaxPage; import net.pterodactylus.sone.web.ajax.GetPostAjaxPage; import net.pterodactylus.sone.web.ajax.GetReplyAjaxPage; @@ -139,6 +140,49 @@ import net.pterodactylus.sone.web.ajax.UntrustAjaxPage; import net.pterodactylus.sone.web.page.FreenetRequest; import net.pterodactylus.sone.web.page.PageToadlet; import net.pterodactylus.sone.web.page.PageToadletFactory; +import net.pterodactylus.sone.web.pages.AboutPage; +import net.pterodactylus.sone.web.pages.BookmarkPage; +import net.pterodactylus.sone.web.pages.BookmarksPage; +import net.pterodactylus.sone.web.pages.CreateAlbumPage; +import net.pterodactylus.sone.web.pages.CreatePostPage; +import net.pterodactylus.sone.web.pages.CreateReplyPage; +import net.pterodactylus.sone.web.pages.CreateSonePage; +import net.pterodactylus.sone.web.pages.DeleteAlbumPage; +import net.pterodactylus.sone.web.pages.DeleteImagePage; +import net.pterodactylus.sone.web.pages.DeletePostPage; +import net.pterodactylus.sone.web.pages.DeleteProfileFieldPage; +import net.pterodactylus.sone.web.pages.DeleteReplyPage; +import net.pterodactylus.sone.web.pages.DeleteSonePage; +import net.pterodactylus.sone.web.pages.DismissNotificationPage; +import net.pterodactylus.sone.web.pages.DistrustPage; +import net.pterodactylus.sone.web.pages.EditAlbumPage; +import net.pterodactylus.sone.web.pages.EditImagePage; +import net.pterodactylus.sone.web.pages.EditProfileFieldPage; +import net.pterodactylus.sone.web.pages.EditProfilePage; +import net.pterodactylus.sone.web.pages.FollowSonePage; +import net.pterodactylus.sone.web.pages.GetImagePage; +import net.pterodactylus.sone.web.pages.ImageBrowserPage; +import net.pterodactylus.sone.web.pages.IndexPage; +import net.pterodactylus.sone.web.pages.KnownSonesPage; +import net.pterodactylus.sone.web.pages.LikePage; +import net.pterodactylus.sone.web.pages.LockSonePage; +import net.pterodactylus.sone.web.pages.LoginPage; +import net.pterodactylus.sone.web.pages.LogoutPage; +import net.pterodactylus.sone.web.pages.MarkAsKnownPage; +import net.pterodactylus.sone.web.pages.NewPage; +import net.pterodactylus.sone.web.pages.OptionsPage; +import net.pterodactylus.sone.web.pages.RescuePage; +import net.pterodactylus.sone.web.pages.SearchPage; +import net.pterodactylus.sone.web.pages.SoneTemplatePage; +import net.pterodactylus.sone.web.pages.TrustPage; +import net.pterodactylus.sone.web.pages.UnbookmarkPage; +import net.pterodactylus.sone.web.pages.UnfollowSonePage; +import net.pterodactylus.sone.web.pages.UnlikePage; +import net.pterodactylus.sone.web.pages.UnlockSonePage; +import net.pterodactylus.sone.web.pages.UntrustPage; +import net.pterodactylus.sone.web.pages.UploadImagePage; +import net.pterodactylus.sone.web.pages.ViewPostPage; +import net.pterodactylus.sone.web.pages.ViewSonePage; import net.pterodactylus.util.notify.Notification; import net.pterodactylus.util.notify.NotificationManager; import net.pterodactylus.util.notify.TemplateNotification; @@ -214,6 +258,8 @@ public class WebInterface { private final PostVisibilityFilter postVisibilityFilter; private final ReplyVisibilityFilter replyVisibilityFilter; + private final ElementLoader elementLoader; + private final LinkedElementRenderFilter linkedElementRenderFilter; private final TimeTextConverter timeTextConverter = new TimeTextConverter(); private final L10nFilter l10nFilter = new L10nFilter(this); @@ -272,6 +318,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()); @@ -302,7 +349,7 @@ public class WebInterface { templateContextFactory.addFilter("shorten", shortenFilter = new ShortenFilter()); templateContextFactory.addFilter("render", renderFilter = new RenderFilter(getCore(), templateContextFactory)); templateContextFactory.addFilter("linked-elements", new LinkedElementsFilter(elementLoader)); - templateContextFactory.addFilter("render-linked-element", new LinkedElementRenderFilter(templateContextFactory)); + templateContextFactory.addFilter("render-linked-element", linkedElementRenderFilter = new LinkedElementRenderFilter(templateContextFactory)); templateContextFactory.addFilter("reparse", new ReparseFilter()); templateContextFactory.addFilter("unknown", new UnknownDateFilter(getL10n(), "View.Sone.Text.UnknownDate")); templateContextFactory.addFilter("format", new FormatFilter()); @@ -375,68 +422,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 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 localSones = getCore().getLocalSones(); if (localSones.size() == 1) { return localSones.iterator().next(); } - return getCurrentSone(getCurrentSession(toadletContext, create)); + return getCurrentSone(getCurrentSessionWithoutCreation(toadletContext)); } /** @@ -447,7 +458,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; } @@ -467,7 +478,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 { @@ -747,13 +758,14 @@ public class WebInterface { pageToadlets.add(pageToadletFactory.createPageToadlet(new TemplatePage("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))); pageToadlets.add(pageToadletFactory.createPageToadlet(new CreateReplyAjaxPage(this))); pageToadlets.add(pageToadletFactory.createPageToadlet(new GetReplyAjaxPage(this, replyTemplate))); pageToadlets.add(pageToadletFactory.createPageToadlet(new GetPostAjaxPage(this, postTemplate))); + pageToadlets.add(pageToadletFactory.createPageToadlet(new GetLinkedElementAjaxPage(this, elementLoader, linkedElementRenderFilter))); pageToadlets.add(pageToadletFactory.createPageToadlet(new GetTimesAjaxPage(this, timeTextConverter, l10nFilter))); pageToadlets.add(pageToadletFactory.createPageToadlet(new MarkAsKnownAjaxPage(this))); pageToadlets.add(pageToadletFactory.createPageToadlet(new DeletePostAjaxPage(this)));