we check now if the parent article is allowed for publication while adding a child...
[mir.git] / source / mircoders / localizer / basic / MirBasicChildArticlePostingHandler.java
1 /*
2  * Copyright (C) 2001, 2002 The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
6  * Mir is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * Mir is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Mir; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * In addition, as a special exception, The Mir-coders gives permission to link
21  * the code of this program with  any library licensed under the Apache Software License,
22  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
23  * (or with modified versions of the above that use the same license as the above),
24  * and distribute linked combinations including the two.  You must obey the
25  * GNU General Public License in all respects for all of the code used other than
26  * the above mentioned libraries.  If you modify this file, you may extend this
27  * exception to your version of the file, but you are not obligated to do so.
28  * If you do not wish to do so, delete this exception statement from your version.
29  */
30
31 package mircoders.localizer.basic;
32
33 import mir.session.Request;
34 import mir.session.Session;
35 import mir.session.SessionExc;
36 import mir.session.SessionFailure;
37 import mircoders.entity.EntityContent;
38
39 /**
40  * Handler for open postings of "child articles", that is articles
41  * linked to other articles. Used frequently for translations.
42  */
43 public class MirBasicChildArticlePostingHandler extends MirBasicArticlePostingHandler {
44   public MirBasicChildArticlePostingHandler() {
45     super();
46
47     setNormalResponseGenerator(configuration.getString("Localizer.OpenSession.article.EditTemplate"));
48   }
49
50   /**
51    * {@inheritDoc}
52    *
53    * <p>
54    * This class overrides this method to set the parent article.
55    */
56   public void finalizeArticle(Request aRequest, Session aSession, EntityContent anArticle) throws SessionExc, SessionFailure {
57     super.finalizeArticle(aRequest, aSession, anArticle);
58
59     anArticle.setFieldValue("to_content", (String) aSession.getAttribute("to_content"));
60   }
61
62   /**
63    * {@inheritDoc}
64    *
65    * <p>
66    * Overridden by this class to retrieve and store the to be associated
67    * parent article for subsequent usage.
68    */
69   protected void initializeSession(Request aRequest, Session aSession) throws SessionExc, SessionFailure {
70     super.initializeSession(aRequest, aSession);
71
72     String parentId = aRequest.getParameter("to_content");
73     if (parentId==null)
74       throw new SessionExc("initializeSession: parent id not set!");
75     // check if the parent article is published.
76     EntityAdapter article = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("content", 
77       DatabaseContent.getInstance().selectById(parentId));
78     if (!MirGlobal.localizer().openPostings().allowArticlePublication((EntityContent)article.getEntity())) {
79       throw new ServletModuleExc("Illegal article");
80     }
81
82
83     aSession.setAttribute("to_content", parentId);
84   }
85 }