import freemarker.template.*;
import mir.servlet.*;
+import mir.media.*;
import mir.module.*;
import mir.misc.*;
import mir.storage.*;
/*
* ServletModuleContent -
- * liefert HTML fuer Content
+ * deliver html for the article admin form.
+ *
+ * @version $Revision: 1.20 $
+ * @author $Author: mh $
+ *
+ * $Log: ServletModuleContent.java,v $
+ * Revision 1.20 2002/08/25 19:00:11 mh
+ * merge of localization branch into HEAD. mh and zap
+ *
+ * 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
static ModuleTopics themenModule;
static ModuleSchwerpunkt schwerpunktModule;
- static ModuleGruppen gruppenModule;
static ModuleImages imageModule;
static String templateOpString;
private ServletModuleContent() {
try {
- theLog = Logfile.getInstance(Configuration.getProperty("Home") + Configuration.getProperty("ServletModule.Content.Logfile"));
- templateListString = Configuration.getProperty("ServletModule.Content.ListTemplate");
- templateOpString = Configuration.getProperty("ServletModule.Content.OpTemplate");
- templateObjektString = Configuration.getProperty("ServletModule.Content.ObjektTemplate");
- templateConfirmString = Configuration.getProperty("ServletModule.Content.ConfirmTemplate");
+ theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("ServletModule.Content.Logfile"));
+ templateListString = MirConfig.getProp("ServletModule.Content.ListTemplate");
+ //templateOpString = MirConfig.getProp("ServletModule.Content.OpTemplate");
+ templateObjektString = MirConfig.getProp("ServletModule.Content.ObjektTemplate");
+ templateConfirmString = MirConfig.getProp("ServletModule.Content.ConfirmTemplate");
mainModule = new ModuleContent(DatabaseContent.getInstance());
themenModule = new ModuleTopics(DatabaseTopics.getInstance());
schwerpunktModule = new ModuleSchwerpunkt(DatabaseFeature.getInstance());
- gruppenModule = new ModuleGruppen(DatabaseGroups.getInstance());
imageModule = new ModuleImages(DatabaseImages.getInstance());
} catch (StorageObjectException e) {
theLog.printDebugInfo("servletmodulecontent konnte nicht initialisiert werden");
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());
- mergeData.put("gruppenPopupData", gruppenModule.getGruppenAsSimpleList());
- 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", HTMLTemplateProcessor.makeSimpleHash(user));
- deliver(req, res, mergeData, templateObjektString);
+ _showObject(null, req, res);
}
withValues.put("is_published","0");
if (!withValues.containsKey("is_html"))
withValues.put("is_html","0");
- if (withValues.get("creator").toString().equals(""))
- withValues.put("creator","Anonym");
+
+// ML: this is not multi-language friendly and this can be done in a template
+// if (withValues.get("creator").toString().equals(""))
+// withValues.put("creator","Anonym");
+
+
String id = mainModule.add(withValues);
DatabaseContentToTopics.getInstance().setTopics(id,req.getParameterValues("to_topic"));
//theLog.printDebugInfo(":: content :: inserted");
if (confirmParam!= null && !confirmParam.equals("")) {
try {
mainModule.deleteById(idParam);
+
+ /** @todo the following two should be imlied in
+ * DatabaseContent */
+
//delete rows in the content_x_topic-table
DatabaseContentToTopics.getInstance().deleteByContentId(idParam);
//delete rows in the comment-table
String mediaIdParam = req.getParameter("mid");
String idParam = req.getParameter("cid");
if (idParam == null||mediaIdParam==null) throw new ServletModuleException("smod content :: attach :: cid/mid missing");
+
try {
EntityContent entContent = (EntityContent)mainModule.getById(idParam);
entContent.attach(mediaIdParam);
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);
}
public void dettach(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException
{
- String idParam = req.getParameter("cid");
- if (idParam == null) throw new ServletModuleException("smod content :: dettach :: cid missing");
+ String cidParam = req.getParameter("cid");
+ String midParam = req.getParameter("mid");
+ if (cidParam == null) throw new ServletModuleException("smod content :: dettach :: cid missing");
+ if (midParam == null) throw new ServletModuleException("smod content :: dettach :: mid missing");
+
try {
- EntityContent entContent = (EntityContent)mainModule.getById(idParam);
- entContent.dettach();
+ EntityContent entContent = (EntityContent)mainModule.getById(cidParam);
+ entContent.dettach(cidParam,midParam);
}
catch(ModuleException e) {
theLog.printError("smod content :: dettach :: could not get entityContent");
}
- _showObject(idParam, req, res);
+ catch(StorageObjectException e) {
+ theLog.printError("smod content :: dettach :: could not get entityContent");
+ }
+
+ _showObject(cidParam, req, res);
}
public void newswire(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException
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);
}
EntityUsers user = _getUser(req);
if (user==null) theLog.printDebugInfo("user null!");
String idParam = req.getParameter("id");
- if (idParam == null) throw new ServletModuleException("Falscher Aufruf: (id) nicht angegeben");
+ if (idParam == null) throw new ServletModuleException("Wrong call: (id) is missing");
HashMap withValues = getIntersectingValues(req, DatabaseContent.getInstance());
- //String topic_id = req.getParameter("to_topic");
String[] topic_id = req.getParameterValues("to_topic");
String content_id = req.getParameter("id");
// withValues.put("publish_path", StringUtil.webdbDate2path((String)withValues.get("date")));
withValues.put("is_published","0");
if (!withValues.containsKey("is_html"))
withValues.put("is_html","0");
- if (withValues.get("creator").toString().equals(""))
- withValues.put("creator","Anonym");
+
+// ML: this is not multi-language friendly and this can be done in a template
+// if (withValues.get("creator").toString().equals(""))
+// withValues.put("creator","Anonym");
+
//theLog.printDebugInfo("updating. ");
String id = mainModule.set(withValues);
DatabaseContentToTopics.getInstance().setTopics(req.getParameter("id"),topic_id);
}
}
- //
- // 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<topicToContent.size();i++){
- topics = (EntityTopics)topicToContent.elementAt(i);
- topicList.add(topics.getId());
- }
- mergeData.put("to_topic",topicList);
+ TemplateModelRoot entContent;
+ if (id != null) {
+ entContent = (TemplateModelRoot)mainModule.getById(id);
+ } else {
+ SimpleHash withValues = new SimpleHash();
+ withValues.put("new", "1");
+ withValues.put("is_published", "0");
+ String now = StringUtil.date2webdbDate(new GregorianCalendar());
+ withValues.put("date", new SimpleScalar(now));
+ EntityUsers user = _getUser(req);
+ withValues.put("login_user", user);
+ entContent = withValues;
}
- //obsolete, because of psqgl 7.1.x
- //mergeData.put("content_data", entContent.getContentData());
- mergeData.put("themenPopupData", themenModule.getTopicsAsSimpleList());
- mergeData.put("gruppenPopupData", gruppenModule.getGruppenAsSimpleList());
+
+
+ extraInfo.put("themenPopupData", themenModule.getTopicsAsSimpleList());
try {
- mergeData.put("articletypePopupData", DatabaseArticleType.getInstance().getPopupData());
+ extraInfo.put("articletypePopupData",
+ DatabaseArticleType.getInstance().getPopupData());
} catch (Exception e) {
theLog.printError("articletype could not be fetched.");
}
try {
- mergeData.put("languagePopupData", DatabaseLanguage.getInstance().getPopupData());
+ extraInfo.put("languagePopupData", DatabaseLanguage.getInstance().getPopupData());
} catch (Exception e) {
theLog.printError("language-popup could not be fetched.");
}
- // get the images
- String currentMediaId = entContent.getValue("to_media");
- SimpleHash imageHash = new SimpleHash();
- if (currentMediaId!=null && !currentMediaId.equals("")) {
- imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
- mergeData.put("images", imageHash);
- }
-
- //mergeData.put("gruppenHashData", gruppenModule.getHashData());
- 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", HTMLTemplateProcessor.makeSimpleHash(_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());
}
SimpleHash modelRoot = HTMLTemplateProcessor.makeSimpleHashWithEntitylistInfos(theList);
modelRoot.put("themenHashData", themenModule.getHashData());
modelRoot.put("schwerpunktHashData", schwerpunktModule.getHashData());
- modelRoot.put("gruppenHashData", gruppenModule.getHashData());
modelRoot.put("articletypeHash", DatabaseArticleType.getInstance().getHashData());
deliver(req, res, modelRoot, templateListString);
} else { // count = 1
throws ServletModuleException {
try {
- // hier dann htmlcode rausschreiben
+ // delivering html
if (theList == null || theList.getCount() == 0 || theList.getCount()>1) {
SimpleHash modelRoot = HTMLTemplateProcessor.makeSimpleHashWithEntitylistInfos(theList);
modelRoot.put("articletypeHash", DatabaseArticleType.getInstance().getHashData());
- modelRoot.put("gruppenHashData", gruppenModule.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.getTinyIcon();
+ iconAlt = mediaHandler.getIconAlt();
+ }
+ }
+ }
+ //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);