X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterface.java;h=d4f3f5587b61eb71526a6a75d7afa9b707a0717a;hp=fb17e9384fc0e78322488361f884902715551379;hb=6a3f1fede0cda5cd6ed56204aa1dd37a19813cb9;hpb=e3dced431a5e8622fc1de958f7a104a47ea73ec0 diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index fb17e93..d4f3f55 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -22,12 +22,10 @@ import static java.util.logging.Logger.getLogger; import static net.pterodactylus.util.template.TemplateParser.parse; import java.io.StringReader; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; import java.util.TimeZone; @@ -61,49 +59,24 @@ import net.pterodactylus.sone.core.event.SoneLockedEvent; import net.pterodactylus.sone.core.event.SoneRemovedEvent; import net.pterodactylus.sone.core.event.SoneUnlockedEvent; import net.pterodactylus.sone.core.event.UpdateFoundEvent; -import net.pterodactylus.sone.data.Album; import net.pterodactylus.sone.data.Image; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.PostReply; -import net.pterodactylus.sone.data.Profile; -import net.pterodactylus.sone.data.Reply; 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.Loaders; import net.pterodactylus.sone.main.PluginHomepage; import net.pterodactylus.sone.main.PluginVersion; import net.pterodactylus.sone.main.PluginYear; -import net.pterodactylus.sone.main.ReparseFilter; import net.pterodactylus.sone.main.SonePlugin; import net.pterodactylus.sone.notify.ListNotification; import net.pterodactylus.sone.notify.ListNotificationFilter; import net.pterodactylus.sone.notify.PostVisibilityFilter; import net.pterodactylus.sone.notify.ReplyVisibilityFilter; -import net.pterodactylus.sone.template.AlbumAccessor; -import net.pterodactylus.sone.template.CollectionAccessor; -import net.pterodactylus.sone.template.CssClassNameFilter; -import net.pterodactylus.sone.template.HttpRequestAccessor; -import net.pterodactylus.sone.template.IdentityAccessor; -import net.pterodactylus.sone.template.ImageAccessor; -import net.pterodactylus.sone.template.ImageLinkFilter; -import net.pterodactylus.sone.template.JavascriptFilter; import net.pterodactylus.sone.template.LinkedElementRenderFilter; -import net.pterodactylus.sone.template.LinkedElementsFilter; import net.pterodactylus.sone.template.ParserFilter; -import net.pterodactylus.sone.template.PostAccessor; -import net.pterodactylus.sone.template.ProfileAccessor; import net.pterodactylus.sone.template.RenderFilter; -import net.pterodactylus.sone.template.ReplyAccessor; -import net.pterodactylus.sone.template.ReplyGroupFilter; -import net.pterodactylus.sone.template.RequestChangeFilter; import net.pterodactylus.sone.template.ShortenFilter; -import net.pterodactylus.sone.template.SoneAccessor; -import net.pterodactylus.sone.template.SubstringFilter; -import net.pterodactylus.sone.template.TrustAccessor; -import net.pterodactylus.sone.template.UniqueElementFilter; -import net.pterodactylus.sone.template.UnknownDateFilter; import net.pterodactylus.sone.text.Part; import net.pterodactylus.sone.text.SonePart; import net.pterodactylus.sone.text.SoneTextParser; @@ -139,8 +112,6 @@ import net.pterodactylus.sone.web.ajax.UnlikeAjaxPage; import net.pterodactylus.sone.web.ajax.UnlockSoneAjaxPage; 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; @@ -187,30 +158,15 @@ 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; -import net.pterodactylus.util.template.CollectionSortFilter; -import net.pterodactylus.util.template.ContainsFilter; -import net.pterodactylus.util.template.DateFilter; -import net.pterodactylus.util.template.FormatFilter; -import net.pterodactylus.util.template.HtmlFilter; -import net.pterodactylus.util.template.MatchFilter; -import net.pterodactylus.util.template.ModFilter; -import net.pterodactylus.util.template.PaginationFilter; -import net.pterodactylus.util.template.ReflectionAccessor; -import net.pterodactylus.util.template.ReplaceFilter; -import net.pterodactylus.util.template.StoreFilter; import net.pterodactylus.util.template.Template; import net.pterodactylus.util.template.TemplateContextFactory; -import net.pterodactylus.util.template.TemplateProvider; -import net.pterodactylus.util.template.XmlFilter; import net.pterodactylus.util.web.RedirectPage; import net.pterodactylus.util.web.TemplatePage; import freenet.clients.http.SessionManager; import freenet.clients.http.SessionManager.Session; -import freenet.clients.http.ToadletContainer; import freenet.clients.http.ToadletContext; import freenet.l10n.BaseL10n; -import freenet.support.api.HTTPRequest; import com.google.common.base.Optional; import com.google.common.collect.Collections2; @@ -236,9 +192,6 @@ public class WebInterface implements SessionProvider { /** The Sone plugin. */ private final SonePlugin sonePlugin; - /** The registered toadlets. */ - private final List pageToadlets = new ArrayList<>(); - /** The form password. */ private final String formPassword; @@ -262,6 +215,8 @@ public class WebInterface implements SessionProvider { private final TimeTextConverter timeTextConverter = new TimeTextConverter(); private final L10nFilter l10nFilter; + private final PageToadletRegistry pageToadletRegistry; + /** The “new Sone” notification. */ private final ListNotification newSoneNotification; @@ -304,64 +259,30 @@ public class WebInterface implements SessionProvider { /** Scheduled executor for time-based notifications. */ private final ScheduledExecutorService ticker = Executors.newScheduledThreadPool(1); - /** - * Creates a new web interface. - * - * @param sonePlugin - * The Sone plugin - */ @Inject - public WebInterface(SonePlugin sonePlugin, Loaders loaders, ListNotificationFilter listNotificationFilter, PostVisibilityFilter postVisibilityFilter, ReplyVisibilityFilter replyVisibilityFilter, ElementLoader elementLoader) { + public WebInterface(SonePlugin sonePlugin, Loaders loaders, ListNotificationFilter listNotificationFilter, + PostVisibilityFilter postVisibilityFilter, ReplyVisibilityFilter replyVisibilityFilter, + ElementLoader elementLoader, TemplateContextFactory templateContextFactory, + ParserFilter parserFilter, ShortenFilter shortenFilter, + RenderFilter renderFilter, + LinkedElementRenderFilter linkedElementRenderFilter, + PageToadletRegistry pageToadletRegistry) { this.sonePlugin = sonePlugin; this.loaders = loaders; this.listNotificationFilter = listNotificationFilter; this.postVisibilityFilter = postVisibilityFilter; this.replyVisibilityFilter = replyVisibilityFilter; this.elementLoader = elementLoader; + this.parserFilter = parserFilter; + this.shortenFilter = shortenFilter; + this.renderFilter = renderFilter; + this.linkedElementRenderFilter = linkedElementRenderFilter; + this.pageToadletRegistry = pageToadletRegistry; formPassword = sonePlugin.pluginRespirator().getToadletContainer().getFormPassword(); soneTextParser = new SoneTextParser(getCore(), getCore()); l10nFilter = new L10nFilter(getL10n()); - templateContextFactory = new TemplateContextFactory(); - templateContextFactory.addAccessor(Object.class, new ReflectionAccessor()); - templateContextFactory.addAccessor(Collection.class, new CollectionAccessor()); - templateContextFactory.addAccessor(Sone.class, new SoneAccessor(getCore(), new TimeTextConverter())); - templateContextFactory.addAccessor(Post.class, new PostAccessor(getCore())); - templateContextFactory.addAccessor(Reply.class, new ReplyAccessor(getCore())); - templateContextFactory.addAccessor(Album.class, new AlbumAccessor()); - templateContextFactory.addAccessor(Image.class, new ImageAccessor()); - templateContextFactory.addAccessor(Identity.class, new IdentityAccessor(getCore())); - templateContextFactory.addAccessor(Trust.class, new TrustAccessor()); - templateContextFactory.addAccessor(HTTPRequest.class, new HttpRequestAccessor()); - templateContextFactory.addAccessor(Profile.class, new ProfileAccessor(getCore())); - templateContextFactory.addFilter("date", new DateFilter()); - templateContextFactory.addFilter("html", new HtmlFilter()); - templateContextFactory.addFilter("replace", new ReplaceFilter()); - templateContextFactory.addFilter("store", new StoreFilter()); - templateContextFactory.addFilter("l10n", l10nFilter); - templateContextFactory.addFilter("substring", new SubstringFilter()); - templateContextFactory.addFilter("xml", new XmlFilter()); - templateContextFactory.addFilter("change", new RequestChangeFilter()); - templateContextFactory.addFilter("match", new MatchFilter()); - templateContextFactory.addFilter("css", new CssClassNameFilter()); - templateContextFactory.addFilter("js", new JavascriptFilter()); - templateContextFactory.addFilter("parse", parserFilter = new ParserFilter(getCore(), soneTextParser)); - templateContextFactory.addFilter("shorten", shortenFilter = new ShortenFilter()); - templateContextFactory.addFilter("render", renderFilter = new RenderFilter(getCore(), soneTextParser, new HtmlFilter())); - templateContextFactory.addFilter("linked-elements", new LinkedElementsFilter(elementLoader)); - 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()); - templateContextFactory.addFilter("sort", new CollectionSortFilter()); - templateContextFactory.addFilter("image-link", new ImageLinkFilter(getCore(), templateContextFactory)); - templateContextFactory.addFilter("replyGroup", new ReplyGroupFilter()); - templateContextFactory.addFilter("in", new ContainsFilter()); - templateContextFactory.addFilter("unique", new UniqueElementFilter()); - templateContextFactory.addFilter("mod", new ModFilter()); - templateContextFactory.addFilter("paginate", new PaginationFilter()); - templateContextFactory.addProvider(TemplateProvider.TEMPLATE_CONTEXT_PROVIDER); - templateContextFactory.addProvider(loaders.getTemplateProvider()); + this.templateContextFactory = templateContextFactory; templateContextFactory.addTemplateObject("webInterface", this); templateContextFactory.addTemplateObject("formPassword", formPassword); @@ -668,7 +589,7 @@ public class WebInterface implements SessionProvider { * Stops the web interface and unregisters all toadlets. */ public void stop() { - unregisterToadlets(); + pageToadletRegistry.unregisterToadlets(); ticker.shutdownNow(); } @@ -713,110 +634,89 @@ public class WebInterface implements SessionProvider { Template replyTemplate = loaders.loadTemplate("/templates/include/viewReply.html"); Template openSearchTemplate = loaders.loadTemplate("/templates/xml/OpenSearch.xml"); - PageToadletFactory pageToadletFactory = new PageToadletFactory(sonePlugin.pluginRespirator().getHLSimpleClient(), "/Sone/"); - pageToadlets.add(pageToadletFactory.createPageToadlet(new RedirectPage("", "index.html"))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new IndexPage(indexTemplate, this, postVisibilityFilter), "Index")); - pageToadlets.add(pageToadletFactory.createPageToadlet(new NewPage(newTemplate, this), "New")); - pageToadlets.add(pageToadletFactory.createPageToadlet(new CreateSonePage(createSoneTemplate, this), "CreateSone")); - pageToadlets.add(pageToadletFactory.createPageToadlet(new KnownSonesPage(knownSonesTemplate, this), "KnownSones")); - pageToadlets.add(pageToadletFactory.createPageToadlet(new EditProfilePage(editProfileTemplate, this), "EditProfile")); - pageToadlets.add(pageToadletFactory.createPageToadlet(new EditProfileFieldPage(editProfileFieldTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DeleteProfileFieldPage(deleteProfileFieldTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new CreatePostPage(createPostTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new CreateReplyPage(createReplyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new ViewSonePage(viewSoneTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new ViewPostPage(viewPostTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new LikePage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UnlikePage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DeletePostPage(deletePostTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DeleteReplyPage(deleteReplyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new LockSonePage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UnlockSonePage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new FollowSonePage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UnfollowSonePage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new ImageBrowserPage(imageBrowserTemplate, this), "ImageBrowser")); - pageToadlets.add(pageToadletFactory.createPageToadlet(new CreateAlbumPage(createAlbumTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new EditAlbumPage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DeleteAlbumPage(deleteAlbumTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UploadImagePage(invalidTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new EditImagePage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DeleteImagePage(deleteImageTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new TrustPage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DistrustPage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UntrustPage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new MarkAsKnownPage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new BookmarkPage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UnbookmarkPage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new BookmarksPage(bookmarksTemplate, this), "Bookmarks")); - pageToadlets.add(pageToadletFactory.createPageToadlet(new SearchPage(searchTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DeleteSonePage(deleteSoneTemplate, this), "DeleteSone")); - pageToadlets.add(pageToadletFactory.createPageToadlet(new LoginPage(loginTemplate, this), "Login")); - 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, new PluginVersion(SonePlugin.getPluginVersion()), new PluginYear(sonePlugin.getYear()), new PluginHomepage(sonePlugin.getHomepage())), "About")); - pageToadlets.add(pageToadletFactory.createPageToadlet(new SoneTemplatePage("noPermission.html", this, noPermissionTemplate, "Page.NoPermission.Title"))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new SoneTemplatePage("emptyImageTitle.html", this, emptyImageTitleTemplate, "Page.EmptyImageTitle.Title"))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new SoneTemplatePage("emptyAlbumTitle.html", this, emptyAlbumTitleTemplate, "Page.EmptyAlbumTitle.Title"))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DismissNotificationPage(emptyTemplate, this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new SoneTemplatePage("invalid.html", this, invalidTemplate, "Page.Invalid.Title"))); - pageToadlets.add(pageToadletFactory.createPageToadlet(loaders.loadStaticPage("css/", "/static/css/", "text/css"))); - pageToadlets.add(pageToadletFactory.createPageToadlet(loaders.loadStaticPage("javascript/", "/static/javascript/", "text/javascript"))); - pageToadlets.add(pageToadletFactory.createPageToadlet(loaders.loadStaticPage("images/", "/static/images/", "image/png"))); - 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 GetTranslationAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new GetStatusAjaxPage(this, elementLoader, timeTextConverter, l10nFilter, TimeZone.getDefault()))); - 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, TimeZone.getDefault()))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new MarkAsKnownAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DeletePostAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DeleteReplyAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new LockSoneAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UnlockSoneAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new FollowSoneAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UnfollowSoneAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new EditAlbumAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new EditImageAjaxPage(this, parserFilter, shortenFilter, renderFilter))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new TrustAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DistrustAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UntrustAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new LikeAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UnlikeAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new GetLikesAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new BookmarkAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new UnbookmarkAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new EditProfileFieldAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new DeleteProfileFieldAjaxPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new MoveProfileFieldAjaxPage(this))); - - ToadletContainer toadletContainer = sonePlugin.pluginRespirator().getToadletContainer(); - toadletContainer.getPageMaker().addNavigationCategory("/Sone/index.html", "Navigation.Menu.Sone.Name", "Navigation.Menu.Sone.Tooltip", sonePlugin); - for (PageToadlet toadlet : pageToadlets) { - String menuName = toadlet.getMenuName(); - if (menuName != null) { - toadletContainer.register(toadlet, "Navigation.Menu.Sone.Name", toadlet.path(), true, "Navigation.Menu.Sone.Item." + menuName + ".Name", "Navigation.Menu.Sone.Item." + menuName + ".Tooltip", false, toadlet); - } else { - toadletContainer.register(toadlet, null, toadlet.path(), true, false); - } - } - } - - /** - * Unregisters all toadlets. - */ - private void unregisterToadlets() { - ToadletContainer toadletContainer = sonePlugin.pluginRespirator().getToadletContainer(); - for (PageToadlet pageToadlet : pageToadlets) { - toadletContainer.unregister(pageToadlet); - } - toadletContainer.getPageMaker().removeNavigationCategory("Navigation.Menu.Sone.Name"); + pageToadletRegistry.addPage(new RedirectPage("", "index.html")); + pageToadletRegistry.addPage(new IndexPage(indexTemplate, this, loaders, postVisibilityFilter)); + pageToadletRegistry.addPage(new NewPage(newTemplate, this, loaders)); + pageToadletRegistry.addPage(new CreateSonePage(createSoneTemplate, this, loaders)); + pageToadletRegistry.addPage(new KnownSonesPage(knownSonesTemplate, this, loaders)); + pageToadletRegistry.addPage(new EditProfilePage(editProfileTemplate, this, loaders)); + pageToadletRegistry.addPage(new EditProfileFieldPage(editProfileFieldTemplate, this, loaders)); + pageToadletRegistry.addPage(new DeleteProfileFieldPage(deleteProfileFieldTemplate, this, loaders)); + pageToadletRegistry.addPage(new CreatePostPage(createPostTemplate, this, loaders)); + pageToadletRegistry.addPage(new CreateReplyPage(createReplyTemplate, this, loaders)); + pageToadletRegistry.addPage(new ViewSonePage(viewSoneTemplate, this, loaders)); + pageToadletRegistry.addPage(new ViewPostPage(viewPostTemplate, this, loaders)); + pageToadletRegistry.addPage(new LikePage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new UnlikePage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new DeletePostPage(deletePostTemplate, this, loaders)); + pageToadletRegistry.addPage(new DeleteReplyPage(deleteReplyTemplate, this, loaders)); + pageToadletRegistry.addPage(new LockSonePage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new UnlockSonePage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new FollowSonePage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new UnfollowSonePage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new ImageBrowserPage(imageBrowserTemplate, this, loaders)); + pageToadletRegistry.addPage(new CreateAlbumPage(createAlbumTemplate, this, loaders)); + pageToadletRegistry.addPage(new EditAlbumPage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new DeleteAlbumPage(deleteAlbumTemplate, this, loaders)); + pageToadletRegistry.addPage(new UploadImagePage(invalidTemplate, this, loaders)); + pageToadletRegistry.addPage(new EditImagePage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new DeleteImagePage(deleteImageTemplate, this, loaders)); + pageToadletRegistry.addPage(new TrustPage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new DistrustPage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new UntrustPage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new MarkAsKnownPage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new BookmarkPage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new UnbookmarkPage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new BookmarksPage(bookmarksTemplate, this, loaders)); + pageToadletRegistry.addPage(new SearchPage(searchTemplate, this, loaders)); + pageToadletRegistry.addPage(new DeleteSonePage(deleteSoneTemplate, this, loaders)); + pageToadletRegistry.addPage(new LoginPage(loginTemplate, this, loaders)); + pageToadletRegistry.addPage(new LogoutPage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new OptionsPage(optionsTemplate, this, loaders)); + pageToadletRegistry.addPage(new RescuePage(rescueTemplate, this, loaders)); + pageToadletRegistry.addPage(new AboutPage(aboutTemplate, this, loaders, new PluginVersion(SonePlugin.getPluginVersion()), new PluginYear(sonePlugin.getYear()), new PluginHomepage(sonePlugin.getHomepage()))); + pageToadletRegistry.addPage(new SoneTemplatePage("noPermission.html", this, loaders, noPermissionTemplate, "Page.NoPermission.Title")); + pageToadletRegistry.addPage(new SoneTemplatePage("emptyImageTitle.html", this, loaders, emptyImageTitleTemplate, "Page.EmptyImageTitle.Title")); + pageToadletRegistry.addPage(new SoneTemplatePage("emptyAlbumTitle.html", this, loaders, emptyAlbumTitleTemplate, "Page.EmptyAlbumTitle.Title")); + pageToadletRegistry.addPage(new DismissNotificationPage(emptyTemplate, this, loaders)); + pageToadletRegistry.addPage(new SoneTemplatePage("invalid.html", this, loaders, invalidTemplate, "Page.Invalid.Title")); + pageToadletRegistry.addPage(loaders.loadStaticPage("css/", "/static/css/", "text/css")); + pageToadletRegistry.addPage(loaders.loadStaticPage("javascript/", "/static/javascript/", "text/javascript")); + pageToadletRegistry.addPage(loaders.loadStaticPage("images/", "/static/images/", "image/png")); + pageToadletRegistry.addPage(new TemplatePage("OpenSearch.xml", "application/opensearchdescription+xml", templateContextFactory, openSearchTemplate)); + pageToadletRegistry.addPage(new GetImagePage(this)); + pageToadletRegistry.addPage(new GetTranslationAjaxPage(this)); + pageToadletRegistry.addPage(new GetStatusAjaxPage(this, elementLoader, timeTextConverter, l10nFilter, TimeZone.getDefault())); + pageToadletRegistry.addPage(new GetNotificationsAjaxPage(this)); + pageToadletRegistry.addPage(new DismissNotificationAjaxPage(this)); + pageToadletRegistry.addPage(new CreatePostAjaxPage(this)); + pageToadletRegistry.addPage(new CreateReplyAjaxPage(this)); + pageToadletRegistry.addPage(new GetReplyAjaxPage(this, replyTemplate)); + pageToadletRegistry.addPage(new GetPostAjaxPage(this, postTemplate)); + pageToadletRegistry.addPage(new GetLinkedElementAjaxPage(this, elementLoader, linkedElementRenderFilter)); + pageToadletRegistry.addPage(new GetTimesAjaxPage(this, timeTextConverter, l10nFilter, TimeZone.getDefault())); + pageToadletRegistry.addPage(new MarkAsKnownAjaxPage(this)); + pageToadletRegistry.addPage(new DeletePostAjaxPage(this)); + pageToadletRegistry.addPage(new DeleteReplyAjaxPage(this)); + pageToadletRegistry.addPage(new LockSoneAjaxPage(this)); + pageToadletRegistry.addPage(new UnlockSoneAjaxPage(this)); + pageToadletRegistry.addPage(new FollowSoneAjaxPage(this)); + pageToadletRegistry.addPage(new UnfollowSoneAjaxPage(this)); + pageToadletRegistry.addPage(new EditAlbumAjaxPage(this)); + pageToadletRegistry.addPage(new EditImageAjaxPage(this, parserFilter, shortenFilter, renderFilter)); + pageToadletRegistry.addPage(new TrustAjaxPage(this)); + pageToadletRegistry.addPage(new DistrustAjaxPage(this)); + pageToadletRegistry.addPage(new UntrustAjaxPage(this)); + pageToadletRegistry.addPage(new LikeAjaxPage(this)); + pageToadletRegistry.addPage(new UnlikeAjaxPage(this)); + pageToadletRegistry.addPage(new GetLikesAjaxPage(this)); + pageToadletRegistry.addPage(new BookmarkAjaxPage(this)); + pageToadletRegistry.addPage(new UnbookmarkAjaxPage(this)); + pageToadletRegistry.addPage(new EditProfileFieldAjaxPage(this)); + pageToadletRegistry.addPage(new DeleteProfileFieldAjaxPage(this)); + pageToadletRegistry.addPage(new MoveProfileFieldAjaxPage(this)); + + pageToadletRegistry.registerToadlets(); } /**