very basic support for localized add/edit article pages
[mir.git] / source / mircoders / servlet / ServletModuleContent.java
index 915654d..04d04fd 100755 (executable)
@@ -151,7 +151,7 @@ public class ServletModuleContent extends AdminServletModule {
   }
 
   public void add(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
-    editObject(aRequest, aResponse, null);
+    editObject(aRequest, aResponse, null, aRequest.getParameter("template"));
   }
 
   public void insert(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
@@ -180,7 +180,7 @@ public class ServletModuleContent extends AdminServletModule {
 
       DatabaseContentToTopics.getInstance().setTopics(id, aRequest.getParameterValues("to_topic"));
 
-      editObject(aRequest, aResponse, id);
+      editObject(aRequest, aResponse, id, aRequest.getParameter("template"));
     }
     catch (Throwable e) {
       throw new ServletModuleFailure(e);
@@ -189,13 +189,18 @@ public class ServletModuleContent extends AdminServletModule {
 
   public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
     String idParam = aRequest.getParameter("id");
-    if (idParam == null)
+    if (idParam == null) {
       throw new ServletModuleExc("Invalid call: id not supplied ");
-    editObject(aRequest, aResponse, idParam);
+    }
+
+    editObject(aRequest, aResponse, idParam, aRequest.getParameter("template"));
   }
 
   /**
    * Attaches media to an article
+   * @param aRequest
+   * @param aResponse
+   * @throws mir.servlet.ServletModuleExc
    */
   public void attach(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
     String  mediaIdParam = aRequest.getParameter("mid");
@@ -227,7 +232,7 @@ public class ServletModuleContent extends AdminServletModule {
 
     logAdminUsage(aRequest, articleId, "media " + mediaIdParam + " attached");
 
-    editObject(aRequest, aResponse, articleId);
+    editObject(aRequest, aResponse, articleId, aRequest.getParameter("template"));
   }
 
   /**
@@ -254,7 +259,7 @@ public class ServletModuleContent extends AdminServletModule {
 
     logAdminUsage(aRequest, articleId, "media " + midParam + " deattached");
 
-    editObject(aRequest, aResponse, articleId);
+    editObject(aRequest, aResponse, articleId, aRequest.getParameter("request"));
   }
 
   /**
@@ -277,7 +282,7 @@ public class ServletModuleContent extends AdminServletModule {
 
     contentModule.lockArticle(idParam, user.getId(), false);
 
-    editObject(aRequest, aResponse, idParam);
+    editObject(aRequest, aResponse, idParam, aRequest.getParameter("template"));
   }
 
   /**
@@ -300,7 +305,7 @@ public class ServletModuleContent extends AdminServletModule {
 
     contentModule.unlockArticle(idParam, user.getId(), false);
 
-    editObject(aRequest, aResponse, idParam);
+    editObject(aRequest, aResponse, idParam, aRequest.getParameter("template"));
   }
 
   /**
@@ -310,17 +315,19 @@ public class ServletModuleContent extends AdminServletModule {
     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
 
     String idParam = requestParser.getParameter("id");
-    if (idParam == null)
+    if (idParam == null) {
       throw new ServletModuleExc("Wrong call: (id) is missing");
+    }
 
     EntityUsers user = ServletHelper.getUser(aRequest);
 
-    if (!MirGlobal.accessControl().article().mayForceLockArticle(user, idParam))
+    if (!MirGlobal.accessControl().article().mayForceLockArticle(user, idParam)) {
       throw new ServletModuleExc("Unable to force lock");
+    }
 
     contentModule.lockArticle(idParam, user.getId(), true);
 
-    editObject(aRequest, aResponse, idParam);
+    editObject(aRequest, aResponse, idParam, aRequest.getParameter("template"));
   }
 
   /**
@@ -365,7 +372,7 @@ public class ServletModuleContent extends AdminServletModule {
         contentModule.unlockArticle(id, ServletHelper.getUser(aRequest).getId(), false);
       }
 
-      editObject(aRequest, aResponse, idParam);
+      editObject(aRequest, aResponse, idParam, aRequest.getParameter("template"));
     }
     catch (Throwable e) {
       throw new ServletModuleFailure(e);
@@ -377,10 +384,10 @@ public class ServletModuleContent extends AdminServletModule {
    * Returns the basic article editing form.
    *
    * @param anId identifier of the article. <code>null</code>, means show an
-   *     empty form to add a new article.
+   * @param aTemplate
    */
   public void editObject(HttpServletRequest aRequest, HttpServletResponse aResponse,
-                         String anId) throws ServletModuleExc {
+                         String anId, String aTemplate) throws ServletModuleExc {
     try {
       HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
       Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
@@ -391,6 +398,7 @@ public class ServletModuleContent extends AdminServletModule {
       urlBuilder.setValue("module", "Content");
       urlBuilder.setValue("do", "edit");
       urlBuilder.setValue("id", anId);
+      urlBuilder.setValue("template", aTemplate);
       urlBuilder.setValue("returnurl", requestParser.getParameter("returnurl"));
 
       if (anId !=null) {
@@ -400,15 +408,20 @@ public class ServletModuleContent extends AdminServletModule {
         EntityUsers user = ServletHelper.getUser(aRequest);
 
         responseData.put("mayEdit",
-            new Boolean(MirGlobal.accessControl().article().mayEditArticle(user, anId)));
-        responseData.put("mayLock", new Boolean(MirGlobal.accessControl().article().mayLockArticle(user, anId)));
-        responseData.put("mayForceLock", new Boolean(MirGlobal.accessControl().article().mayForceLockArticle(user, anId)));
-        responseData.put("mayUnlock", new Boolean(MirGlobal.accessControl().article().mayUnlockArticle(user, anId)));
+                Boolean.valueOf(MirGlobal.accessControl().article().mayEditArticle(user, anId)));
+        responseData.put("mayLock",
+                Boolean.valueOf(MirGlobal.accessControl().article().mayLockArticle(user, anId)));
+        responseData.put("mayForceLock",
+                Boolean.valueOf(MirGlobal.accessControl().article().mayForceLockArticle(user, anId)));
+        responseData.put("mayUnlock",
+                Boolean.valueOf(MirGlobal.accessControl().article().mayUnlockArticle(user, anId)));
       }
       else {
         List fields = DatabaseContent.getInstance().getFieldNames();
         responseData.put("new", Boolean.TRUE);
+
         Map emptyArticle = new HashMap();
+
         Iterator i = fields.iterator();
         while (i.hasNext()) {
           emptyArticle.put(i.next(), null);
@@ -481,7 +494,11 @@ public class ServletModuleContent extends AdminServletModule {
       responseData.put("returnurl", requestParser.getParameter("returnurl"));
       responseData.put("thisurl", urlBuilder.getQuery());
 
-      ServletHelper.generateResponse(aResponse.getWriter(), responseData, editGenerator);
+      if (aTemplate == null) {
+        aTemplate = editGenerator;
+      }
+
+      ServletHelper.generateResponse(aResponse.getWriter(), responseData, aTemplate);
     }
     catch (Throwable e) {
       throw new ServletModuleFailure(e);