Implement Sone blacklisting via JavaScript.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 27 Oct 2010 16:01:54 +0000 (18:01 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 27 Oct 2010 16:01:54 +0000 (18:01 +0200)
src/main/java/net/pterodactylus/sone/web/WebInterface.java
src/main/java/net/pterodactylus/sone/web/ajax/BlacklistSoneAjaxPage.java [new file with mode: 0644]
src/main/java/net/pterodactylus/sone/web/ajax/UnblacklistSoneAjaxPage.java [new file with mode: 0644]
src/main/resources/templates/include/head.html

index eeeec63..affe76e 100644 (file)
@@ -40,6 +40,7 @@ import net.pterodactylus.sone.template.ReplyAccessor;
 import net.pterodactylus.sone.template.RequestChangeFilter;
 import net.pterodactylus.sone.template.SoneAccessor;
 import net.pterodactylus.sone.template.SubstringFilter;
+import net.pterodactylus.sone.web.ajax.BlacklistSoneAjaxPage;
 import net.pterodactylus.sone.web.ajax.BlockSoneAjaxPage;
 import net.pterodactylus.sone.web.ajax.DeletePostAjaxPage;
 import net.pterodactylus.sone.web.ajax.DeleteReplyAjaxPage;
@@ -48,6 +49,7 @@ import net.pterodactylus.sone.web.ajax.GetLikesAjaxPage;
 import net.pterodactylus.sone.web.ajax.GetSoneStatusPage;
 import net.pterodactylus.sone.web.ajax.GetTranslationPage;
 import net.pterodactylus.sone.web.ajax.LikeAjaxPage;
+import net.pterodactylus.sone.web.ajax.UnblacklistSoneAjaxPage;
 import net.pterodactylus.sone.web.ajax.UnblockSoneAjaxPage;
 import net.pterodactylus.sone.web.ajax.UnfollowSoneAjaxPage;
 import net.pterodactylus.sone.web.ajax.UnlikeAjaxPage;
@@ -262,6 +264,8 @@ public class WebInterface extends AbstractService {
                pageToadlets.add(pageToadletFactory.createPageToadlet(new UnfollowSoneAjaxPage(this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new BlockSoneAjaxPage(this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new UnblockSoneAjaxPage(this)));
+               pageToadlets.add(pageToadletFactory.createPageToadlet(new BlacklistSoneAjaxPage(this)));
+               pageToadlets.add(pageToadletFactory.createPageToadlet(new UnblacklistSoneAjaxPage(this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new LikeAjaxPage(this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new UnlikeAjaxPage(this)));
                pageToadlets.add(pageToadletFactory.createPageToadlet(new GetLikesAjaxPage(this)));
diff --git a/src/main/java/net/pterodactylus/sone/web/ajax/BlacklistSoneAjaxPage.java b/src/main/java/net/pterodactylus/sone/web/ajax/BlacklistSoneAjaxPage.java
new file mode 100644 (file)
index 0000000..83a38e4
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Sone - BlacklistSoneAjaxPage.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 <http://www.gnu.org/licenses/>.
+ */
+
+package net.pterodactylus.sone.web.ajax;
+
+import net.pterodactylus.sone.data.Sone;
+import net.pterodactylus.sone.web.WebInterface;
+import net.pterodactylus.util.json.JsonObject;
+
+/**
+ * AJAX page that blacklists a Sone.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class BlacklistSoneAjaxPage extends JsonPage {
+
+       /**
+        * Creates a new “blacklist Sone” AJAX page.
+        *
+        * @param webInterface
+        *            The Sone web interface
+        */
+       public BlacklistSoneAjaxPage(WebInterface webInterface) {
+               super("ajax/blacklistSone.ajax", webInterface);
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       protected JsonObject createJsonObject(Request request) {
+               String soneId = request.getHttpRequest().getParam("sone");
+               if (soneId == null) {
+                       return new JsonObject().put("success", false).put("error", "invalid-sone-id");
+               }
+               Sone sone = webInterface.core().getSone(soneId);
+               webInterface.core().blacklistSone(sone);
+               return new JsonObject().put("success", true);
+       }
+
+}
diff --git a/src/main/java/net/pterodactylus/sone/web/ajax/UnblacklistSoneAjaxPage.java b/src/main/java/net/pterodactylus/sone/web/ajax/UnblacklistSoneAjaxPage.java
new file mode 100644 (file)
index 0000000..751efb6
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Sone - UnblacklistSoneAjaxPage.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 <http://www.gnu.org/licenses/>.
+ */
+
+package net.pterodactylus.sone.web.ajax;
+
+import net.pterodactylus.sone.data.Sone;
+import net.pterodactylus.sone.web.WebInterface;
+import net.pterodactylus.util.json.JsonObject;
+
+/**
+ * AJAX page that unblacklists a Sone.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class UnblacklistSoneAjaxPage extends JsonPage {
+
+       /**
+        * Creates a new “unblacklist Sone” AJAX page.
+        *
+        * @param webInterface
+        *            The Sone web interface
+        */
+       public UnblacklistSoneAjaxPage(WebInterface webInterface) {
+               super("ajax/unblacklistSone.ajax", webInterface);
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       protected JsonObject createJsonObject(Request request) {
+               String soneId = request.getHttpRequest().getParam("sone");
+               if (soneId == null) {
+                       return new JsonObject().put("success", false).put("error", "invalid-sone-id");
+               }
+               Sone sone = webInterface.core().getSone(soneId);
+               webInterface.core().unblacklistSone(sone);
+               return new JsonObject().put("success", true);
+       }
+
+}
index 16c9391..3a2ab57 100644 (file)
                                });
                                return false;
                        });
+                       $("#sone .blacklist").submit(function() {
+                               var blacklistElement = this;
+                               $.getJSON("ajax/blacklistSone.ajax", { "sone" : getSoneId(this), "formPassword" : getFormPassword() }, function() {
+                                       $(getSoneElement(blacklistElement)).slideUp();
+                               });
+                               return false;
+                       });
+                       $("#sone .unblacklist").submit(function() {
+                               var unblacklistElement = this;
+                               $.getJSON("ajax/unblacklistSone.ajax", { "sone" : getSoneId(this), "formPassword" : getFormPassword() }, function() {
+                                       $(getSoneElement(unblacklistElement)).slideUp();
+                               });
+                               return false;
+                       });
                });
        </script>