- multiple "producer" shortcuts possible
[mir.git] / source / mircoders / servlet / ServletModuleContent.java
index 87506c0..c9ef69f 100755 (executable)
@@ -33,7 +33,7 @@ package mircoders.servlet;
 import java.util.GregorianCalendar;\r
 import java.util.HashMap;\r
 import java.util.Iterator;\r
-import java.util.List;\r
+import java.util.*;\r
 import java.util.Locale;\r
 import java.util.Map;\r
 import javax.servlet.http.HttpServletRequest;\r
@@ -50,7 +50,7 @@ import mir.util.CachingRewindableIterator;
 import mir.util.HTTPRequestParser;\r
 import mir.util.JDBCStringRoutines;\r
 import mir.util.SQLQueryBuilder;\r
-import mir.util.URLBuilder;\r
+import mir.util.*;\r
 import mircoders.entity.EntityContent;\r
 import mircoders.global.MirGlobal;\r
 import mircoders.module.ModuleContent;\r
@@ -61,7 +61,7 @@ import mircoders.storage.DatabaseContentToTopics;
  *  ServletModuleContent -\r
  *  deliver html for the article admin form.\r
  *\r
- * @version $Id: ServletModuleContent.java,v 1.52.2.6 2003/09/03 17:49:40 zapata Exp $\r
+ * @version $Id: ServletModuleContent.java,v 1.52.2.11 2003/09/24 02:08:04 zapata Exp $\r
  * @author rk, mir-coders\r
  *\r
  */\r
@@ -93,7 +93,7 @@ public class ServletModuleContent extends ServletModule
     int offset = requestParser.getIntegerWithDefault("offset", 0);\r
     String selectArticleUrl = requestParser.getParameter("selectarticleurl");\r
 \r
-    returnArticleList(aRequest, aResponse, where, order, offset, selectArticleUrl);\r
+    returnList(aRequest, aResponse, where, order, offset, selectArticleUrl);\r
   }\r
 \r
   public void search(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc, ServletModuleFailure {\r
@@ -143,7 +143,7 @@ public class ServletModuleContent extends ServletModule
           queryBuilder.appendAscendingOrder("creator");\r
       }\r
 \r
-      returnArticleList(aRequest, aResponse, queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), 0, selectArticleUrl);\r
+      returnList(aRequest, aResponse, queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), 0, selectArticleUrl);\r
     }\r
     catch (Throwable e) {\r
       throw new ServletModuleFailure(e);\r
@@ -151,7 +151,7 @@ public class ServletModuleContent extends ServletModule
   }\r
 \r
   public void add(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {\r
-    _showObject(null, aRequest, aResponse);\r
+    editObject(aRequest, aResponse, null);\r
   }\r
 \r
 \r
@@ -176,11 +176,13 @@ public class ServletModuleContent extends ServletModule
         withValues.remove("webdb_create");\r
 \r
       String id = mainModule.add(withValues);\r
+      logAdminUsage(aRequest, id, "object added");\r
+\r
       List topics;\r
 \r
       DatabaseContentToTopics.getInstance().setTopics(id, aRequest.getParameterValues("to_topic"));\r
 \r
-      _showObject(id, aRequest, aResponse);\r
+      editObject(aRequest, aResponse, id);\r
     }\r
     catch (Throwable e) {\r
       throw new ServletModuleFailure(e);\r
@@ -192,7 +194,7 @@ public class ServletModuleContent extends ServletModule
     String idParam = aRequest.getParameter("id");\r
     if (idParam == null)\r
       throw new ServletModuleExc("Invalid call: id not supplied ");\r
-    _showObject(idParam, aRequest, aResponse);\r
+    editObject(aRequest, aResponse, idParam);\r
   }\r
 \r
 // methods for attaching media file\r
@@ -212,7 +214,9 @@ public class ServletModuleContent extends ServletModule
       throw new ServletModuleFailure(e);\r
     }\r
 \r
-    _showObject(articleId, aRequest, aResponse);\r
+    logAdminUsage(aRequest, articleId, "media " + mediaIdParam + " attached");\r
+\r
+    editObject(aRequest, aResponse, articleId);\r
   }\r
 \r
   public void dettach(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc\r
@@ -232,7 +236,9 @@ public class ServletModuleContent extends ServletModule
       throw new ServletModuleFailure(e);\r
     }\r
 \r
