From 626a903ec07e58e845d9bf5c6467adc7a95db1c9 Mon Sep 17 00:00:00 2001 From: zapata Date: Mon, 28 May 2007 00:49:58 +0000 Subject: [PATCH] very basic support for localized add/edit article pages --- source/default.properties | 2 +- source/mir/servlet/AdminServletModule.java | 33 +++++++++---- source/mircoders/servlet/ServletModuleComment.java | 10 ++-- source/mircoders/servlet/ServletModuleContent.java | 55 ++++++++++++++-------- 4 files changed, 67 insertions(+), 33 deletions(-) diff --git a/source/default.properties b/source/default.properties index be6f7953..739f8cc2 100755 --- a/source/default.properties +++ b/source/default.properties @@ -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? diff --git a/source/mir/servlet/AdminServletModule.java b/source/mir/servlet/AdminServletModule.java index 27c422d8..add20ffa 100755 --- a/source/mir/servlet/AdminServletModule.java +++ b/source/mir/servlet/AdminServletModule.java @@ -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); diff --git a/source/mircoders/servlet/ServletModuleComment.java b/source/mircoders/servlet/ServletModuleComment.java index b7123148..be28e74b 100755 --- a/source/mircoders/servlet/ServletModuleComment.java +++ b/source/mircoders/servlet/ServletModuleComment.java @@ -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) { diff --git a/source/mircoders/servlet/ServletModuleContent.java b/source/mircoders/servlet/ServletModuleContent.java index 915654d9..04d04fd7 100755 --- a/source/mircoders/servlet/ServletModuleContent.java +++ b/source/mircoders/servlet/ServletModuleContent.java @@ -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. null, 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); -- 2.11.0