1.1 restoration
[mir.git] / source / mircoders / servlet / ServletModuleAbuse.java
index e2d955b..e026be6 100755 (executable)
+/*
+ * Copyright (C) 2001, 2002 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir 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 Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with  any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two.  You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries.  If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
+ */
+
 package mircoders.servlet;
 
-import java.util.Locale;\r
-import java.util.Map;\r
-import javax.servlet.http.HttpServletRequest;\r
-import javax.servlet.http.HttpServletResponse;\r
-\r
-import mir.log.LoggerWrapper;\r
-import mir.servlet.ServletModule;\r
-import mir.servlet.ServletModuleFailure;\r
-import mir.util.HTTPRequestParser;\r
-import mir.util.URLBuilder;\r
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import mir.log.LoggerWrapper;
+import mir.servlet.ServletModule;
+import mir.servlet.ServletModuleExc;
+import mir.servlet.ServletModuleFailure;
+import mir.util.HTTPRequestParser;
+import mir.util.URLBuilder;
+import mircoders.global.Abuse;
 import mircoders.global.MirGlobal;
 
 public class ServletModuleAbuse extends ServletModule {
   private static ServletModuleAbuse instance = new ServletModuleAbuse();
+  private String editFilterTemplate;
+  private String listFiltersTemplate;
+  private String mainTemplate;
+  private String viewLogTemplate;
+
   public static ServletModule getInstance() { return instance; }
 
   private ServletModuleAbuse() {
     logger = new LoggerWrapper("ServletModule.Abuse");
     defaultAction = "showsettings";
+
+    editFilterTemplate = configuration.getString("ServletModule.Abuse.EditFilter.Template");
+    listFiltersTemplate = configuration.getString("ServletModule.Abuse.ListFilters.Template");
+    viewLogTemplate = configuration.getString("ServletModule.Abuse.ViewLog.Template");
+    mainTemplate = configuration.getString("ServletModule.Abuse.Main.Template");
+  }
+
+  public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+    String id=requestParser.getParameterWithDefault("id", "");
+
+    if (id.equals("")) {
+      editfilter(aRequest, aResponse, "", "", "", "", "", "", "");
+    }
+    else {
+      Abuse.FilterRule filter = MirGlobal.abuse().getFilter(id);
+      if (filter==null)
+        throw new ServletModuleExc("Filter not found");
+
+      editfilter(aRequest, aResponse, filter.getId(), filter.getType(), filter.getExpression(), filter.getComments(), filter.getCommentAction(), filter.getArticleAction(), "");
+    }
+  }
+
+  public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse,
+        String anId, String aType, String anExpression, String aComments,
+        String aCommentAction, String anArticleAction, String anErrorMessage) throws ServletModuleExc {
+    try {
+      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
+
+      responseData.put("id", anId);
+      responseData.put("type", aType);
+      responseData.put("expression", anExpression);
+      responseData.put("comments", aComments);
+      responseData.put("articleaction", anArticleAction);
+      responseData.put("commentaction", aCommentAction);
+      responseData.put("errormessage", anErrorMessage);
+
+      responseData.put("articleactions", MirGlobal.abuse().getArticleActions());
+      responseData.put("commentactions", MirGlobal.abuse().getCommentActions());
+      responseData.put("filtertypes", MirGlobal.abuse().getFilterTypes());
+
+      ServletHelper.generateResponse(aResponse.getWriter(), responseData, editFilterTemplate);
+    }
+    catch (Throwable e) {
+      throw new ServletModuleFailure(e);
+    }
   }
 
-  public void editfilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+  public void updatefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
 
     String type=requestParser.getParameterWithDefault("type", "");
     String id=requestParser.getParameterWithDefault("id", "");
     String expression=requestParser.getParameterWithDefault("expression", "");
+    String commentaction=requestParser.getParameterWithDefault("commentaction", "");
+    String articleaction=requestParser.getParameterWithDefault("articleaction", "");
+    String comments=requestParser.getParameterWithDefault("comments", "");
+
+    String errorMessage;
 
     if (id.equals("")) {
-      MirGlobal.abuse().addFilter(type, expression);
+      errorMessage = MirGlobal.abuse().addFilter(type, expression,comments, commentaction, articleaction);
+      logAdminUsage(aRequest, "?", "object added");
     }
     else {
-      MirGlobal.abuse().setFilter(id, type, expression);
+      errorMessage = MirGlobal.abuse().setFilter(id, type, expression, comments, commentaction, articleaction);
+      logAdminUsage(aRequest, id, "object modified");
     }
 
