X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fservlet%2FServletModuleContent.java;h=b89bbe0890ffddcb0bcbecbe32025f97865fd775;hb=69742ccb6ca960d82bf53a0d591d04bfc5f92468;hp=9e1a4d44d626c6f031bc552a49aff0fac45bc895;hpb=1e06f519c12e542b61df7a19ceec7871011112c7;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleContent.java b/source/mircoders/servlet/ServletModuleContent.java index 9e1a4d44..b89bbe08 100755 --- a/source/mircoders/servlet/ServletModuleContent.java +++ b/source/mircoders/servlet/ServletModuleContent.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.*; @@ -11,6 +42,7 @@ import javax.servlet.http.*; import freemarker.template.*; import mir.servlet.*; +import mir.media.*; import mir.module.*; import mir.misc.*; import mir.storage.*; @@ -23,10 +55,33 @@ import mircoders.entity.*; /* * ServletModuleContent - - * liefert HTML fuer Content + * deliver html for the article admin form. + * + * @version $Revision: 1.19.2.2 $ + * @author $Author: mh $ + * + * $Log: ServletModuleContent.java,v $ + * Revision 1.19.2.2 2002/11/01 05:38:21 mh + * Converted media Interface to use streams (Java IO) instead of byte buffers of + * the entire uplaoded files. These saves loads of unecessary memory use. JAI + * still consumes quite a bit though. + * + * A new temporary file (for JAI) parameter is necessary and is in the config.properties file. + * + * A nice side effect of this work is the FileHandler interface which is + * basically a call back mechanism for WebdbMultipartRequest which allows the + * uploaded file to handled by different classes. For example, for a media + * upload, the content-type, etc.. needs to be determined, but if say the + * FileEditor had a feature to upload static files... another handler wood be + * needed. Right now only the MediaRequest handler exists. + * + * Revision 1.19.2.1 2002/09/01 21:31:44 mh + * Mir goes GPL + * + * Revision 1.19 2002/07/20 22:24:25 mh + * made the add() method use _showObject. Fixes a bug that cause the popUps not to show up when adding an article in the admin * * - * @author RK */ public class ServletModuleContent extends ServletModule @@ -45,9 +100,9 @@ public class ServletModuleContent extends ServletModule private ServletModuleContent() { try { - theLog = Logfile.getInstance(this.getClass().getName()); + theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("ServletModule.Content.Logfile")); templateListString = MirConfig.getProp("ServletModule.Content.ListTemplate"); - templateOpString = MirConfig.getProp("ServletModule.Content.OpTemplate"); + //templateOpString = MirConfig.getProp("ServletModule.Content.OpTemplate"); templateObjektString = MirConfig.getProp("ServletModule.Content.ObjektTemplate"); templateConfirmString = MirConfig.getProp("ServletModule.Content.ConfirmTemplate"); mainModule = new ModuleContent(DatabaseContent.getInstance()); @@ -139,27 +194,7 @@ public class ServletModuleContent extends ServletModule public void add(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException { - - EntityUsers user = _getUser(req); - SimpleHash mergeData = new SimpleHash(); - mergeData.put("new", "1"); - mergeData.put("is_published", "1"); - String now = StringUtil.date2webdbDate(new GregorianCalendar()); - mergeData.put("date", new SimpleScalar(now)); - mergeData.put("themenPopupData", themenModule.getTopicsAsSimpleList()); - try { - mergeData.put("articletypePopupData", DatabaseArticleType.getInstance().getPopupData()); - } catch (Exception e) { - theLog.printError("articletype could not be fetched."); - } - try { - mergeData.put("languagePopupData", DatabaseLanguage.getInstance().getPopupData()); - } catch (Exception e) { - theLog.printError("language-popup could not be fetched."); - } - mergeData.put("schwerpunktPopupData", schwerpunktModule.getSchwerpunktAsSimpleList()); - mergeData.put("login_user", user); - deliver(req, res, mergeData, templateObjektString); + _showObject(null, req, res); } @@ -263,6 +298,10 @@ public class ServletModuleContent extends ServletModule catch(ModuleException e) { theLog.printError("smod content :: attach :: could not get entityContent"); } + catch(StorageObjectException e) { + theLog.printError("smod content :: attach :: could not get entityContent"); + } + _showObject(idParam, req, res); } @@ -280,6 +319,10 @@ public class ServletModuleContent extends ServletModule catch(ModuleException e) { theLog.printError("smod content :: dettach :: could not get entityContent"); } + catch(StorageObjectException e) { + theLog.printError("smod content :: dettach :: could not get entityContent"); + } + _showObject(cidParam, req, res); } @@ -294,6 +337,10 @@ public class ServletModuleContent extends ServletModule catch(ModuleException e) { theLog.printError("smod content :: newswire :: could not get entityContent"); } + catch(StorageObjectException e) { + theLog.printError("smod content :: dettach :: could not get entityContent"); + } + list(req, res); } @@ -341,55 +388,53 @@ public class ServletModuleContent extends ServletModule } } - // - // Hilfsmethoden - + /* + * HelperMethod shows the basic article editing form. + * + * if the "id" parameter is null, it means show an empty form to add a new + * article. + */ private void _showObject(String id, HttpServletRequest req, HttpServletResponse res) throws ServletModuleException { + SimpleHash extraInfo = new SimpleHash(); try { - EntityContent entContent=(EntityContent)mainModule.getById(id); - SimpleHash mergeData = HTMLTemplateProcessor.makeSimpleHash(entContent); - EntityList topicToContent = DatabaseContentToTopics.getInstance().getTopics(entContent); - if (topicToContent!=null && topicToContent.size()>0){ - theLog.printDebugInfo("topicanzahl: "+topicToContent.size()); - Entity topics = null; - SimpleList topicList = new SimpleList(); - for(int i=0;i=1) { - SimpleList mediaList = HTMLTemplateProcessor.makeSimpleList(currentMedia); - mergeData.put("to_media", mediaList); - } - - mergeData.put("schwerpunktPopupData", schwerpunktModule.getSchwerpunktAsSimpleList()); + extraInfo.put("schwerpunktPopupData", schwerpunktModule.getSchwerpunktAsSimpleList()); // hier code um zur liste zurueckzukommen String offsetParam, whereParam, orderParam; - if ((offsetParam = req.getParameter("offset"))!=null) mergeData.put("offset", offsetParam); - if ((whereParam = req.getParameter("where"))!=null) mergeData.put("where", whereParam); - if ((orderParam = req.getParameter("order"))!=null) mergeData.put("order", orderParam); - mergeData.put("login_user", _getUser(req)); - deliver(req, res, mergeData, templateObjektString); + if ((offsetParam = req.getParameter("offset"))!=null) extraInfo.put("offset", offsetParam); + if ((whereParam = req.getParameter("where"))!=null) extraInfo.put("where", whereParam); + if ((orderParam = req.getParameter("order"))!=null) extraInfo.put("order", orderParam); + extraInfo.put("login_user", _getUser(req)); + deliver(req, res, entContent, extraInfo, templateObjektString); } catch (Exception e) { throw new ServletModuleException(e.toString()); } @@ -423,6 +468,84 @@ public class ServletModuleContent extends ServletModule if (theList == null || theList.getCount() == 0 || theList.getCount()>1) { SimpleHash modelRoot = HTMLTemplateProcessor.makeSimpleHashWithEntitylistInfos(theList); modelRoot.put("articletypeHash", DatabaseArticleType.getInstance().getHashData()); + + EntityContent currentContent; + EntityList upMediaEntityList; + EntityList imageEntityList; + EntityList currentMediaList; + Entity mediaType; + EntityMedia uploadedMedia; + SimpleList opList; + String imageRoot = MirConfig.getProp("Producer.ImageRoot"); + + SimpleHash contentHash; + Class mediaHandlerClass=null; + MirMedia mediaHandler=null; + String mediaHandlerName=null; + Database mediaStorage=null; + String tinyIcon; + String iconAlt; + + for (int i=0; i < theList.size();i++) { + currentContent = (EntityContent)theList.elementAt(i); + //fetching/setting the images + upMediaEntityList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent); + if (upMediaEntityList!=null && upMediaEntityList.getCount()>=1) { + tinyIcon = null; + iconAlt = null; + mediaHandler = null; + mediaHandlerName = null; + for (int n=0; n < upMediaEntityList.size();n++) { + uploadedMedia = (EntityMedia)upMediaEntityList.elementAt(n); + mediaType = uploadedMedia.getMediaType(); + + //must of had a non-existant to_media_type entry.. + //let's save our ass. + if (mediaType != null) { + try { + mediaHandlerName = mediaType.getValue("classname"); + mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName); + mediaHandler = (MirMedia)mediaHandlerClass.newInstance(); + } catch (Exception e) { + theLog.printError("ProducerStartpage:problem in reflection: "+mediaHandlerName); + } + + //the "best" media type to show + if (mediaHandler.isVideo()) { + tinyIcon = MirConfig.getProp("Producer.Icon.TinyVideo"); + iconAlt = "Video"; + break; + } else if (mediaHandler.isAudio()) { + tinyIcon = MirConfig.getProp("Producer.Icon.TinyAudio"); + iconAlt = "Audio"; + } else if (tinyIcon == null && !mediaHandler.isImage()) { + tinyIcon = mediaHandler.getTinyIconName(); + iconAlt = mediaHandler.getIconAltName(); + } + } + } + //it only has image(s) + if (tinyIcon == null) { + tinyIcon = MirConfig.getProp("Producer.Icon.TinyImage"); + iconAlt = "Image"; + } + + // uploadedMedia Entity list is empty. + // we only have text + } else { + tinyIcon = MirConfig.getProp("Producer.Icon.TinyText"); + iconAlt = "Text"; + } + + try{ + //mediaList = HTMLTemplateProcessor.makeSimpleList(upMediaEntityList); + contentHash = (SimpleHash)theList.get(i); + contentHash.put("tiny_icon", imageRoot+"/"+tinyIcon); + contentHash.put("icon_alt", iconAlt); + } catch (Exception e){} + } + + deliver(req, res, modelRoot, templateListString); } else { // count = 1 _showObject(theList.elementAt(0).getId(), req, res);