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();
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);
+ }
+}