very basic support for localized add/edit article pages
authorzapata <zapata>
Mon, 28 May 2007 00:49:58 +0000 (00:49 +0000)
committerzapata <zapata>
Mon, 28 May 2007 00:49:58 +0000 (00:49 +0000)
source/default.properties
source/mir/servlet/AdminServletModule.java
source/mircoders/servlet/ServletModuleComment.java
source/mircoders/servlet/ServletModuleContent.java

index be6f795..739f8cc 100755 (executable)
@@ -78,7 +78,7 @@ AccessControl.LockingOptional = 1
 
 # the templates
 Mir.Localizer.Producer.GeneratorLibrary= default=freemarker(etc/producer/)
-Mir.Localizer.Admin.GeneratorLibrary= default=freemarker(templates/admin/),preview=freemarker(etc/producer)
+Mir.Localizer.Admin.GeneratorLibrary= default=freemarker(templates/admin/),preview=freemarker(etc/producer),local=freemarker(etc/admin)
 Mir.Localizer.OpenPosting.GeneratorLibrary= default=freemarker(etc/open/)
 
 # Should an XSS preventing interceptor be used by the producer subsystem?
index 27c422d..add20ff 100755 (executable)
@@ -203,16 +203,29 @@ public abstract class AdminServletModule extends ServletModule {
     }
   }
 
-  public void editObject(HttpServletRequest aRequest, HttpServletResponse aResponse, String anId) throws ServletModuleExc {
+  /**
+   * return a page allowing the user to edit an object
+   *
+   * @param aRequest
+   * @param aResponse
+   * @param anId   the id of the object that is being edited
+   * @param aTemplate the template to use (or null to use the default template)
+   * @throws ServletModuleExc
+   */
+  public void editObject(HttpServletRequest aRequest, HttpServletResponse aResponse, String anId, String aTemplate) throws ServletModuleExc {
     try {
-      editObject(aRequest, aResponse, model.makeEntityAdapter(definition, mainModule.getById(anId)), false, anId);
+      editObject(aRequest, aResponse, model.makeEntityAdapter(definition, mainModule.getById(anId)), aTemplate, false, anId);
     }
     catch (Throwable t) {
       throw new ServletModuleFailure(t);
     }
   }
 
-  public void editObject(HttpServletRequest aRequest, HttpServletResponse aResponse, Object anObject, boolean anIsNew, String anId) throws ServletModuleExc {
+  /**
+   * return a page allowing the user to edit an object
+   */
+  public void editObject(HttpServletRequest aRequest, HttpServletResponse aResponse, Object anObject,
+                         String aTemplate, boolean anIsNew, String anId) throws ServletModuleExc {
     HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
     URLBuilder urlBuilder = new URLBuilder();
 
@@ -221,7 +234,7 @@ public abstract class AdminServletModule extends ServletModule {
 
       responseData.put("module", getName());
       responseData.put("entity", anObject);
-      responseData.put("new", new Boolean(anIsNew));
+      responseData.put("new", Boolean.valueOf(anIsNew));
 
 
       urlBuilder.setValue("module", getName());
@@ -236,7 +249,11 @@ public abstract class AdminServletModule extends ServletModule {
       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);
@@ -252,14 +269,13 @@ public abstract class AdminServletModule extends ServletModule {
     Map object = new HashMap();
 
     Iterator i = mainModule.getStorageObject().getFieldNames().iterator();
-
     while (i.hasNext()) {
       object.put(i.next(), "");
     }
 
     initializeNewObject(object, aRequest, aResponse);
 
-    editObject(aRequest, aResponse, object, true, null);
+    editObject(aRequest, aResponse, object, null, true, null);
   }
 
   protected void initializeNewObject(Map aNewObject, HttpServletRequest aRequest, HttpServletResponse aResponse) {
@@ -276,8 +292,9 @@ public abstract class AdminServletModule extends ServletModule {
    */
   public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse, String anIdentifier)
       throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure  {
+
     try {
-      editObject(aRequest, aResponse, model.makeEntityAdapter(definition, mainModule.getById(anIdentifier)), false, anIdentifier);
+      editObject(aRequest, aResponse, model.makeEntityAdapter(definition, mainModule.getById(anIdentifier)), null, false, anIdentifier);
     }
     catch (Throwable e) {
       throw new ServletModuleFailure(e);
index b712314..be28e74 100755 (executable)
@@ -81,10 +81,10 @@ public class ServletModuleComment extends AdminServletModule {
       throw new ServletModuleExc("Invalid call: id not supplied ");
     }
 
-    editObject(aRequest, aResponse, idParam);
+    editObject(aRequest, aResponse, idParam, null);
   }
 
-  public void editObject(HttpServletRequest aRequest, HttpServletResponse aResponse, String anId) throws ServletModuleExc {
+  public void editObject(HttpServletRequest aRequest, HttpServletResponse aResponse, String anId, String aTemplate) throws ServletModuleExc {
     try {
       HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
       Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] {getLocale(aRequest), getFallbackLocale(aRequest)});
@@ -142,7 +142,7 @@ public class ServletModuleComment extends AdminServletModule {
 
     logAdminUsage(aRequest, commentId, "media " + mediaIdParam + " attached");
 
-    editObject(aRequest, aResponse, commentId);
+    editObject(aRequest, aResponse, commentId, null);
   }
 
   public void dettach(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
@@ -165,7 +165,7 @@ public class ServletModuleComment extends AdminServletModule {
 
     logAdminUsage(aRequest, commentId, "media " + midParam + " deattached");
 
-    editObject(aRequest, aResponse, commentId);
+    editObject(aRequest, aResponse, commentId, null);
   }
 
 
@@ -330,7 +330,7 @@ public class ServletModuleComment extends AdminServletModule {
         ServletHelper.redirect(aResponse, returnUrl);
       }
       else {
-        editObject(aRequest, aResponse, idParam);
+        editObject(aRequest, aResponse, idParam, null);
       }
     }
     catch (Throwable e) {
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);