X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Flocalizer%2Fbasic%2FMirBasicChildArticlePostingHandler.java;h=da7fa90ab7bdbe7c9bad1971f35388240fdf705a;hb=da74272a891bc159ead9fb6180ac42aea3be5d2f;hp=8e4cdcbcba11d148bba1b6f226bd7959a8c6eb30;hpb=d1fe8297d584e69a5d2bed84cc979d8bdd13cb31;p=mir.git diff --git a/source/mircoders/localizer/basic/MirBasicChildArticlePostingHandler.java b/source/mircoders/localizer/basic/MirBasicChildArticlePostingHandler.java index 8e4cdcbc..da7fa90a 100755 --- a/source/mircoders/localizer/basic/MirBasicChildArticlePostingHandler.java +++ b/source/mircoders/localizer/basic/MirBasicChildArticlePostingHandler.java @@ -35,8 +35,16 @@ import mir.session.Session; import mir.session.SessionExc; import mir.session.SessionFailure; import mircoders.entity.EntityContent; +import mir.entity.adapter.EntityAdapter; +import mircoders.global.MirGlobal; +import mircoders.storage.DatabaseContent; +import mircoders.localizer.MirLocalizerExc; +import mir.storage.DatabaseExc; - +/** + * Handler for open postings of "child articles", that is articles + * linked to other articles. Used frequently for translations. + */ public class MirBasicChildArticlePostingHandler extends MirBasicArticlePostingHandler { public MirBasicChildArticlePostingHandler() { super(); @@ -44,19 +52,50 @@ public class MirBasicChildArticlePostingHandler extends MirBasicArticlePostingHa setNormalResponseGenerator(configuration.getString("Localizer.OpenSession.article.EditTemplate")); } + /** + * {@inheritDoc} + * + *

+ * This class overrides this method to set the parent article. + */ public void finalizeArticle(Request aRequest, Session aSession, EntityContent anArticle) throws SessionExc, SessionFailure { super.finalizeArticle(aRequest, aSession, anArticle); anArticle.setFieldValue("to_content", (String) aSession.getAttribute("to_content")); } + /** + * {@inheritDoc} + * + *

+ * Overridden by this class to retrieve and store the to be associated + * parent article for subsequent usage. + */ protected void initializeSession(Request aRequest, Session aSession) throws SessionExc, SessionFailure { super.initializeSession(aRequest, aSession); String parentId = aRequest.getParameter("to_content"); if (parentId==null) throw new SessionExc("initializeSession: parent id not set!"); + // check if the parent article is published. + EntityAdapter article; + try { + article = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("content", + DatabaseContent.getInstance().selectById(parentId)); + } + catch(MirLocalizerExc e) + { + throw new SessionExc("Mir localizer error: " + e.getMessage()); + } + catch(DatabaseExc e) + { + throw new SessionExc("Database error: " + e.getMessage()); + } + if (!MirGlobal.localizer().openPostings().allowArticlePublication((EntityContent)article.getEntity())) { + throw new SessionExc("Illegal article"); + } + aSession.setAttribute("to_content", parentId); - }; -} \ No newline at end of file + } +}