From 5e551a748ec4421f370480ac2de5f11bfc99c9d4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Wed, 19 Jan 2011 16:08:34 +0100 Subject: [PATCH] Replace two separate AJAX pages by one that handles them both (and more). --- .../net/pterodactylus/sone/web/WebInterface.java | 6 +- .../sone/web/ajax/MarkAsKnownAjaxPage.java | 88 ++++++++++++++++++++++ .../sone/web/ajax/MarkPostAsKnownPage.java | 55 -------------- .../sone/web/ajax/MarkReplyAsKnownPage.java | 55 -------------- src/main/resources/static/javascript/sone.js | 4 +- 5 files changed, 92 insertions(+), 116 deletions(-) create mode 100644 src/main/java/net/pterodactylus/sone/web/ajax/MarkAsKnownAjaxPage.java delete mode 100644 src/main/java/net/pterodactylus/sone/web/ajax/MarkPostAsKnownPage.java delete mode 100644 src/main/java/net/pterodactylus/sone/web/ajax/MarkReplyAsKnownPage.java diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index 0b3b8e1..14c2c09 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -74,8 +74,7 @@ import net.pterodactylus.sone.web.ajax.GetStatusAjaxPage; import net.pterodactylus.sone.web.ajax.GetTranslationPage; import net.pterodactylus.sone.web.ajax.LikeAjaxPage; import net.pterodactylus.sone.web.ajax.LockSoneAjaxPage; -import net.pterodactylus.sone.web.ajax.MarkPostAsKnownPage; -import net.pterodactylus.sone.web.ajax.MarkReplyAsKnownPage; +import net.pterodactylus.sone.web.ajax.MarkAsKnownAjaxPage; import net.pterodactylus.sone.web.ajax.MoveProfileFieldAjaxPage; import net.pterodactylus.sone.web.ajax.TrustAjaxPage; import net.pterodactylus.sone.web.ajax.UnfollowSoneAjaxPage; @@ -563,8 +562,7 @@ public class WebInterface implements CoreListener { 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 MarkPostAsKnownPage(this))); - pageToadlets.add(pageToadletFactory.createPageToadlet(new MarkReplyAsKnownPage(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))); diff --git a/src/main/java/net/pterodactylus/sone/web/ajax/MarkAsKnownAjaxPage.java b/src/main/java/net/pterodactylus/sone/web/ajax/MarkAsKnownAjaxPage.java new file mode 100644 index 0000000..5bcb55b --- /dev/null +++ b/src/main/java/net/pterodactylus/sone/web/ajax/MarkAsKnownAjaxPage.java @@ -0,0 +1,88 @@ +/* + * Sone - MarkAsKnownAjaxPage.java - Copyright © 2011 David Roden + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.pterodactylus.sone.web.ajax; + +import net.pterodactylus.sone.core.Core; +import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.Reply; +import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.web.WebInterface; +import net.pterodactylus.util.json.JsonObject; + +/** + * AJAX page that lets the user mark a number of {@link Sone}s, {@link Post}s, + * or {@link Reply}s as known. + * + * @author David ‘Bombe’ Roden + */ +public class MarkAsKnownAjaxPage extends JsonPage { + + /** + * Creates a new “mark as known” AJAX page. + * + * @param webInterface + * The Sone web interface + */ + public MarkAsKnownAjaxPage(WebInterface webInterface) { + super("markAsKnown.ajax", webInterface); + } + + /** + * {@inheritDoc} + */ + @Override + protected JsonObject createJsonObject(Request request) { + String type = request.getHttpRequest().getParam("type"); + if (!type.equals("sone") && !type.equals("post") && !type.equals("reply")) { + return createErrorJsonObject("invalid-type"); + } + String[] ids = request.getHttpRequest().getParam("ids").split(" "); + Core core = webInterface.getCore(); + for (String id : ids) { + if (type.equals("post")) { + Post post = core.getPost(id, false); + if (post == null) { + continue; + } + core.markPostKnown(post); + } else if (type.equals("reply")) { + Reply reply = core.getReply(id, false); + if (reply == null) { + continue; + } + core.markReplyKnown(reply); + } else if (type.equals("sone")) { + Sone sone = core.getSone(id, false); + if (sone == null) { + continue; + } + core.markSoneKnown(sone); + } + } + return createSuccessJsonObject(); + } + + /** + * {@inheritDoc} + */ + @Override + protected boolean requiresLogin() { + return false; + } + +} diff --git a/src/main/java/net/pterodactylus/sone/web/ajax/MarkPostAsKnownPage.java b/src/main/java/net/pterodactylus/sone/web/ajax/MarkPostAsKnownPage.java deleted file mode 100644 index c2b0ca3..0000000 --- a/src/main/java/net/pterodactylus/sone/web/ajax/MarkPostAsKnownPage.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Sone - MarkPostAsKnownPage.java - Copyright © 2010 David Roden - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package net.pterodactylus.sone.web.ajax; - -import net.pterodactylus.sone.data.Post; -import net.pterodactylus.sone.web.WebInterface; -import net.pterodactylus.util.json.JsonObject; - -/** - * AJAX handler that marks a {@link Post} as known. - * - * @author David ‘Bombe’ Roden - */ -public class MarkPostAsKnownPage extends JsonPage { - - /** - * Creates a new “mark post as known” AJAX handler. - * - * @param webInterface - * The Sone web interface - */ - public MarkPostAsKnownPage(WebInterface webInterface) { - super("markPostAsKnown.ajax", webInterface); - } - - /** - * {@inheritDoc} - */ - @Override - protected JsonObject createJsonObject(Request request) { - String postId = request.getHttpRequest().getParam("post"); - Post post = webInterface.getCore().getPost(postId, false); - if (post == null) { - return createErrorJsonObject("invalid-post-id"); - } - webInterface.getCore().markPostKnown(post); - return createSuccessJsonObject(); - } - -} diff --git a/src/main/java/net/pterodactylus/sone/web/ajax/MarkReplyAsKnownPage.java b/src/main/java/net/pterodactylus/sone/web/ajax/MarkReplyAsKnownPage.java deleted file mode 100644 index 6a4f72b..0000000 --- a/src/main/java/net/pterodactylus/sone/web/ajax/MarkReplyAsKnownPage.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Sone - MarkPostAsKnownPage.java - Copyright © 2010 David Roden - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package net.pterodactylus.sone.web.ajax; - -import net.pterodactylus.sone.data.Reply; -import net.pterodactylus.sone.web.WebInterface; -import net.pterodactylus.util.json.JsonObject; - -/** - * AJAX handler that marks a {@link Reply} as known. - * - * @author David ‘Bombe’ Roden - */ -public class MarkReplyAsKnownPage extends JsonPage { - - /** - * Creates a new “mark reply as known” AJAX handler. - * - * @param webInterface - * The Sone web interface - */ - public MarkReplyAsKnownPage(WebInterface webInterface) { - super("markReplyAsKnown.ajax", webInterface); - } - - /** - * {@inheritDoc} - */ - @Override - protected JsonObject createJsonObject(Request request) { - String replyId = request.getHttpRequest().getParam("reply"); - Reply reply = webInterface.getCore().getReply(replyId, false); - if (reply == null) { - return createErrorJsonObject("invalid-reply-id"); - } - webInterface.getCore().markReplyKnown(reply); - return createSuccessJsonObject(); - } - -} diff --git a/src/main/resources/static/javascript/sone.js b/src/main/resources/static/javascript/sone.js index b48dac3..e084d87 100644 --- a/src/main/resources/static/javascript/sone.js +++ b/src/main/resources/static/javascript/sone.js @@ -926,7 +926,7 @@ function markPostAsKnown(postElements) { postElement = this; if ($(postElement).hasClass("new")) { (function(postElement) { - $.getJSON("markPostAsKnown.ajax", {"formPassword": getFormPassword(), "post": getPostId(postElement)}, function(data, textStatus) { + $.getJSON("markAsKnown.ajax", {"formPassword": getFormPassword(), "type": "post", "id": getPostId(postElement)}, function(data, textStatus) { $(postElement).removeClass("new"); $(".click-to-show", postElement).removeClass("new"); }); @@ -941,7 +941,7 @@ function markReplyAsKnown(replyElements) { replyElement = this; if ($(replyElement).hasClass("new")) { (function(replyElement) { - $.getJSON("markReplyAsKnown.ajax", {"formPassword": getFormPassword(), "reply": getReplyId(replyElement)}, function(data, textStatus) { + $.getJSON("markAsKnown.ajax", {"formPassword": getFormPassword(), "type": "reply", "id": getReplyId(replyElement)}, function(data, textStatus) { $(replyElement).removeClass("new"); }); })(replyElement); -- 2.7.4