we check now if the parent article is allowed for publication while adding a child...
[mir.git] / source / mircoders / localizer / basic / MirBasicChildArticlePostingHandler.java
index 492d47c..4e346ca 100755 (executable)
 
 package mircoders.localizer.basic;
 
-import mir.session.*;
-import mircoders.entity.*;
-
+import mir.session.Request;
+import mir.session.Session;
+import mir.session.SessionExc;
+import mir.session.SessionFailure;
+import mircoders.entity.EntityContent;
 
+/**
+ * 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();
@@ -41,22 +47,39 @@ public class MirBasicChildArticlePostingHandler extends MirBasicArticlePostingHa
     setNormalResponseGenerator(configuration.getString("Localizer.OpenSession.article.EditTemplate"));
   }
 
+  /**
+   * {@inheritDoc}
+   *
+   * <p>
+   * 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.setValueForProperty("to_media", (String) aSession.getAttribute("to_media"));
+    anArticle.setFieldValue("to_content", (String) aSession.getAttribute("to_content"));
   }
 
+  /**
+   * {@inheritDoc}
+   *
+   * <p>
+   * 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_media");
+    String parentId = aRequest.getParameter("to_content");
     if (parentId==null)
       throw new SessionExc("initializeSession: parent id not set!");
-
-    aSession.setAttribute("to_media", parentId);
-  };
+    // check if the parent article is published.
+    EntityAdapter article = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("content", 
+      DatabaseContent.getInstance().selectById(parentId));
+    if (!MirGlobal.localizer().openPostings().allowArticlePublication((EntityContent)article.getEntity())) {
+      throw new ServletModuleExc("Illegal article");
+    }
 
 
-
-}
\ No newline at end of file
+    aSession.setAttribute("to_content", parentId);
+  }
+}