+    if (errorMessage!=null) {
+      editfilter(aRequest, aResponse, id, type, expression, comments, commentaction, articleaction, errorMessage);
+    }
+    else {
+      MirGlobal.abuse().save();
+      showfilters(aRequest, aResponse);
+    }
+  }
+
+  public void delete(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String id=requestParser.getParameterWithDefault("id", "");
+    MirGlobal.abuse().deleteFilter(id);
+    logAdminUsage(aRequest, id, "object deleted");
+
     MirGlobal.abuse().save();
 
     showfilters(aRequest, aResponse);
   }
 
-  public void deletefilter(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+  public void moveup(HttpServletRequest aRequest, HttpServletResponse aResponse) {
     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
 
     String id=requestParser.getParameterWithDefault("id", "");
-    MirGlobal.abuse().deleteFilter(id);
+    MirGlobal.abuse().moveFilterUp(id);
+
+    MirGlobal.abuse().save();
+    logAdminUsage(aRequest, id, "object moved upwards");
+
+    showfilters(aRequest, aResponse);
+  }
+
+  public void movedown(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String id=requestParser.getParameterWithDefault("id", "");
+    MirGlobal.abuse().moveFilterDown(id);
+    logAdminUsage(aRequest, id, "object moved downwards");
+
+    MirGlobal.abuse().save();
+
+    showfilters(aRequest, aResponse);
+  }
+
+  public void movetop(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String id=requestParser.getParameterWithDefault("id", "");
+    MirGlobal.abuse().moveFilterToTop(id);
+
+    MirGlobal.abuse().save();
+    logAdminUsage(aRequest, id, "object moved to the top");
+
+    showfilters(aRequest, aResponse);
+  }
+
+  public void movebottom(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+    HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
+
+    String id=requestParser.getParameterWithDefault("id", "");
+    MirGlobal.abuse().moveFilterToBottom(id);
 
     MirGlobal.abuse().save();
+    logAdminUsage(aRequest, id, "object moved to the bottom");
 
     showfilters(aRequest, aResponse);
   }
 
+  public void add(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
+    editfilter(aRequest, aResponse, "", "", "", "", "", "", "");
+  }
+
   public void showfilters(HttpServletRequest aRequest, HttpServletResponse aResponse) {
     URLBuilder urlBuilder = new URLBuilder();
 
     try {
-      Map responseData = ServletHelper.makeGenerationData(new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
+      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
 
       urlBuilder.setValue("module", "Abuse");
       urlBuilder.setValue("do", "showfilters");
       responseData.put("thisurl", urlBuilder.getQuery());
 
       responseData.put("filters", MirGlobal.abuse().getFilters());
-      responseData.put("filtertypes", MirGlobal.abuse().getFilterTypes());
 
-      ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.filters.template");
+      ServletHelper.generateResponse(aResponse.getWriter(), responseData, listFiltersTemplate);
     }
     catch (Throwable e) {
       throw new ServletModuleFailure(e);
     }
   }
 
-
   public void showsettings(HttpServletRequest aRequest, HttpServletResponse aResponse) {
     URLBuilder urlBuilder = new URLBuilder();
 
     try {
-      Map responseData = ServletHelper.makeGenerationData(new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
+      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
 
       urlBuilder.setValue("module", "Abuse");
       urlBuilder.setValue("do", "showsettings");
@@ -94,7 +240,7 @@ public class ServletModuleAbuse extends ServletModule {
       responseData.put("articleaction", MirGlobal.abuse().getArticleBlockAction());
       responseData.put("commentaction", MirGlobal.abuse().getCommentBlockAction());
 
-      ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.template");
+      ServletHelper.generateResponse(aResponse.getWriter(), responseData, mainTemplate);
     }
     catch (Throwable e) {
       throw new ServletModuleFailure(e);
@@ -121,6 +267,7 @@ public class ServletModuleAbuse extends ServletModule {
       MirGlobal.abuse().setCommentBlockAction(parser.getParameter("commentaction"));
 
       MirGlobal.abuse().save();
+      logAdminUsage(aRequest, "settings", "object modified");
 
       showsettings(aRequest, aResponse);
     }
@@ -131,17 +278,16 @@ public class ServletModuleAbuse extends ServletModule {
 
   public void showlog(HttpServletRequest aRequest, HttpServletResponse aResponse) {
     URLBuilder urlBuilder = new URLBuilder();
-    int count;
 
     try {
-      Map responseData = ServletHelper.makeGenerationData(new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
+      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, getLocales(aRequest));
       urlBuilder.setValue("module", "Abuse");
       urlBuilder.setValue("do", "showlog");
       responseData.put("thisurl", urlBuilder.getQuery());
 
       responseData.put("log", MirGlobal.abuse().getLog());
 
-      ServletHelper.generateResponse(aResponse.getWriter(), responseData, "abuse.log.template");
+      ServletHelper.generateResponse(aResponse.getWriter(), responseData, viewLogTemplate);
     }
     catch (Throwable e) {
       throw new ServletModuleFailure(e);