-    _showObject(articleId, aRequest, aResponse);\r
+    logAdminUsage(aRequest, articleId, "media " + midParam + " deattached");\r
+\r
+    editObject(aRequest, aResponse, articleId);\r
   }\r
 \r
   public void update(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc\r
@@ -261,13 +267,16 @@ public class ServletModuleContent extends ServletModule
         withValues.remove("webdb_create");\r
 \r
       String id = mainModule.set(withValues);\r
+\r
+      logAdminUsage(aRequest, id, "object modified");\r
+\r
       DatabaseContentToTopics.getInstance().setTopics(aRequest.getParameter("id"), aRequest.getParameterValues("to_topic"));\r
 \r
       if (returnUrl!=null && !returnUrl.equals("")){\r
         redirect(aResponse, returnUrl);\r
       }\r
       else\r
-        _showObject(idParam, aRequest, aResponse);\r
+        editObject(aRequest, aResponse, idParam);\r
     }\r
     catch (Throwable e) {\r
       throw new ServletModuleFailure(e);\r
@@ -286,7 +295,7 @@ public class ServletModuleContent extends ServletModule
    * @param aResponse\r
    * @throws ServletModuleExc\r
    */\r
-  public void _showObject(String id, HttpServletRequest aRequest, HttpServletResponse aResponse)\r
+  public void editObject(HttpServletRequest aRequest, HttpServletResponse aResponse, String id)\r
       throws ServletModuleExc {\r
     try {\r
       HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);\r
@@ -319,9 +328,61 @@ public class ServletModuleContent extends ServletModule
       }\r
       responseData.put("article", article);\r
 \r
-      responseData.put("topics",\r
-          new EntityIteratorAdapter("", configuration.getString("Mir.Localizer.Admin.TopicListOrder"),\r
-          20, MirGlobal.localizer().dataModel().adapterModel(), "topic"));\r
+      List topicsList = new Vector();\r
+\r
+      String[] topicCategories = configuration.getStringArray("Mir.Localizer.Admin.TopicLists");\r
+\r
+      if (topicCategories.length==0 ) {\r
+        Map categoryMap = new HashMap();\r
+        categoryMap.put("key", "topic");\r
+        categoryMap.put("listtype", "0");\r
+        categoryMap.put("listparameter", "3");\r
+        categoryMap.put("items",\r
+                        new EntityIteratorAdapter("", "title",\r
+            20, MirGlobal.localizer().dataModel().adapterModel(), "topic"));\r
+        topicsList.add(categoryMap);\r
+      }\r
+      else\r
+      {\r
+\r
+        for (int i = 0; i < topicCategories.length; i++) {\r
+          try {\r
+            Map categoryMap = new HashMap();\r
+            List parts = StringRoutines.splitString(topicCategories[i], ":");\r
+            String key = null;\r
+            String listtype = "0";\r
+            String listparameter = "5";\r
+            String where = "";\r
+            String order = "";\r
+\r
+            if (parts.size() > 0)\r
+              key = (String) parts.get(0);\r
+            if (parts.size() > 1)\r
+              listtype = (String) parts.get(1);\r
+            if (parts.size() > 2)\r
+              listparameter = (String) parts.get(2);\r
+            if (parts.size() > 3)\r
+              where = (String) parts.get(3);\r
+            if (parts.size() > 4)\r
+              order = (String) parts.get(4);\r
+\r
+            if (key != null) {\r
+              categoryMap.put("key", key);\r
+              categoryMap.put("listtype", listtype);\r
+              categoryMap.put("listparameter", listparameter);\r
+              categoryMap.put("items",\r
+                              new EntityIteratorAdapter(where, order,\r
+                  20, MirGlobal.localizer().dataModel().adapterModel(), "topic"));\r
+              topicsList.add(categoryMap);\r
+            }\r
+          }\r
+          catch (Throwable t) {\r
+            logger.error("error while preparing topics: " + t.toString());\r
+          }\r
+        }\r
+      }\r
+\r
+      responseData.put("topics", topicsList);\r
 \r
       responseData.put("returnurl", requestParser.getParameter("returnurl"));\r
       responseData.put("thisurl", urlBuilder.getQuery());\r
@@ -333,7 +394,12 @@ public class ServletModuleContent extends ServletModule
     }\r
   }\r
 \r
-  public void returnArticleList(\r
+  public void returnList(HttpServletRequest aRequest, HttpServletResponse aResponse,\r
+     String aWhereClause, String anOrderByClause, int anOffset) throws ServletModuleExc {\r
+    this.returnList(aRequest, aResponse, aWhereClause, anOrderByClause, anOffset, null);\r
+  }\r
+\r
+  public void returnList(\r
        HttpServletRequest aRequest,\r
        HttpServletResponse aResponse,\r
        String aWhereClause,\r
@@ -422,7 +488,7 @@ public class ServletModuleContent extends ServletModule
       urlBuilder.setValue("childid", requestParser.getParameter("id"));\r
       urlBuilder.setValue("returnurl", requestParser.getParameter("returnurl"));\r
 \r
-      returnArticleList(aRequest, aResponse, "", "", 0, urlBuilder.getQuery());\r
+      returnList(aRequest, aResponse, "", "", 0, urlBuilder.getQuery());\r
     }\r
     catch (Throwable e) {\r
       throw new ServletModuleFailure(e);\r
@@ -438,7 +504,7 @@ public class ServletModuleContent extends ServletModule
       if (articleId == null)\r
         throw new ServletModuleExc("ServletModuleContent.listchildren: article_id not set!");\r
 \r
-      returnArticleList(aRequest, aResponse, "to_content = " + articleId, "", 0, null);\r
+      returnList(aRequest, aResponse, "to_content = " + articleId, "", 0, null);\r
     }\r
     catch (Throwable e) {\r
       throw new ServletModuleFailure(e);\r
@@ -457,6 +523,7 @@ public class ServletModuleContent extends ServletModule
       article.setValueForProperty("to_content", parentId);\r
       article.setProduced(false);\r
       article.update();\r
+      logAdminUsage(aRequest, articleId, "parent set to " + parentId);\r
     }\r
     catch(Throwable e) {\r
       logger.error("ServletModuleContent.setparent: " + e.getMessage());\r
@@ -477,6 +544,7 @@ public class ServletModuleContent extends ServletModule
       article.setValueForProperty("to_content", "");\r
       article.setProduced(false);\r
       article.update();\r
+      logAdminUsage(aRequest, articleId, "parent cleared");\r
     }\r
     catch(Throwable e) {\r
       e.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE));\r