- Template emptyTemplate = TemplateParser.parse(new StringReader(""));
- Template loginTemplate = TemplateParser.parse(createReader("/templates/login.html"));
- Template indexTemplate = TemplateParser.parse(createReader("/templates/index.html"));
- Template newTemplate = TemplateParser.parse(createReader("/templates/new.html"));
- Template knownSonesTemplate = TemplateParser.parse(createReader("/templates/knownSones.html"));
- Template createSoneTemplate = TemplateParser.parse(createReader("/templates/createSone.html"));
- Template createPostTemplate = TemplateParser.parse(createReader("/templates/createPost.html"));
- Template createReplyTemplate = TemplateParser.parse(createReader("/templates/createReply.html"));
- Template bookmarksTemplate = TemplateParser.parse(createReader("/templates/bookmarks.html"));
- Template searchTemplate = TemplateParser.parse(createReader("/templates/search.html"));
- Template editProfileTemplate = TemplateParser.parse(createReader("/templates/editProfile.html"));
- Template editProfileFieldTemplate = TemplateParser.parse(createReader("/templates/editProfileField.html"));
- Template deleteProfileFieldTemplate = TemplateParser.parse(createReader("/templates/deleteProfileField.html"));
- Template viewSoneTemplate = TemplateParser.parse(createReader("/templates/viewSone.html"));
- Template viewPostTemplate = TemplateParser.parse(createReader("/templates/viewPost.html"));
- Template deletePostTemplate = TemplateParser.parse(createReader("/templates/deletePost.html"));
- Template deleteReplyTemplate = TemplateParser.parse(createReader("/templates/deleteReply.html"));
- Template deleteSoneTemplate = TemplateParser.parse(createReader("/templates/deleteSone.html"));
- Template imageBrowserTemplate = TemplateParser.parse(createReader("/templates/imageBrowser.html"));
- Template createAlbumTemplate = TemplateParser.parse(createReader("/templates/createAlbum.html"));
- Template deleteAlbumTemplate = TemplateParser.parse(createReader("/templates/deleteAlbum.html"));
- Template deleteImageTemplate = TemplateParser.parse(createReader("/templates/deleteImage.html"));
- Template noPermissionTemplate = TemplateParser.parse(createReader("/templates/noPermission.html"));
- Template optionsTemplate = TemplateParser.parse(createReader("/templates/options.html"));
- Template rescueTemplate = TemplateParser.parse(createReader("/templates/rescue.html"));
- Template aboutTemplate = TemplateParser.parse(createReader("/templates/about.html"));
- Template invalidTemplate = TemplateParser.parse(createReader("/templates/invalid.html"));
- Template postTemplate = TemplateParser.parse(createReader("/templates/include/viewPost.html"));
- Template replyTemplate = TemplateParser.parse(createReader("/templates/include/viewReply.html"));
- Template openSearchTemplate = TemplateParser.parse(createReader("/templates/xml/OpenSearch.xml"));
-
- PageToadletFactory pageToadletFactory = new PageToadletFactory(sonePlugin.pluginRespirator().getHLSimpleClient(), "/Sone/");
- pageToadlets.add(pageToadletFactory.createPageToadlet(new RedirectPage<FreenetRequest>("", "index.html")));
- pageToadlets.add(pageToadletFactory.createPageToadlet(new IndexPage(indexTemplate, this), "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, SonePlugin.VERSION), "About"));
- pageToadlets.add(pageToadletFactory.createPageToadlet(new SoneTemplatePage("noPermission.html", noPermissionTemplate, "Page.NoPermission.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")));
- pageToadlets.add(pageToadletFactory.createPageToadlet(new StaticPage<FreenetRequest>("javascript/", "/static/javascript/", "text/javascript")));
- pageToadlets.add(pageToadletFactory.createPageToadlet(new StaticPage<FreenetRequest>("images/", "/static/images/", "image/png")));
- 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)));
- 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 GetTimesAjaxPage(this)));
- 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)));
- 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");
- }
-
- /**
- * 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 Core#isLocalSone(Sone) local Sone}s that are
- * referenced by {@link SonePart}s in the given text (after parsing it using
- * {@link SoneTextParser}).
- *
- * @param text
- * The text to parse
- * @return All mentioned local Sones
- */
- private Set<Sone> getMentionedSones(String text) {
- /* we need no context to find mentioned Sones. */
- Set<Sone> mentionedSones = new HashSet<Sone>();
- try {
- for (Part part : soneTextParser.parse(null, new StringReader(text))) {
- if (part instanceof SonePart) {
- mentionedSones.add(((SonePart) part).getSone());
- }
- }
- } catch (IOException ioe1) {
- logger.log(Level.WARNING, "Could not parse post text: " + text, ioe1);
- }
- return Filters.filteredSet(mentionedSones, Sone.LOCAL_SONE_FILTER);
- }
-
- /**
- * Returns the Sone insert notification for the given Sone. If no
- * notification for the given Sone exists, a new notification is created and
- * cached.
- *
- * @param sone
- * The Sone to get the insert notification for
- * @return The Sone insert notification
- */
- private TemplateNotification getSoneInsertNotification(Sone sone) {
- synchronized (soneInsertNotifications) {
- TemplateNotification templateNotification = soneInsertNotifications.get(sone);
- if (templateNotification == null) {
- templateNotification = new TemplateNotification(TemplateParser.parse(createReader("/templates/notify/soneInsertNotification.html")));
- templateNotification.set("insertSone", sone);
- soneInsertNotifications.put(sone, templateNotification);
- }
- return templateNotification;
- }
- }
-
- //
- // CORELISTENER METHODS
- //
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void newSoneFound(Sone sone) {
- newSoneNotification.add(sone);
- if (!hasFirstStartNotification()) {
- notificationManager.addNotification(newSoneNotification);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void newPostFound(Post post) {
- boolean isLocal = getCore().isLocalSone(post.getSone());
- if (isLocal) {
- localPostNotification.add(post);
- } else {
- newPostNotification.add(post);
- }
- if (!hasFirstStartNotification()) {
- notificationManager.addNotification(isLocal ? localPostNotification : newPostNotification);
- if (!getMentionedSones(post.getText()).isEmpty() && !isLocal) {
- mentionNotification.add(post);
- notificationManager.addNotification(mentionNotification);
- }
- } else {
- getCore().markPostKnown(post);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void newReplyFound(PostReply reply) {
- boolean isLocal = getCore().isLocalSone(reply.getSone());
- if (isLocal) {
- localReplyNotification.add(reply);
- } else {
- newReplyNotification.add(reply);
- }
- if (!hasFirstStartNotification()) {
- notificationManager.addNotification(isLocal ? localReplyNotification : newReplyNotification);
- if (!getMentionedSones(reply.getText()).isEmpty() && !isLocal && (reply.getPost().getSone() != null) && (reply.getTime() <= System.currentTimeMillis())) {
- mentionNotification.add(reply.getPost());
- notificationManager.addNotification(mentionNotification);
- }
- } else {
- getCore().markReplyKnown(reply);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void markSoneKnown(Sone sone) {
- newSoneNotification.remove(sone);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void markPostKnown(Post post) {
- newPostNotification.remove(post);
- localPostNotification.remove(post);
- mentionNotification.remove(post);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void markReplyKnown(PostReply reply) {
- newReplyNotification.remove(reply);
- localReplyNotification.remove(reply);
- mentionNotification.remove(reply.getPost());
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void soneRemoved(Sone sone) {
- newSoneNotification.remove(sone);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void postRemoved(Post post) {
- newPostNotification.remove(post);
- localPostNotification.remove(post);
- mentionNotification.remove(post);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void replyRemoved(PostReply reply) {
- newReplyNotification.remove(reply);
- localReplyNotification.remove(reply);
- if (!getMentionedSones(reply.getText()).isEmpty()) {
- boolean isMentioned = false;
- for (PostReply existingReply : getCore().getReplies(reply.getPost())) {
- isMentioned |= !reply.isKnown() && !getMentionedSones(existingReply.getText()).isEmpty();
- }
- if (!isMentioned) {
- mentionNotification.remove(reply.getPost());
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void soneLocked(final Sone sone) {
- Object tickerObject = Ticker.getInstance().registerEvent(System.currentTimeMillis() + (5 * 60) * 1000, new Runnable() {
-
- @Override
- @SuppressWarnings("synthetic-access")
- public void run() {
- lockedSonesNotification.add(sone);
- lockedSonesTickerObjects.remove(sone);
- notificationManager.addNotification(lockedSonesNotification);
- }
- }, "Sone Locked Notification");
- lockedSonesTickerObjects.put(sone, tickerObject);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void soneUnlocked(Sone sone) {
- lockedSonesNotification.remove(sone);
- Ticker.getInstance().deregisterEvent(lockedSonesTickerObjects.remove(sone));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void soneInserting(Sone sone) {
- TemplateNotification soneInsertNotification = getSoneInsertNotification(sone);
- soneInsertNotification.set("soneStatus", "inserting");
- if (sone.getOptions().getBooleanOption("EnableSoneInsertNotifications").get()) {
- notificationManager.addNotification(soneInsertNotification);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void soneInserted(Sone sone, long insertDuration) {
- TemplateNotification soneInsertNotification = getSoneInsertNotification(sone);
- soneInsertNotification.set("soneStatus", "inserted");
- soneInsertNotification.set("insertDuration", insertDuration / 1000);
- if (sone.getOptions().getBooleanOption("EnableSoneInsertNotifications").get()) {
- notificationManager.addNotification(soneInsertNotification);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void soneInsertAborted(Sone sone, Throwable cause) {
- TemplateNotification soneInsertNotification = getSoneInsertNotification(sone);
- soneInsertNotification.set("soneStatus", "insert-aborted");
- soneInsertNotification.set("insert-error", cause);
- if (sone.getOptions().getBooleanOption("EnableSoneInsertNotifications").get()) {
- notificationManager.addNotification(soneInsertNotification);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void updateFound(Version version, long releaseTime, long latestEdition) {
- newVersionNotification.getTemplateContext().set("latestVersion", version);
- newVersionNotification.getTemplateContext().set("latestEdition", latestEdition);
- newVersionNotification.getTemplateContext().set("releaseTime", releaseTime);
- notificationManager.addNotification(newVersionNotification);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void imageInsertStarted(Image image) {
- insertingImagesNotification.add(image);
- notificationManager.addNotification(insertingImagesNotification);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void imageInsertAborted(Image image) {
- insertingImagesNotification.remove(image);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void imageInsertFinished(Image image) {
- insertingImagesNotification.remove(image);
- insertedImagesNotification.add(image);
- notificationManager.addNotification(insertedImagesNotification);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void imageInsertFailed(Image image, Throwable cause) {
- insertingImagesNotification.remove(image);
- imageInsertFailedNotification.add(image);
- notificationManager.addNotification(imageInsertFailedNotification);
- }
-
- /**
- * Template provider implementation that uses
- * {@link WebInterface#createReader(String)} to load templates for
- * inclusion.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
- */
- private class ClassPathTemplateProvider implements Provider {
-
- /** Cache for templates. */
- private final Cache<String, Template> templateCache = new MemoryCache<String, Template>(new ValueRetriever<String, Template>() {
-
- @Override
- @SuppressWarnings("synthetic-access")
- public CacheItem<Template> retrieve(String key) throws CacheException {
- Template template = findTemplate(key);
- if (template != null) {
- return new DefaultCacheItem<Template>(template);
- }
- return null;
- }
- });
-
- /**
- * {@inheritDoc}
- */
- @Override
- @SuppressWarnings("synthetic-access")
- public Template getTemplate(TemplateContext templateContext, String templateName) {
- try {
- return templateCache.get(templateName);
- } catch (CacheException ce1) {
- logger.log(Level.WARNING, "Could not get template for " + templateName + "!", ce1);
- return null;
- }
- }
-
- /**
- * Locates a template in the class path.
- *
- * @param templateName
- * The name of the template to load
- * @return The loaded template, or {@code null} if no template could be
- * found
- */
- @SuppressWarnings("synthetic-access")
- private Template findTemplate(String templateName) {
- Reader templateReader = createReader("/templates/" + templateName);
- if (templateReader == null) {
- return null;
- }
- Template template = null;
- try {
- template = TemplateParser.parse(templateReader);
- } catch (TemplateException te1) {
- logger.log(Level.WARNING, "Could not parse template “" + templateName + "” for inclusion!", te1);
- }
- return template;
- }
-
+ Template postTemplate = loaders.loadTemplate("/templates/include/viewPost.html");
+ Template replyTemplate = loaders.loadTemplate("/templates/include/viewReply.html");
+ Template openSearchTemplate = loaders.loadTemplate("/templates/xml/OpenSearch.xml");
+
+ pageToadletRegistry.addPage(new RedirectPage<FreenetRequest>("", "index.html"));
+ pageToadletRegistry.addPage(new IndexPage(this, loaders, templateRenderer, postVisibilityFilter));
+ pageToadletRegistry.addPage(new NewPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new CreateSonePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new KnownSonesPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new EditProfilePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new EditProfileFieldPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new DeleteProfileFieldPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new CreatePostPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new CreateReplyPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new ViewSonePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new ViewPostPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new LikePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new UnlikePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new DeletePostPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new DeleteReplyPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new LockSonePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new UnlockSonePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new FollowSonePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new UnfollowSonePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new ImageBrowserPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new CreateAlbumPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new EditAlbumPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new DeleteAlbumPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new UploadImagePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new EditImagePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new DeleteImagePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new MarkAsKnownPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new BookmarkPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new UnbookmarkPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new BookmarksPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new SearchPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new DeleteSonePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new LoginPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new LogoutPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new OptionsPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new RescuePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new AboutPage(this, loaders, templateRenderer, new PluginVersion(SonePlugin.getPluginVersion()), new PluginYear(sonePlugin.getYear()), new PluginHomepage(sonePlugin.getHomepage())));
+ pageToadletRegistry.addPage(new InvalidPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new NoPermissionPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new EmptyImageTitlePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new EmptyAlbumTitlePage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new DismissNotificationPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addPage(new DebugPage(this, loaders, templateRenderer));
+ pageToadletRegistry.addDebugPage(new MetricsPage(this, loaders, templateRenderer, metricRegistry));
+ pageToadletRegistry.addPage(loaders.<FreenetRequest>loadStaticPage("css/", "/static/css/", "text/css"));
+ pageToadletRegistry.addPage(loaders.<FreenetRequest>loadStaticPage("javascript/", "/static/javascript/", "text/javascript"));
+ pageToadletRegistry.addPage(loaders.<FreenetRequest>loadStaticPage("images/", "/static/images/", "image/png"));
+ pageToadletRegistry.addPage(new TemplatePage<FreenetRequest>("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 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();
+ }
+
+ @Subscribe
+ public void debugActivated(@Nonnull DebugActivatedEvent debugActivatedEvent) {
+ pageToadletRegistry.activateDebugMode();