X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=source%2Fmircoders%2Fservlet%2FServletModuleOpenIndy.java;h=5ba2b20153d608818a01bcfb4cc3db9af6aee0eb;hb=781ae5e450f0fdc85d3ee5b4b586aa542611a562;hp=cd4cbd5c82619b6a0020203e250b60dddfbe90d7;hpb=b8a81294224748fc3461450dbe4124f4b70d8bcf;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleOpenIndy.java b/source/mircoders/servlet/ServletModuleOpenIndy.java index cd4cbd5c..5ba2b201 100755 --- a/source/mircoders/servlet/ServletModuleOpenIndy.java +++ b/source/mircoders/servlet/ServletModuleOpenIndy.java @@ -1,3 +1,34 @@ +/* + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Mir is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Mir; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * In addition, as a special exception, The Mir-coders gives permission to link + * the code of this program with the com.oreilly.servlet library, any library + * licensed under the Apache Software License, The Sun (tm) Java Advanced + * Imaging library (JAI), The Sun JIMI library (or with modified versions of + * the above that use the same license as the above), and distribute linked + * combinations including the two. You must obey the GNU General Public + * License in all respects for all of the code used other than the above + * mentioned libraries. If you modify this file, you may extend this exception + * to your version of the file, but you are not obligated to do so. If you do + * not wish to do so, delete this exception statement from your version. + */ + package mircoders.servlet; import java.io.*; @@ -34,6 +65,8 @@ import mircoders.storage.*; import mircoders.module.*; import mircoders.producer.*; import mircoders.media.MediaRequest; +import mircoders.global.*; +import mircoders.localizer.*; /* * ServletModuleOpenIndy - @@ -41,10 +74,22 @@ import mircoders.media.MediaRequest; * adding comments to articles & * open-postings to the newswire * - * @author $Author: mh $ - * @version $Revision: 1.37 $ $Date: 2002/07/21 22:41:45 $ + * @author $Author: bruno $ + * @version $Revision: 1.41 $ $Date: 2002/09/03 14:30:37 $ * * $Log: ServletModuleOpenIndy.java,v $ + * Revision 1.41 2002/09/03 14:30:37 bruno + * seperation of admin and open posting bundles + * + * Revision 1.40 2002/09/01 22:05:57 mh + * Mir goes GPL + * + * Revision 1.39 2002/08/25 19:00:11 mh + * merge of localization branch into HEAD. mh and zap + * + * Revision 1.38 2002/07/21 22:50:14 mh + * cleanup coding style of getpdf() method + * * Revision 1.37 2002/07/21 22:41:45 mh * make use of new MediaRequest class. A big cleanup and optimization. * @@ -62,6 +107,7 @@ public class ServletModuleOpenIndy extends ServletModule private String postingFormTemplate, postingFormDoneTemplate, postingFormDupeTemplate; private ModuleContent contentModule; + private ModuleComment commentModule; private ModuleImages imageModule; private ModuleTopics themenModule; private String directOp ="yes"; @@ -80,13 +126,13 @@ public class ServletModuleOpenIndy extends ServletModule postingFormDoneTemplate = MirConfig.getProp("ServletModule.OpenIndy.PostingDoneTemplate"); postingFormDupeTemplate = MirConfig.getProp("ServletModule.OpenIndy.PostingDupeTemplate"); directOp = MirConfig.getProp("DirectOpenposting").toLowerCase(); - passwdProtection = MirConfig.getProp("PasswdProtection").toLowerCase(); + passwdProtection = MirConfig.getProp("PasswdProtection").toLowerCase(); mainModule = new ModuleComment(DatabaseComment.getInstance()); contentModule = new ModuleContent(DatabaseContent.getInstance()); themenModule = new ModuleTopics(DatabaseTopics.getInstance()); imageModule = new ModuleImages(DatabaseImages.getInstance()); defaultAction="addposting"; - + } catch (StorageObjectException e) { theLog.printError("servletmoduleopenindy could not be initialized"); @@ -101,19 +147,27 @@ public class ServletModuleOpenIndy extends ServletModule public void addcomment(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException { String aid = req.getParameter("aid"); // the article id the comment will belong to + String language = req.getParameter("language"); + if (aid!=null && !aid.equals("")) { - SimpleHash mergeData = new SimpleHash(); - - // onetimepasswd - if(passwdProtection.equals("yes")){ - String passwd = this.createOneTimePasswd(); - System.out.println(passwd); - HttpSession session = req.getSession(false); - session.setAttribute("passwd",passwd); - mergeData.put("passwd", passwd); - } - + SimpleHash mergeData = new SimpleHash(); + + // onetimepasswd + if(passwdProtection.equals("yes")){ + String passwd = this.createOneTimePasswd(); + System.out.println(passwd); + HttpSession session = req.getSession(false); + session.setAttribute("passwd",passwd); + mergeData.put("passwd", passwd); + } + + if (language!=null) { + HttpSession session = req.getSession(false); + session.setAttribute("Locale", new Locale(language, "")); + session.setAttribute("passwd",language); + } + mergeData.put("aid", aid); deliver(req, res, mergeData, commentFormTemplate); } @@ -126,7 +180,7 @@ public class ServletModuleOpenIndy extends ServletModule */ public void inscomment(HttpServletRequest req, HttpServletResponse res) - throws ServletModuleException,ServletModuleUserException + throws ServletModuleException,ServletModuleUserException { String aid = req.getParameter("to_media"); // the article id the comment will belong to if (aid!=null && !aid.equals("")) @@ -134,44 +188,50 @@ public class ServletModuleOpenIndy extends ServletModule // ok, collecting data from form try { HashMap withValues = getIntersectingValues(req, DatabaseComment.getInstance()); - + //no html in comments(for now) for (Iterator i=withValues.keySet().iterator(); i.hasNext(); ){ String k=(String)i.next(); String v=(String)withValues.get(k); - + withValues.put(k,StringUtil.removeHTMLTags(v)); } withValues.put("is_published","1"); - - //checking the onetimepasswd - if(passwdProtection.equals("yes")){ - HttpSession session = req.getSession(false); - String sessionPasswd = (String)session.getAttribute("passwd"); - if ( sessionPasswd == null){ - throw new ServletModuleUserException("Lost password"); - } - String passwd = req.getParameter("passwd"); - if ( passwd == null || (!sessionPasswd.equals(passwd))) { - throw new ServletModuleUserException("Missing password"); - } - session.invalidate(); - } - + + //checking the onetimepasswd + if(passwdProtection.equals("yes")){ + HttpSession session = req.getSession(false); + String sessionPasswd = (String)session.getAttribute("passwd"); + if ( sessionPasswd == null){ + throw new ServletModuleUserException("Lost password"); + } + String passwd = req.getParameter("passwd"); + if ( passwd == null || (!sessionPasswd.equals(passwd))) { + throw new ServletModuleUserException("Missing password"); + } + session.invalidate(); + } + // inserting into database String id = mainModule.add(withValues); theLog.printDebugInfo("id: "+id); //insert was not successfull if(id==null){ deliver(req, res, new SimpleHash(), commentFormDupeTemplate); + } else { + DatabaseContent.getInstance().setUnproduced("id="+aid); + + try { + EntityComment comment = (EntityComment) DatabaseComment.getInstance().selectById(id); + MirGlobal.localizer().openPostings().afterCommentPosting(comment); + } + catch (Throwable t) { + throw new ServletModuleException(t.getMessage()); + } + + + } - - // producing new page - new ProducerContent().handle(null, null, true, false, aid); - - // sync the server - int exitValue = Helper.rsync(); - theLog.printDebugInfo("rsync:"+exitValue); // redirecting to url // should implement back to article @@ -193,16 +253,16 @@ public class ServletModuleOpenIndy extends ServletModule public void addposting(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException { SimpleHash mergeData = new SimpleHash(); - - // onetimepasswd - if(passwdProtection.equals("yes")){ - String passwd = this.createOneTimePasswd(); - System.out.println(passwd); - HttpSession session = req.getSession(false); - session.setAttribute("passwd",passwd); - mergeData.put("passwd", passwd); - } - + + // onetimepasswd + if(passwdProtection.equals("yes")){ + String passwd = this.createOneTimePasswd(); + System.out.println(passwd); + HttpSession session = req.getSession(false); + session.setAttribute("passwd",passwd); + mergeData.put("passwd", passwd); + } + String maxMedia = MirConfig.getProp("ServletModule.OpenIndy.MaxMediaUploadItems"); String numOfMedia = req.getParameter("medianum"); if(numOfMedia==null||numOfMedia.equals("")){ @@ -210,7 +270,7 @@ public class ServletModuleOpenIndy extends ServletModule } else if(Integer.parseInt(numOfMedia) > Integer.parseInt(maxMedia)) { numOfMedia = maxMedia; } - + int mediaNum = Integer.parseInt(numOfMedia); SimpleList mediaFields = new SimpleList(); for(int i =0; i 0) { + + if (to_topicsArr != null && to_topicsArr.length > 0) { try{ DatabaseContentToTopics.getInstance().setTopics(cid,to_topicsArr); setTopic = true; @@ -342,22 +408,13 @@ public class ServletModuleOpenIndy extends ServletModule DatabaseContentToMedia.getInstance().addMedia(cid,mediaEnt.getId()); } - // producing openpostinglist - new ProducerOpenPosting().handle(null,null,false,false); - // producing new page - new ProducerContent().handle(null, null, false, false,cid); - //if direct op producing startpage - if (directOp.equals("yes")) new ProducerStartPage().handle(null,null); - - //produce the topicPages if set - //should be more intelligent - //if(setTopic==true) new ProducerTopics().handle(null,null); - - // sync the server - //should be configureable - int exitValue = Helper.rsync(); - theLog.printDebugInfo("rsync: "+exitValue); - + try { + MirGlobal.localizer().openPostings().afterContentPosting( + (EntityContent)contentModule.getById(cid)); + } + catch (Throwable t) { + throw new ServletModuleException(t.getMessage()); + } } catch (MirMediaException e) { throw new ServletModuleException("MediaException: "+ e.toString());} catch (IOException e) { throw new ServletModuleException("IOException: "+ e.toString());} @@ -367,11 +424,9 @@ public class ServletModuleOpenIndy extends ServletModule deliver(req, res, mergeData, postingFormDoneTemplate); } -/** - * Method for dynamically generating a pdf from a fo file - */ - - + /* + * Method for dynamically generating a pdf from a fo file + */ public void getpdf(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException, ServletModuleUserException { String ID_REQUEST_PARAM = "id"; @@ -379,9 +434,9 @@ public class ServletModuleOpenIndy extends ServletModule String generateFO=MirConfig.getProp("GenerateFO"); String generatePDF=MirConfig.getProp("GeneratePDF"); - //don't do anything if we are not making FO files, or if we are pregenerating PDF's + //don't do anything if we are not making FO files, or if we are + //pregenerating PDF's if (generateFO.equals("yes") && generatePDF.equals("no")){ - //fop complains unless you do the logging this way Logger log = null; Hierarchy hierarchy = Hierarchy.getDefaultHierarchy(); @@ -390,20 +445,21 @@ public class ServletModuleOpenIndy extends ServletModule String producerStorageRoot=MirConfig.getProp("Producer.StorageRoot"); String producerDocRoot=MirConfig.getProp("Producer.DocRoot"); - String templateDir = MirConfig.getPropWithHome("HTMLTemplateProcessor.Dir"); + String templateDir=MirConfig.getPropWithHome("HTMLTemplateProcessor.Dir"); String xslSheet=templateDir + "/" - + MirConfig.getProp("Producer.PrintableContent.html2foStyleSheetName"); + + MirConfig.getProp("Producer.PrintableContent.html2foStyleSheetName"); try { String idParam = req.getParameter(ID_REQUEST_PARAM); - if (idParam != null){ - EntityContent contentEnt = (EntityContent)contentModule.getById(idParam); - String publishPath = contentEnt.getValue("publish_path"); - String foFile = producerStorageRoot + producerDocRoot + "/" - + publishPath + "/" + idParam + ".fo"; + if (idParam != null) { + EntityContent contentEnt = + (EntityContent)contentModule.getById(idParam); + String publishPath = contentEnt.getValue("publish_path"); + String foFile = producerStorageRoot + producerDocRoot + "/" + + publishPath + "/" + idParam + ".fo"; XSLTInputHandler input = new XSLTInputHandler(new File(foFile), new File(xslSheet)); - ByteArrayOutputStream out = new ByteArrayOutputStream(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); res.setContentType("application/pdf"); Driver driver = new Driver(); @@ -416,16 +472,13 @@ public class ServletModuleOpenIndy extends ServletModule res.setContentLength(content.length); res.getOutputStream().write(content); res.getOutputStream().flush(); - } - else { - throw new ServletModuleUserException("Can't generate a PDF without an id parameter."); - } - } - catch (Exception ex) { + } else { + throw new ServletModuleUserException("Missing id parameter."); + } + } catch (Exception ex) { throw new ServletModuleException(ex.toString()); } - } - else { + } else { throw new ServletModuleUserException("Can't generate a PDF because the config tells me not to."); } } @@ -440,17 +493,36 @@ public class ServletModuleOpenIndy extends ServletModule +", we do not support this mime-type. " +"Error One or more files of unrecognized type. Sorry"); } - - protected String createOneTimePasswd(){ - Random r = new Random(); - int random = r.nextInt(); - long l = System.currentTimeMillis(); - l = (l*l*l*l)/random; - if(l<0) l = l * -1; - String returnString = ""+l; - return returnString.substring(5); + + protected String createOneTimePasswd(){ + Random r = new Random(); + int random = r.nextInt(); + long l = System.currentTimeMillis(); + l = (l*l*l*l)/random; + if(l<0) l = l * -1; + String returnString = ""+l; + return returnString.substring(5); + } + + + /* this is an overwritten method of ServletModule in order + to use different bundles for open and admin */ + public void deliver(HttpServletRequest req, HttpServletResponse res, + TemplateModelRoot rtm, TemplateModelRoot popups, + String templateFilename) + throws ServletModuleException { + if (rtm == null) rtm = new SimpleHash(); + try { + PrintWriter out = res.getWriter(); + HTMLTemplateProcessor.process(res, templateFilename, rtm, popups, out, + getLocale(req), "bundles.open"); + out.close(); + } catch (HTMLParseException e) { + throw new ServletModuleException(e.toString()); + } catch (IOException e) { + throw new ServletModuleException(e.toString()); + } } - }