From 41d5925718ae2fc0824d52453621e398c9561f61 Mon Sep 17 00:00:00 2001 From: zapata Date: Wed, 13 Aug 2003 02:43:56 +0000 Subject: [PATCH] working towards full bean support --- dbscripts/populate_mediafolder.sql | 4 - source/default.properties | 2 +- source/mir/servlet/ServletModule.java | 999 +++++++++++---------- .../basic/MirBasicDataModelLocalizer.java | 37 +- .../basic/MirBasicProducerAssistantLocalizer.java | 318 +++---- source/mircoders/media/MediaHandlerAudio.java | 5 +- source/mircoders/servlet/ServletModuleAudio.java | 18 +- source/mircoders/servlet/ServletModuleComment.java | 6 +- source/mircoders/servlet/ServletModuleContent.java | 72 +- source/mircoders/servlet/ServletModuleImages.java | 18 +- .../mircoders/servlet/ServletModuleOtherMedia.java | 28 +- .../servlet/ServletModuleUploadedMedia.java | 921 ++++++++++--------- source/mircoders/servlet/ServletModuleVideo.java | 18 +- source/mircoders/storage/DatabaseContent.java | 6 +- templates/admin/FUNCTIONS_media.template | 69 +- templates/admin/audio.template | 171 +--- templates/admin/commentlist.template | 2 +- templates/admin/confirm.template | 44 +- templates/admin/contentlist.template | 2 +- templates/admin/head_nonavi.template | 19 +- templates/admin/image.template | 177 +--- templates/admin/imagelist.template | 86 +- templates/admin/media.template | 143 --- templates/admin/other.template | 39 + templates/admin/start_admin.template | 2 +- templates/admin/uploadedmedia.template | 100 +++ templates/admin/video.template | 175 +--- templates/admin/videolist.template | 27 +- 28 files changed, 1614 insertions(+), 1894 deletions(-) delete mode 100755 templates/admin/media.template create mode 100755 templates/admin/other.template create mode 100755 templates/admin/uploadedmedia.template diff --git a/dbscripts/populate_mediafolder.sql b/dbscripts/populate_mediafolder.sql index d02e1093..64a6cc93 100755 --- a/dbscripts/populate_mediafolder.sql +++ b/dbscripts/populate_mediafolder.sql @@ -1,4 +1,3 @@ - -- -- Selected TOC Entries: -- @@ -10,8 +9,5 @@ -- Disable triggers -UPDATE "pg_class" SET "reltriggers" = 0 WHERE "relname" = 'media_folder'; - INSERT INTO "media_folder" VALUES (7,'openposting','20020329','','openposting','media anonymously uploaded','2002-03-29 14:45:53+01',NULL); -- Enable triggers -UPDATE pg_class SET reltriggers = (SELECT count(*) FROM pg_trigger where pg_class.oid = tgrelid) WHERE relname = 'media_folder'; diff --git a/source/default.properties b/source/default.properties index 15f60b50..78faf9e9 100755 --- a/source/default.properties +++ b/source/default.properties @@ -463,7 +463,7 @@ ServletModule.Video.ObjektTemplate=video.template ServletModule.Video.ListTemplate=videolist.template ServletModule.OtherMedia.ConfirmTemplate=confirm.template -ServletModule.OtherMedia.ObjektTemplate=media.template +ServletModule.OtherMedia.ObjektTemplate=other.template ServletModule.OtherMedia.ListTemplate=medialist.template ServletModule.Content.ConfirmTemplate=confirm.template diff --git a/source/mir/servlet/ServletModule.java b/source/mir/servlet/ServletModule.java index 4a158d9c..c8f252ac 100755 --- a/source/mir/servlet/ServletModule.java +++ b/source/mir/servlet/ServletModule.java @@ -1,480 +1,521 @@ -/* - * 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 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 mir.servlet; - -import java.io.PrintWriter; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import mir.config.MirPropertiesConfiguration; -import mir.config.MirPropertiesConfiguration.PropertiesConfigExc; -import mir.entity.EntityList; -import mir.log.LoggerWrapper; -import mir.misc.HTMLTemplateProcessor; -import mir.misc.LineFilterWriter; -import mir.module.AbstractModule; -import mir.storage.StorageObject; -import mir.util.HTTPRequestParser; -import freemarker.template.SimpleHash; -import freemarker.template.TemplateModelRoot; - - - - -/** - * Abstract class ServletModule provides the base functionality for servlets. - * Deriving a class from ServletModule enables class to insert/edit/update/delete - * and list Entity from a Database via mainModule. - * - * - * Abstrakte Klasse ServletModule stellt die Basisfunktionalitaet der - * abgeleiteten ServletModule zur Verf?gung. - * - * @version 28.6.1999 - * @author RK - */ - -public abstract class ServletModule { - - public String defaultAction; - protected LoggerWrapper logger; - protected MirPropertiesConfiguration configuration; - protected AbstractModule mainModule; - protected Locale fallbackLocale; - protected String templateListString; - protected String templateObjektString; - protected String templateConfirmString; - - - public ServletModule(){ - try { - configuration = MirPropertiesConfiguration.instance(); - } - catch (PropertiesConfigExc e) { - throw new RuntimeException("Can't get configuration: " + e.getMessage()); - } - - fallbackLocale = new Locale(configuration.getString("Mir.Admin.FallbackLanguage", "en"), ""); - } - - - /** - * Singelton - Methode muss in den abgeleiteten Klassen ueberschrieben werden. - * @return ServletModule - */ - public static ServletModule getInstance() { - return null; - } - - /** - * get the module name to be used for generic operations like delete. - */ - protected String getOperationModuleName() { - return getClass().getName().substring((new String("mircoders.servlet.ServletModule")).length()); - } - - /** - * get the locale either from the session or the accept-language header ot the request - * this supersedes getLanguage for the new i18n - */ - public Locale getLocale(HttpServletRequest req) { - Locale loc = null; - HttpSession session = req.getSession(false); - if (session != null) { - // session can be null in case of logout - loc = (Locale) session.getAttribute("locale"); - } - // if there is nothing in the session get it fron the accept-language - if (loc == null) { - loc = req.getLocale(); - } - return loc; - } - - /** - * get the locale either from the session or the accept-language header ot the request - * this supersedes getLanguage for the new i18n - */ - public Locale getFallbackLocale(HttpServletRequest req) { - return fallbackLocale; - } - - public void redirect(HttpServletResponse aResponse, String aQuery) throws ServletModuleExc, ServletModuleFailure { - try { - aResponse.sendRedirect(aResponse.encodeRedirectURL(MirPropertiesConfiguration.instance().getString("RootUri") + "/Mir?"+aQuery)); - } - catch (Throwable t) { - throw new ServletModuleFailure("ServletModule.redirect: " +t.getMessage(), t); - } - } - - /** - * list(req,res) - generische Listmethode. Wennn die Funktionalitaet - * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse - * ueberschreiben werden. - * - * @param req Http-Request, das vom Dispatcher durchgereicht wird - * @param res Http-Response, die vom Dispatcher durchgereicht wird - */ - public void list(HttpServletRequest req, HttpServletResponse res) - throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { - try { - EntityList theList; - String offsetParam = req.getParameter("offset"); - int offset = 0; - PrintWriter out = res.getWriter(); - - // hier offsetcode bearbeiten - if (offsetParam != null && !offsetParam.equals("")) { - offset = Integer.parseInt(offsetParam); - } - if (req.getParameter("next") != null) { - offset = Integer.parseInt(req.getParameter("nextoffset")); - } - else { - if (req.getParameter("prev") != null) { - offset = Integer.parseInt(req.getParameter("prevoffset")); - } - } - theList = mainModule.getByWhereClause(null, offset); - - HTMLTemplateProcessor.process(res, templateListString, theList, null, null, out, getLocale(req), getFallbackLocale(req)); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - /** - * add(req,res) - generische Addmethode. Wennn die Funktionalitaet - * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse - * ueberschreiben werden. - * @param req Http-Request, das vom Dispatcher durchgereicht wird - * @param res Http-Response, die vom Dispatcher durchgereicht wird - */ - public void add(HttpServletRequest req, HttpServletResponse res) - throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { - - try { - SimpleHash mergeData = new SimpleHash(); - mergeData.put("new", "1"); - deliver(req, res, mergeData, templateObjektString); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - /** - * insert(req,res) - generische Insertmethode, folgt auf add. - * Wennn die Funktionalitaet - * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse - * ueberschreiben werden. - * - * @param req Http-Request, das vom Dispatcher durchgereicht wird - * @param res Http-Response, die vom Dispatcher durchgereicht wird - */ - public void insert(HttpServletRequest req, HttpServletResponse res) - throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { - try { - Map withValues = getIntersectingValues(req, mainModule.getStorageObject()); - logger.debug("--trying to add..."); - String id = mainModule.add(withValues); - logger.debug("--trying to deliver..." + id); - list(req, res); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - /** - * delete(req,res) - generic delete method. Can be overridden in subclasses. - * - */ - - public void delete(HttpServletRequest req, HttpServletResponse res) - throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { - try { - String idParam = req.getParameter("id"); - - if (idParam == null) - throw new ServletModuleExc("Invalid call to delete: no id supplied"); - - String confirmParam = req.getParameter("confirm"); - String cancelParam = req.getParameter("cancel"); - if (confirmParam == null && cancelParam == null) { - SimpleHash mergeData = new SimpleHash(); - - mergeData.put("module", getOperationModuleName()); - mergeData.put("infoString", getOperationModuleName() + ": " + idParam); - mergeData.put("id", idParam); - mergeData.put("where", req.getParameter("where")); - mergeData.put("order", req.getParameter("order")); - mergeData.put("offset", req.getParameter("offset")); - // this stuff is to be compatible with the other more advanced - // search method used for media and comments - mergeData.put("query_media_folder", req.getParameter("query_media_folder")); - mergeData.put("query_is_published", req.getParameter("query_is_published")); - mergeData.put("query_text", req.getParameter("query_text")); - mergeData.put("query_field", req.getParameter("query_field")); - - deliver(req, res, mergeData, templateConfirmString); - } - else { - if (confirmParam != null && !confirmParam.equals("")) { - //theLog.printInfo("delete confirmed!"); - mainModule.deleteById(idParam); - list(req, res); // back to list - } - else { - if (req.getParameter("where") != null) - list(req, res); - else - edit(req, res); - } - } - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - /** - * edit(req,res) - generische Editmethode. Wennn die Funktionalitaet - * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse - * ueberschreiben werden. - * - * @param req Http-Request, das vom Dispatcher durchgereicht wird - * @param res Http-Response, die vom Dispatcher durchgereicht wird - */ - public void edit(HttpServletRequest req, HttpServletResponse res) - throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { - edit(req, res, req.getParameter("id")); - } - - /** - * edit(req,res) - generische Editmethode. Wennn die Funktionalitaet - * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse - * ueberschreiben werden. - * - * @param req Http-Request, das vom Dispatcher durchgereicht wird - * @param res Http-Response, die vom Dispatcher durchgereicht wird - */ - public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse, String anIdentifier) - throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { - try { - deliver(aRequest, aResponse, mainModule.getById(anIdentifier), templateObjektString); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - /** - * update(req,res) - generische Updatemethode. Wennn die Funktionalitaet - * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse - * ueberschreiben werden. - * - * @param req Http-Request, das vom Dispatcher durchgereicht wird - * @param res Http-Response, die vom Dispatcher durchgereicht wird - */ - - public void update(HttpServletRequest req, HttpServletResponse res) - throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { - try { - String idParam = req.getParameter("id"); - Map withValues = getIntersectingValues(req, mainModule.getStorageObject()); - - String id = mainModule.set(withValues); - String whereParam = req.getParameter("where"); - String orderParam = req.getParameter("order"); - - if ((whereParam != null && !whereParam.equals("")) || (orderParam != null && !orderParam.equals(""))) { - list(req, res); - } - else { - edit(req, res); - } - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - /** - * deliver liefert das Template mit dem Filenamen templateFilename - * an den HttpServletResponse res aus, nachdem es mit den Daten aus - * TemplateModelRoot rtm gemischt wurde - * - * @param res Http-Response, die vom Dispatcher durchgereicht wird - * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den - * Daten, die ins Template gemerged werden sollen. - * @param tmpl Name des Templates - * @exception ServletModuleException - */ - public void deliver(HttpServletRequest req, HttpServletResponse res, TemplateModelRoot rtm, - TemplateModelRoot popups, String templateFilename) throws ServletModuleFailure { - if (rtm == null) - rtm = new SimpleHash(); - - try { - PrintWriter out = res.getWriter(); - HTMLTemplateProcessor.process(res, templateFilename, rtm, popups, out, getLocale(req), getFallbackLocale(req)); - - // we default to admin bundles here, which is not exactly beautiful... - // but this whole producer stuff is going to be rewritten soon. - // ServletModuleOpenIndy overwrites deliver() to use open bundles - // (br1) - out.close(); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - - /** - * deliver liefert das Template mit dem Filenamen templateFilename - * an den HttpServletResponse res aus, nachdem es mit den Daten aus - * TemplateModelRoot rtm gemischt wurde - * - * @param res Http-Response, die vom Dispatcher durchgereicht wird - * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den - * Daten, die ins Template gemerged werden sollen. - * @param tmpl Name des Templates - * @exception ServletModuleException - */ - public void deliver(HttpServletRequest req, HttpServletResponse res, - TemplateModelRoot rtm, String templateFilename) throws ServletModuleFailure { - deliver(req, res, rtm, null, templateFilename); - } - - /** - * deliver liefert das Template mit dem Filenamen templateFilename - * an den HttpServletResponse res aus, nachdem es mit den Daten aus - * TemplateModelRoot rtm gemischt wurde - * - * @param res Http-Response, die vom Dispatcher durchgereicht wird - * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den - * Daten, die ins Template gemerged werden sollen. - * @param tmpl Name des Templates - * @exception ServletModuleException - */ - public void deliver_compressed(HttpServletRequest req, HttpServletResponse res, - TemplateModelRoot rtm, String templateFilename) - throws ServletModuleFailure { - if (rtm == null) rtm = new SimpleHash(); - try { - PrintWriter out = new LineFilterWriter(res.getWriter()); - //PrintWriter out = res.getWriter(); - HTMLTemplateProcessor.process(res, templateFilename, rtm, null, out, getLocale(req), getFallbackLocale(req)); - out.close(); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - /** - * deliver liefert das Template mit dem Filenamen templateFilename - * an den HttpServletResponse res aus, nachdem es mit den Daten aus - * TemplateModelRoot rtm gemischt wurde - * - * @param out ist der OutputStream, in den die gergten Daten geschickt werden sollen. - * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den - * Daten, die ins Template gemerged werden sollen. - * @param tmpl Name des Templates - * @exception ServletModuleException - */ - private void deliver(HttpServletResponse res, HttpServletRequest req, PrintWriter out, - TemplateModelRoot rtm, String templateFilename) - throws ServletModuleFailure { - try { - HTMLTemplateProcessor.process(res, templateFilename, rtm, null, out, getLocale(req), getFallbackLocale(req)); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - /** - * Wenn die abgeleitete Klasse diese Methode ueberschreibt und einen String mit einem - * Methodennamen zurueckliefert, dann wird diese Methode bei fehlender Angabe des - * doParameters ausgefuehrt. - * - * @return Name der Default-Action - */ - public String defaultAction() { - return defaultAction; - } - - /** - * Gets the fields from a httprequest and matches them with the metadata from - * the storage object. Returns the keys that match, with their values. - * - * @return Map with the values - */ - public Map getIntersectingValues(HttpServletRequest req, StorageObject theStorage) - throws ServletModuleExc, ServletModuleFailure { - - try { - HTTPRequestParser parser; - List theFieldList; - - parser = new HTTPRequestParser(req); - - theFieldList = theStorage.getFields(); - - Map withValues = new HashMap(); - String aField, aValue; - - for (int i = 0; i < theFieldList.size(); i++) { - aField = (String) theFieldList.get(i); - - aValue = parser.getParameter(aField); - if (aValue != null) - withValues.put(aField, aValue); - } - return withValues; - } - catch (Throwable e) { - e.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE)); - - throw new ServletModuleFailure( "ServletModule.getIntersectingValues: " + e.getMessage(), e); - } - } +/* + * 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 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 mir.servlet; + +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import mir.config.MirPropertiesConfiguration; +import mir.config.MirPropertiesConfiguration.PropertiesConfigExc; +import mir.entity.EntityList; +import mir.log.LoggerWrapper; +import mir.misc.HTMLTemplateProcessor; +import mir.misc.LineFilterWriter; +import mir.module.AbstractModule; +import mir.storage.StorageObject; +import mir.util.HTTPRequestParser; +import mircoders.servlet.*; +import freemarker.template.SimpleHash; +import freemarker.template.TemplateModelRoot; + + + + +/** + * Abstract class ServletModule provides the base functionality for servlets. + * Deriving a class from ServletModule enables class to insert/edit/update/delete + * and list Entity from a Database via mainModule. + * + * + * Abstrakte Klasse ServletModule stellt die Basisfunktionalitaet der + * abgeleiteten ServletModule zur Verf?gung. + * + * @version 28.6.1999 + * @author RK + */ + +public abstract class ServletModule { + + public String defaultAction; + protected LoggerWrapper logger; + protected MirPropertiesConfiguration configuration; + protected AbstractModule mainModule; + protected Locale fallbackLocale; + protected String templateListString; + protected String templateObjektString; + protected String templateConfirmString; + + + public ServletModule(){ + try { + configuration = MirPropertiesConfiguration.instance(); + } + catch (PropertiesConfigExc e) { + throw new RuntimeException("Can't get configuration: " + e.getMessage()); + } + + fallbackLocale = new Locale(configuration.getString("Mir.Admin.FallbackLanguage", "en"), ""); + } + + + /** + * Singelton - Methode muss in den abgeleiteten Klassen ueberschrieben werden. + * @return ServletModule + */ + public static ServletModule getInstance() { + return null; + } + + /** + * get the module name to be used for generic operations like delete. + */ + protected String getOperationModuleName() { + return getClass().getName().substring((new String("mircoders.servlet.ServletModule")).length()); + } + + /** + * get the locale either from the session or the accept-language header ot the request + * this supersedes getLanguage for the new i18n + */ + public Locale getLocale(HttpServletRequest req) { + Locale loc = null; + HttpSession session = req.getSession(false); + if (session != null) { + // session can be null in case of logout + loc = (Locale) session.getAttribute("locale"); + } + // if there is nothing in the session get it fron the accept-language + if (loc == null) { + loc = req.getLocale(); + } + return loc; + } + + /** + * get the locale either from the session or the accept-language header ot the request + * this supersedes getLanguage for the new i18n + */ + public Locale getFallbackLocale(HttpServletRequest req) { + return fallbackLocale; + } + + public void redirect(HttpServletResponse aResponse, String aQuery) throws ServletModuleExc, ServletModuleFailure { + try { + aResponse.sendRedirect(aResponse.encodeRedirectURL(MirPropertiesConfiguration.instance().getString("RootUri") + "/Mir?"+aQuery)); + } + catch (Throwable t) { + throw new ServletModuleFailure("ServletModule.redirect: " +t.getMessage(), t); + } + } + + /** + * list(req,res) - generische Listmethode. Wennn die Funktionalitaet + * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse + * ueberschreiben werden. + * + * @param req Http-Request, das vom Dispatcher durchgereicht wird + * @param res Http-Response, die vom Dispatcher durchgereicht wird + */ + public void list(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { + try { + EntityList theList; + String offsetParam = req.getParameter("offset"); + int offset = 0; + PrintWriter out = res.getWriter(); + + // hier offsetcode bearbeiten + if (offsetParam != null && !offsetParam.equals("")) { + offset = Integer.parseInt(offsetParam); + } + if (req.getParameter("next") != null) { + offset = Integer.parseInt(req.getParameter("nextoffset")); + } + else { + if (req.getParameter("prev") != null) { + offset = Integer.parseInt(req.getParameter("prevoffset")); + } + } + theList = mainModule.getByWhereClause(null, offset); + + HTMLTemplateProcessor.process(res, templateListString, theList, null, null, out, getLocale(req), getFallbackLocale(req)); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + /** + * add(req,res) - generische Addmethode. Wennn die Funktionalitaet + * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse + * ueberschreiben werden. + * @param req Http-Request, das vom Dispatcher durchgereicht wird + * @param res Http-Response, die vom Dispatcher durchgereicht wird + */ + public void add(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { + + try { + SimpleHash mergeData = new SimpleHash(); + mergeData.put("new", "1"); + deliver(req, res, mergeData, templateObjektString); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + /** + * insert(req,res) - generische Insertmethode, folgt auf add. + * Wennn die Funktionalitaet + * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse + * ueberschreiben werden. + * + * @param req Http-Request, das vom Dispatcher durchgereicht wird + * @param res Http-Response, die vom Dispatcher durchgereicht wird + */ + public void insert(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { + try { + Map withValues = getIntersectingValues(req, mainModule.getStorageObject()); + logger.debug("--trying to add..."); + String id = mainModule.add(withValues); + logger.debug("--trying to deliver..." + id); + list(req, res); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + /** + * delete(req,res) - generic delete method. Can be overridden in subclasses. + * + */ +/* + public void delete(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { + try { + String idParam = req.getParameter("id"); + + if (idParam == null) + throw new ServletModuleExc("Invalid call to delete: no id supplied"); + + String confirmParam = req.getParameter("confirm"); + String cancelParam = req.getParameter("cancel"); + if (confirmParam == null && cancelParam == null) { + SimpleHash mergeData = new SimpleHash(); + + mergeData.put("module", getOperationModuleName()); + mergeData.put("infoString", getOperationModuleName() + ": " + idParam); + mergeData.put("id", idParam); + mergeData.put("where", req.getParameter("where")); + mergeData.put("order", req.getParameter("order")); + mergeData.put("offset", req.getParameter("offset")); + // this stuff is to be compatible with the other more advanced + // search method used for media and comments + mergeData.put("query_media_folder", req.getParameter("query_media_folder")); + mergeData.put("query_is_published", req.getParameter("query_is_published")); + mergeData.put("query_text", req.getParameter("query_text")); + mergeData.put("query_field", req.getParameter("query_field")); + + deliver(req, res, mergeData, templateConfirmString); + } + else { + if (confirmParam != null && !confirmParam.equals("")) { + //theLog.printInfo("delete confirmed!"); + mainModule.deleteById(idParam); + list(req, res); // back to list + } + else { + if (req.getParameter("where") != null) + list(req, res); + else + edit(req, res); + } + } + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } +*/ + public void confirmdelete(HttpServletRequest aRequest, HttpServletResponse aResponse) { + try { + String idParam = aRequest.getParameter("id"); + String confirmParam = aRequest.getParameter("confirm"); + String cancelParam = aRequest.getParameter("cancel"); + + if (confirmParam != null && !confirmParam.equals("")) { + mainModule.deleteById(idParam); + redirect(aResponse, aRequest.getParameter("okurl")); + } + else + redirect(aResponse, aRequest.getParameter("cancelurl")); + } + catch (Throwable t) { + throw new ServletModuleFailure(t); + } + } + + public void delete(HttpServletRequest aRequest, HttpServletResponse aResponse) + throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { + try { + String idParam = aRequest.getParameter("id"); + + if (idParam == null) + throw new ServletModuleExc("Invalid call to delete: no id supplied"); + + Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}); + + responseData.put("module", getOperationModuleName()); + responseData.put("id", idParam); + responseData.put("cancelurl", aRequest.getParameter("cancelurl")); + responseData.put("okurl", aRequest.getParameter("okurl")); + + ServletHelper.generateResponse(aResponse.getWriter(), responseData, templateConfirmString); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + /** + * Method called when the user edits an object. + * + * @param req + * @param res + * @throws ServletModuleExc + * @throws ServletModuleUserExc + * @throws ServletModuleFailure + */ + public void edit(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { + edit(req, res, req.getParameter("id")); + } + + /** + * edit(req,res) - generische Editmethode. Wennn die Funktionalitaet + * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse + * ueberschreiben werden. + * + * @param req Http-Request, das vom Dispatcher durchgereicht wird + * @param res Http-Response, die vom Dispatcher durchgereicht wird + */ + public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse, String anIdentifier) + throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { + try { + deliver(aRequest, aResponse, mainModule.getById(anIdentifier), templateObjektString); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + /** + * update(req,res) - generische Updatemethode. Wennn die Funktionalitaet + * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse + * ueberschreiben werden. + * + * @param req Http-Request, das vom Dispatcher durchgereicht wird + * @param res Http-Response, die vom Dispatcher durchgereicht wird + */ + + public void update(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { + try { + String idParam = req.getParameter("id"); + Map withValues = getIntersectingValues(req, mainModule.getStorageObject()); + + String id = mainModule.set(withValues); + String whereParam = req.getParameter("where"); + String orderParam = req.getParameter("order"); + + if ((whereParam != null && !whereParam.equals("")) || (orderParam != null && !orderParam.equals(""))) { + list(req, res); + } + else { + edit(req, res); + } + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + /** + * deliver liefert das Template mit dem Filenamen templateFilename + * an den HttpServletResponse res aus, nachdem es mit den Daten aus + * TemplateModelRoot rtm gemischt wurde + * + * @param res Http-Response, die vom Dispatcher durchgereicht wird + * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den + * Daten, die ins Template gemerged werden sollen. + * @param tmpl Name des Templates + * @exception ServletModuleException + */ + public void deliver(HttpServletRequest req, HttpServletResponse res, TemplateModelRoot rtm, + TemplateModelRoot popups, String templateFilename) throws ServletModuleFailure { + if (rtm == null) + rtm = new SimpleHash(); + + try { + PrintWriter out = res.getWriter(); + HTMLTemplateProcessor.process(res, templateFilename, rtm, popups, out, getLocale(req), getFallbackLocale(req)); + + // we default to admin bundles here, which is not exactly beautiful... + // but this whole producer stuff is going to be rewritten soon. + // ServletModuleOpenIndy overwrites deliver() to use open bundles + // (br1) + out.close(); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + + /** + * deliver liefert das Template mit dem Filenamen templateFilename + * an den HttpServletResponse res aus, nachdem es mit den Daten aus + * TemplateModelRoot rtm gemischt wurde + * + * @param res Http-Response, die vom Dispatcher durchgereicht wird + * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den + * Daten, die ins Template gemerged werden sollen. + * @param tmpl Name des Templates + * @exception ServletModuleException + */ + public void deliver(HttpServletRequest req, HttpServletResponse res, + TemplateModelRoot rtm, String templateFilename) throws ServletModuleFailure { + deliver(req, res, rtm, null, templateFilename); + } + + /** + * deliver liefert das Template mit dem Filenamen templateFilename + * an den HttpServletResponse res aus, nachdem es mit den Daten aus + * TemplateModelRoot rtm gemischt wurde + * + * @param res Http-Response, die vom Dispatcher durchgereicht wird + * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den + * Daten, die ins Template gemerged werden sollen. + * @param tmpl Name des Templates + * @exception ServletModuleException + */ + public void deliver_compressed(HttpServletRequest req, HttpServletResponse res, + TemplateModelRoot rtm, String templateFilename) + throws ServletModuleFailure { + if (rtm == null) rtm = new SimpleHash(); + try { + PrintWriter out = new LineFilterWriter(res.getWriter()); + //PrintWriter out = res.getWriter(); + HTMLTemplateProcessor.process(res, templateFilename, rtm, null, out, getLocale(req), getFallbackLocale(req)); + out.close(); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + /** + * deliver liefert das Template mit dem Filenamen templateFilename + * an den HttpServletResponse res aus, nachdem es mit den Daten aus + * TemplateModelRoot rtm gemischt wurde + * + * @param out ist der OutputStream, in den die gergten Daten geschickt werden sollen. + * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den + * Daten, die ins Template gemerged werden sollen. + * @param tmpl Name des Templates + * @exception ServletModuleException + */ + private void deliver(HttpServletResponse res, HttpServletRequest req, PrintWriter out, + TemplateModelRoot rtm, String templateFilename) + throws ServletModuleFailure { + try { + HTMLTemplateProcessor.process(res, templateFilename, rtm, null, out, getLocale(req), getFallbackLocale(req)); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + /** + * Wenn die abgeleitete Klasse diese Methode ueberschreibt und einen String mit einem + * Methodennamen zurueckliefert, dann wird diese Methode bei fehlender Angabe des + * doParameters ausgefuehrt. + * + * @return Name der Default-Action + */ + public String defaultAction() { + return defaultAction; + } + + /** + * Gets the fields from a httprequest and matches them with the metadata from + * the storage object. Returns the keys that match, with their values. + * + * @return Map with the values + */ + public Map getIntersectingValues(HttpServletRequest req, StorageObject theStorage) + throws ServletModuleExc, ServletModuleFailure { + + try { + HTTPRequestParser parser; + List theFieldList; + + parser = new HTTPRequestParser(req); + + theFieldList = theStorage.getFields(); + + Map withValues = new HashMap(); + String aField, aValue; + + for (int i = 0; i < theFieldList.size(); i++) { + aField = (String) theFieldList.get(i); + + aValue = parser.getParameter(aField); + if (aValue != null) + withValues.put(aField, aValue); + } + return withValues; + } + catch (Throwable e) { + e.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE)); + + throw new ServletModuleFailure( "ServletModule.getIntersectingValues: " + e.getMessage(), e); + } + } } \ No newline at end of file diff --git a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java index 97ef36ab..fa8ce8d8 100755 --- a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java @@ -178,18 +178,31 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { definition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone")); result.addMapping( "breakingNews", DatabaseBreaking.getInstance(), definition); + definition = new EntityAdapterDefinition(); + definition.addCalculatedField("mediafolder", new MediaToMediaFolderField()); + result.addMapping( "uploadedMedia", DatabaseUploadedMedia.getInstance(), definition); + definition = new EntityAdapterDefinition(); + definition.addCalculatedField("mediafolder", new MediaToMediaFolderField()); + result.addMapping( "image", DatabaseImages.getInstance(), definition); + definition = new EntityAdapterDefinition(); + definition.addCalculatedField("mediafolder", new MediaToMediaFolderField()); + result.addMapping( "audio", DatabaseAudio.getInstance(), definition); + definition = new EntityAdapterDefinition(); + definition.addCalculatedField("mediafolder", new MediaToMediaFolderField()); + result.addMapping( "video", DatabaseVideo.getInstance(), definition); + definition = new EntityAdapterDefinition(); + definition.addCalculatedField("mediafolder", new MediaToMediaFolderField()); + result.addMapping( "otherMedia", DatabaseOther.getInstance(), definition); + + + result.addMapping( "mediaFolder", DatabaseMediafolder.getInstance(), new EntityAdapterDefinition()); result.addMapping( "imageType", DatabaseImageType.getInstance(), new EntityAdapterDefinition()); result.addMapping( "language", DatabaseLanguage.getInstance(), new EntityAdapterDefinition()); - result.addMapping( "mediaFolder", DatabaseMediafolder.getInstance(), new EntityAdapterDefinition()); result.addMapping( "mediaType", DatabaseMediaType.getInstance(), new EntityAdapterDefinition()); result.addMapping( "internalMessage", DatabaseMessages.getInstance(), new EntityAdapterDefinition()); result.addMapping( "topic", DatabaseTopics.getInstance(), new EntityAdapterDefinition()); result.addMapping( "user", DatabaseUsers.getInstance(), new EntityAdapterDefinition()); result.addMapping( "media", DatabaseMedia.getInstance(), new EntityAdapterDefinition()); - result.addMapping( "uploadedMedia", DatabaseUploadedMedia.getInstance(), new EntityAdapterDefinition()); - result.addMapping( "image", DatabaseImages.getInstance(), new EntityAdapterDefinition()); - result.addMapping( "audio", DatabaseAudio.getInstance(), new EntityAdapterDefinition()); - result.addMapping( "video", DatabaseVideo.getInstance(), new EntityAdapterDefinition()); result.addMapping( "otherMedia", DatabaseOther.getInstance(), new EntityAdapterDefinition()); result.addMapping( "content_x_topic", DatabaseContentToTopics.getInstance(), new EntityAdapterDefinition()); @@ -389,6 +402,20 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } + protected class MediaToMediaFolderField implements EntityAdapterDefinition.CalculatedField { + public Object getValue(EntityAdapter anEntityAdapter) { + try { + return anEntityAdapter.getToOneRelation( + "id="+anEntityAdapter.get("to_media_folder"), + "id", + "mediaFolder" ); + } + catch (Throwable t) { + throw new RuntimeException(t.getMessage()); + } + } + } + protected class ContentToCommentsField implements EntityAdapterDefinition.CalculatedField { private String extracondition; private String order; diff --git a/source/mircoders/localizer/basic/MirBasicProducerAssistantLocalizer.java b/source/mircoders/localizer/basic/MirBasicProducerAssistantLocalizer.java index 2f16e089..f3a8eaa9 100755 --- a/source/mircoders/localizer/basic/MirBasicProducerAssistantLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicProducerAssistantLocalizer.java @@ -1,153 +1,165 @@ -/* - * 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 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.localizer.basic; - -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import mir.config.MirPropertiesConfiguration; -import mir.entity.adapter.EntityAdapter; -import mir.entity.adapter.EntityIteratorAdapter; -import mir.log.LoggerWrapper; -import mir.misc.StringUtil; -import mir.util.GeneratorDateTimeFunctions; -import mir.util.GeneratorExpressionFunctions; -import mir.util.GeneratorFormatAdapters; -import mir.util.GeneratorHTMLFunctions; -import mir.util.GeneratorIntegerFunctions; -import mir.util.GeneratorListFunctions; -import mir.util.GeneratorRegularExpressionFunctions; -import mir.util.GeneratorStringFunctions; -import mircoders.global.MirGlobal; -import mircoders.localizer.MirLocalizerExc; -import mircoders.localizer.MirLocalizerFailure; -import mircoders.localizer.MirProducerAssistantLocalizer; - -public class MirBasicProducerAssistantLocalizer implements MirProducerAssistantLocalizer { - protected LoggerWrapper logger; - - public void initializeGenerationValueSet(Map aValueSet) throws MirLocalizerExc, MirLocalizerFailure { - try { - Iterator i; - - Map configMap = new HashMap(); - Map utilityMap = new HashMap(); - - logger = new LoggerWrapper("Localizer.ProducerAssistant"); - -// obsolete: - configMap.put("producerDocRoot", MirGlobal.config().getString("Producer.DocRoot")); - configMap.put("storageRoot", MirGlobal.config().getString("Producer.StorageRoot")); - configMap.put("productionHost", MirGlobal.config().getString("Producer.ProductionHost")); - configMap.put("openAction", MirGlobal.config().getString("Producer.OpenAction")); - configMap.put("docRoot", MirGlobal.config().getString("RootUri")); - configMap.put("actionRoot", MirGlobal.config().getString("RootUri") + "/servlet/Mir"); - configMap.put("now", new GeneratorFormatAdapters.DateFormatAdapter(new GregorianCalendar().getTime(), MirGlobal.config().getString("Mir.DefaultTimezone"))); - configMap.put("videoHost", MirGlobal.config().getString("Producer.Video.Host")); - configMap.put("audioHost", MirGlobal.config().getString("Producer.Audio.Host")); - configMap.put("imageHost", MirGlobal.config().getString("Producer.Image.Host")); - configMap.put("imagePath", MirGlobal.config().getString("Producer.Image.Path")); - configMap.put("mirVersion", MirGlobal.config().getString("Mir.Version")); - configMap.put("defEncoding", MirGlobal.config().getString("Mir.DefaultEncoding")); - -// "new": - configMap.putAll(MirPropertiesConfiguration.instance().allSettings()); - - utilityMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace()); - utilityMap.put("encodeHTML", new GeneratorHTMLFunctions.encodeHTMLGeneratorFunction()); - utilityMap.put("encodeXML", new GeneratorHTMLFunctions.encodeXMLGeneratorFunction()); - utilityMap.put("encodeURI", new GeneratorHTMLFunctions.encodeURIGeneratorFunction()); - utilityMap.put("subString", new GeneratorStringFunctions.subStringFunction()); - utilityMap.put("subList", new GeneratorListFunctions.subListFunction()); - utilityMap.put("isOdd", new GeneratorIntegerFunctions.isOddFunction()); - utilityMap.put("increment", new GeneratorIntegerFunctions.incrementFunction()); - utilityMap.put("evaluate", new GeneratorExpressionFunctions.evaluateExpressionFunction()); - utilityMap.put("constructString", new GeneratorStringFunctions.constructStructuredStringFunction()); - utilityMap.put("escapeJDBCString", new GeneratorStringFunctions.jdbcStringEscapeFunction()); - utilityMap.put("regexpreplace", new GeneratorRegularExpressionFunctions.regularExpressionReplaceFunction()); - utilityMap.put("datetime", new GeneratorDateTimeFunctions.DateTimeFunctions( - MirPropertiesConfiguration.instance().getString("Mir.DefaultTimezone"))); - - aValueSet.put("config", configMap); - aValueSet.put("utility", utilityMap); - - aValueSet.put("languages", - new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "language")); - - aValueSet.put("topics", - new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "topic")); - - Map articleTypeMap = new HashMap(); - articleTypeMap.put("openposting", "0"); - articleTypeMap.put("newswire", "1"); - articleTypeMap.put("feature", "2"); - articleTypeMap.put("topicspecial", "3"); - articleTypeMap.put("startspecial", "4"); - - i = new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "articleType"); - while (i.hasNext()) { - EntityAdapter articleType = (EntityAdapter) i.next(); - - articleTypeMap.put(articleType.get("name"), articleType.get("id")); - } - aValueSet.put("articletype", articleTypeMap); - - Map commentStatusMap = new HashMap(); - i = new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "commentStatus"); - while (i.hasNext()) { - EntityAdapter commentStatus = (EntityAdapter) i.next(); - - commentStatusMap.put(commentStatus.get("name"), commentStatus.get("id")); - } - aValueSet.put("commentstatus", commentStatusMap); - } - catch (Throwable t) { - logger.error("initializeGenerationValueSet: Exception while collecting comment statuses" + t.getMessage()); - throw new RuntimeException(t.getMessage()); - } - - }; - - public String filterNonHTMLText(String aText) { - return StringUtil.createHTML( - StringUtil.removeHTMLTags(aText), - MirGlobal.config().getString("Producer.ImageRoot"), - MirGlobal.config().getString("Producer.MailLinkName"), - MirGlobal.config().getString("Producer.ExtLinkName"), - MirGlobal.config().getString("Producer.IntLinkName") - ); - } - - public String filterHTMLText(String aText) { - return StringUtil.deleteForbiddenTags(aText); - } -} +/* + * 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 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.localizer.basic; + +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import mir.config.MirPropertiesConfiguration; +import mir.entity.adapter.EntityAdapter; +import mir.entity.adapter.EntityIteratorAdapter; +import mir.log.LoggerWrapper; +import mir.misc.StringUtil; +import mir.util.GeneratorDateTimeFunctions; +import mir.util.GeneratorExpressionFunctions; +import mir.util.GeneratorFormatAdapters; +import mir.util.GeneratorHTMLFunctions; +import mir.util.GeneratorIntegerFunctions; +import mir.util.GeneratorListFunctions; +import mir.util.GeneratorRegularExpressionFunctions; +import mir.util.GeneratorStringFunctions; +import mircoders.global.MirGlobal; +import mircoders.localizer.MirLocalizerExc; +import mircoders.localizer.MirLocalizerFailure; +import mircoders.localizer.MirProducerAssistantLocalizer; + +public class MirBasicProducerAssistantLocalizer implements MirProducerAssistantLocalizer { + protected LoggerWrapper logger; + + public void initializeGenerationValueSet(Map aValueSet) throws MirLocalizerExc, MirLocalizerFailure { + try { + Iterator i; + + Map configMap = new HashMap(); + Map utilityMap = new HashMap(); + + logger = new LoggerWrapper("Localizer.ProducerAssistant"); + +// obsolete: + configMap.put("producerDocRoot", MirGlobal.config().getString("Producer.DocRoot")); + configMap.put("storageRoot", MirGlobal.config().getString("Producer.StorageRoot")); + configMap.put("productionHost", MirGlobal.config().getString("Producer.ProductionHost")); + configMap.put("openAction", MirGlobal.config().getString("Producer.OpenAction")); + configMap.put("docRoot", MirGlobal.config().getString("RootUri")); + configMap.put("actionRoot", MirGlobal.config().getString("RootUri") + "/servlet/Mir"); + configMap.put("now", new GeneratorFormatAdapters.DateFormatAdapter(new GregorianCalendar().getTime(), MirGlobal.config().getString("Mir.DefaultTimezone"))); + configMap.put("videoHost", MirGlobal.config().getString("Producer.Video.Host")); + configMap.put("audioHost", MirGlobal.config().getString("Producer.Audio.Host")); + configMap.put("imageHost", MirGlobal.config().getString("Producer.Image.Host")); + configMap.put("imagePath", MirGlobal.config().getString("Producer.Image.Path")); + configMap.put("mirVersion", MirGlobal.config().getString("Mir.Version")); + configMap.put("defEncoding", MirGlobal.config().getString("Mir.DefaultEncoding")); + +// "new": + configMap.putAll(MirPropertiesConfiguration.instance().allSettings()); + + utilityMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace()); + utilityMap.put("encodeHTML", new GeneratorHTMLFunctions.encodeHTMLGeneratorFunction()); + utilityMap.put("encodeXML", new GeneratorHTMLFunctions.encodeXMLGeneratorFunction()); + utilityMap.put("encodeURI", new GeneratorHTMLFunctions.encodeURIGeneratorFunction()); + utilityMap.put("subString", new GeneratorStringFunctions.subStringFunction()); + utilityMap.put("subList", new GeneratorListFunctions.subListFunction()); + utilityMap.put("isOdd", new GeneratorIntegerFunctions.isOddFunction()); + utilityMap.put("increment", new GeneratorIntegerFunctions.incrementFunction()); + utilityMap.put("evaluate", new GeneratorExpressionFunctions.evaluateExpressionFunction()); + utilityMap.put("constructString", new GeneratorStringFunctions.constructStructuredStringFunction()); + utilityMap.put("escapeJDBCString", new GeneratorStringFunctions.jdbcStringEscapeFunction()); + utilityMap.put("regexpreplace", new GeneratorRegularExpressionFunctions.regularExpressionReplaceFunction()); + utilityMap.put("datetime", new GeneratorDateTimeFunctions.DateTimeFunctions( + MirPropertiesConfiguration.instance().getString("Mir.DefaultTimezone"))); + + aValueSet.put("config", configMap); + aValueSet.put("utility", utilityMap); + + aValueSet.put("languages", + new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "language")); + + aValueSet.put("topics", + new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "topic")); + + Map articleTypeMap = new HashMap(); + articleTypeMap.put("openposting", "0"); + articleTypeMap.put("newswire", "1"); + articleTypeMap.put("feature", "2"); + articleTypeMap.put("topicspecial", "3"); + articleTypeMap.put("startspecial", "4"); + + i = new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "articleType"); + while (i.hasNext()) { + EntityAdapter articleType = (EntityAdapter) i.next(); + + articleTypeMap.put(articleType.get("name"), articleType.get("id")); + } + aValueSet.put("articletype", articleTypeMap); + + Map commentStatusMap = new HashMap(); + i = new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "commentStatus"); + while (i.hasNext()) { + EntityAdapter commentStatus = (EntityAdapter) i.next(); + + commentStatusMap.put(commentStatus.get("name"), commentStatus.get("id")); + } + aValueSet.put("commentstatus", commentStatusMap); + } + catch (Throwable t) { + logger.error("initializeGenerationValueSet: Exception while collecting comment statuses" + t.getMessage()); + throw new RuntimeException(t.getMessage()); + } + + }; + + public String filterNonHTMLText(String aText) { + + logger.debug("about to filter non HTML Text of length " + aText.length()); + try { + String result = + StringUtil.createHTML( + StringUtil.removeHTMLTags(aText), + MirGlobal.config().getString("Producer.ImageRoot"), + MirGlobal.config().getString("Producer.MailLinkName"), + MirGlobal.config().getString("Producer.ExtLinkName"), + MirGlobal.config().getString("Producer.IntLinkName") + ); + logger.debug("done filtering non-HTML text "); + return result; + } + catch (Throwable t) { + logger.error("error while filtering non-HTML text: " + t.toString()); + + throw new RuntimeException(t.toString()); + } + } + + public String filterHTMLText(String aText) { + return StringUtil.deleteForbiddenTags(aText); + } +} diff --git a/source/mircoders/media/MediaHandlerAudio.java b/source/mircoders/media/MediaHandlerAudio.java index 05a9c8da..cc60e707 100755 --- a/source/mircoders/media/MediaHandlerAudio.java +++ b/source/mircoders/media/MediaHandlerAudio.java @@ -30,8 +30,7 @@ package mircoders.media; -import mir.media.*; -import mir.entity.*; +import mir.media.MirMedia; /** * Handles audio media, like mp3 and maybe it could also handle some other. @@ -40,7 +39,7 @@ import mir.entity.*; * @see mir.media.MediaHandlerGeneric * @see mir.media.MirMedia * @author mh - * @version $Id: MediaHandlerAudio.java,v 1.9 2003/04/29 02:36:50 zapata Exp $ + * @version $Id: MediaHandlerAudio.java,v 1.9.2.1 2003/08/13 02:43:56 zapata Exp $ */ public class MediaHandlerAudio extends MediaHandlerGeneric implements MirMedia diff --git a/source/mircoders/servlet/ServletModuleAudio.java b/source/mircoders/servlet/ServletModuleAudio.java index 91a46462..43262adf 100755 --- a/source/mircoders/servlet/ServletModuleAudio.java +++ b/source/mircoders/servlet/ServletModuleAudio.java @@ -18,13 +18,13 @@ * 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 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. + * the code of this program with 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; @@ -54,6 +54,10 @@ public class ServletModuleAudio extends ServletModuleUploadedMedia { private ServletModuleAudio() { logger = new LoggerWrapper("ServletModule.Audio"); + + entityName = "audio"; + moduleName = "Audio"; + try { configuration = MirPropertiesConfiguration.instance(); templateListString = configuration.getString("ServletModule.Audio.ListTemplate"); diff --git a/source/mircoders/servlet/ServletModuleComment.java b/source/mircoders/servlet/ServletModuleComment.java index ec830c5a..2c74318b 100755 --- a/source/mircoders/servlet/ServletModuleComment.java +++ b/source/mircoders/servlet/ServletModuleComment.java @@ -67,7 +67,7 @@ import mircoders.storage.DatabaseContent; public class ServletModuleComment extends ServletModule { - private ModuleContent moduleContent; + private ModuleContent moduleContent; private static ServletModuleComment instance = new ServletModuleComment(); public static ServletModule getInstance() { return instance; } @@ -358,6 +358,4 @@ public class ServletModuleComment extends ServletModule throw new ServletModuleFailure(e); } } - -} - +} \ No newline at end of file diff --git a/source/mircoders/servlet/ServletModuleContent.java b/source/mircoders/servlet/ServletModuleContent.java index c363f435..4f423d4a 100755 --- a/source/mircoders/servlet/ServletModuleContent.java +++ b/source/mircoders/servlet/ServletModuleContent.java @@ -74,7 +74,7 @@ import mircoders.storage.DatabaseContentToTopics; * ServletModuleContent - * deliver html for the article admin form. * - * @version $Id: ServletModuleContent.java,v 1.52.2.4 2003/07/21 07:01:15 zapata Exp $ + * @version $Id: ServletModuleContent.java,v 1.52.2.5 2003/08/13 02:43:56 zapata Exp $ * @author rk, mir-coders * */ @@ -153,13 +153,13 @@ public class ServletModuleContent extends ServletModule if (searchOrder.length()>0) { if (searchOrder.equals("datedesc")) - queryBuilder.appendAscendingOrder("webdb_create"); - else if (searchOrder.equals("dateasc")) queryBuilder.appendDescendingOrder("webdb_create"); + else if (searchOrder.equals("dateasc")) + queryBuilder.appendAscendingOrder("webdb_create"); else if (searchOrder.equals("title")) - queryBuilder.appendDescendingOrder("title"); + queryBuilder.appendAscendingOrder("title"); else if (searchOrder.equals("creator")) - queryBuilder.appendDescendingOrder("creator"); + queryBuilder.appendAscendingOrder("creator"); } returnArticleList(aRequest, aResponse, queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), 0, selectArticleUrl); @@ -206,65 +206,6 @@ public class ServletModuleContent extends ServletModule } } - public void delete(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc, ServletModuleFailure - { - try { - MirGlobal.accessControl().general().assertMayDeleteArticles(ServletHelper.getUser(aRequest)); - - String idParam = aRequest.getParameter("id"); - if (idParam == null) - throw new ServletModuleExc("Invalid call: id missing"); - - String confirmParam = aRequest.getParameter("confirm"); - String cancelParam = aRequest.getParameter("cancel"); - - logger.info("where = " + aRequest.getParameter("where")); - - if (confirmParam == null && cancelParam == null) { - - SimpleHash mergeData = new SimpleHash(); - mergeData.put("module", "Content"); - mergeData.put("infoString", "Content: " + idParam); - mergeData.put("id", idParam); - mergeData.put("where", aRequest.getParameter("where")); - mergeData.put("order", aRequest.getParameter("order")); - mergeData.put("offset", aRequest.getParameter("offset")); - deliver(aRequest, aResponse, mergeData, templateConfirmString); - } - else { - if (confirmParam != null && !confirmParam.equals("")) { - try { - mainModule.deleteById(idParam); - - /** @todo the following two should be implied in - * DatabaseContent */ - DatabaseContentToTopics.getInstance().deleteByContentId(idParam); - DatabaseComment.getInstance().deleteByContentId(idParam); - DatabaseContentToMedia.getInstance().deleteByContentId(idParam); - - //delete from lucene index, if any - String index = configuration.getString("IndexPath"); - if (IndexReader.indexExists(index)) { - IndexUtil.unindexID(idParam, index); - } - - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - list(aRequest, aResponse); - } - else { - // Datensatz anzeigen - _showObject(idParam, aRequest, aResponse); - } - } - } - catch (Throwable t) { - throw new ServletModuleFailure(t); - } - } - public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { String idParam = aRequest.getParameter("id"); @@ -341,9 +282,6 @@ public class ServletModuleContent extends ServletModule String id = mainModule.set(withValues); DatabaseContentToTopics.getInstance().setTopics(aRequest.getParameter("id"), aRequest.getParameterValues("to_topic")); - String whereParam = aRequest.getParameter("where"); - String orderParam = aRequest.getParameter("order"); - if (returnUrl!=null){ redirect(aResponse, returnUrl); } diff --git a/source/mircoders/servlet/ServletModuleImages.java b/source/mircoders/servlet/ServletModuleImages.java index 1e1c9ec9..70e5b84f 100755 --- a/source/mircoders/servlet/ServletModuleImages.java +++ b/source/mircoders/servlet/ServletModuleImages.java @@ -18,13 +18,13 @@ * 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 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. + * the code of this program with 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; @@ -38,7 +38,7 @@ import mircoders.storage.DatabaseImages; /* * ServletModuleImages - * - * @version $Id: ServletModuleImages.java,v 1.26 2003/04/21 12:42:51 idfx Exp $ + * @version $Id: ServletModuleImages.java,v 1.26.2.1 2003/08/13 02:43:56 zapata Exp $ * @author RK, the mir-coders group */ @@ -52,6 +52,8 @@ public class ServletModuleImages extends ServletModuleUploadedMedia private ServletModuleImages() { super(); logger = new LoggerWrapper("ServletModule.Images"); + entityName = "image"; + moduleName = "Images"; templateListString = configuration.getString("ServletModule.Images.ListTemplate"); templateObjektString = configuration.getString("ServletModule.Images.ObjektTemplate"); templateConfirmString = configuration.getString("ServletModule.Images.ConfirmTemplate"); diff --git a/source/mircoders/servlet/ServletModuleOtherMedia.java b/source/mircoders/servlet/ServletModuleOtherMedia.java index 23f71eae..d42d748c 100755 --- a/source/mircoders/servlet/ServletModuleOtherMedia.java +++ b/source/mircoders/servlet/ServletModuleOtherMedia.java @@ -18,13 +18,13 @@ * 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 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. + * the code of this program with 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. */ @@ -36,14 +36,17 @@ import mir.storage.StorageObjectFailure; import mircoders.module.ModuleUploadedMedia; import mircoders.storage.DatabaseOther; -/* - * +/** * - * @author br1 + *

Title:

+ *

Description:

+ *

Copyright: Copyright (c) 2003

+ *

Company:

+ * @author the mir coders + * @version 1.0 */ public class ServletModuleOtherMedia extends ServletModuleUploadedMedia { - // Singelton / Contructor private static ServletModuleOtherMedia instance = new ServletModuleOtherMedia(); public static ServletModule getInstance() { @@ -53,13 +56,14 @@ public class ServletModuleOtherMedia extends ServletModuleUploadedMedia { private ServletModuleOtherMedia() { super(); logger = new LoggerWrapper("ServletModule.OtherMedia"); + entityName = "otherMedia"; + moduleName = "OtherMedia"; templateListString = configuration.getString("ServletModule.OtherMedia.ListTemplate"); templateObjektString = configuration.getString("ServletModule.OtherMedia.ObjektTemplate"); templateConfirmString = configuration.getString("ServletModule.OtherMedia.ConfirmTemplate"); try { mainModule = new ModuleUploadedMedia(DatabaseOther.getInstance()); - //dbRights = DatabaseRights.getInstance(); } catch (StorageObjectFailure e) { logger.error("servletmodule otherMedia could not be initialized: " + e.getMessage()); diff --git a/source/mircoders/servlet/ServletModuleUploadedMedia.java b/source/mircoders/servlet/ServletModuleUploadedMedia.java index 41920c67..556d18c1 100755 --- a/source/mircoders/servlet/ServletModuleUploadedMedia.java +++ b/source/mircoders/servlet/ServletModuleUploadedMedia.java @@ -1,419 +1,502 @@ -/* - * 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 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.InputStream; -import java.net.URLEncoder; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Vector; - -import javax.servlet.ServletContext; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import mir.config.MirPropertiesConfiguration; -import mir.entity.Entity; -import mir.entity.EntityList; -import mir.log.LoggerWrapper; -import mir.media.MediaHelper; -import mir.media.MirMedia; -import mir.servlet.ServletModule; -import mir.servlet.ServletModuleExc; -import mir.servlet.ServletModuleFailure; -import mir.servlet.ServletModuleUserExc; -import mir.session.UploadedFile; -import mir.util.ExceptionFunctions; -import mir.util.HTTPParsedRequest; -import mircoders.entity.EntityComment; -import mircoders.entity.EntityContent; -import mircoders.entity.EntityUploadedMedia; -import mircoders.entity.EntityUsers; -import mircoders.media.MediaUploadProcessor; -import mircoders.module.*; -import mircoders.storage.DatabaseComment; -import mircoders.storage.DatabaseContent; -import mircoders.storage.DatabaseMediafolder; - -import org.apache.commons.fileupload.FileItem; - -import freemarker.template.SimpleHash; -import freemarker.template.SimpleList; - -/* - * ServletModuleBilder - - * liefert HTML fuer Bilder - * - * @version $Id: ServletModuleUploadedMedia.java,v 1.28.2.2 2003/06/25 02:40:29 zapata Exp $ - * @author RK, the mir-coders group - */ - -public abstract class ServletModuleUploadedMedia - extends mir.servlet.ServletModule { - - //private static DatabaseRights dbRights; - - public static ServletModule getInstance() { - return null; - } - - public ServletModuleUploadedMedia() { - super(); - logger = new LoggerWrapper("ServletModule.UploadedMedia"); - } - - public void insert(HttpServletRequest aRequest, HttpServletResponse aResponse) - throws ServletModuleExc, ServletModuleUserExc { - try { - HTTPParsedRequest parsedRequest = new HTTPParsedRequest(aRequest, - configuration.getString("Mir.DefaultEncoding"), - configuration.getInt("MaxMediaUploadSize")*1024, - configuration.getString("TempDir")); - - Map mediaValues = new HashMap(); - - mediaValues.put("to_publisher", ServletHelper.getUser(aRequest).getId()); - - Iterator i = mainModule.getStorageObject().getFields().iterator(); - while (i.hasNext()) { - String field = (String) i.next(); - String value = parsedRequest.getParameter(field); - if (value!=null) - mediaValues.put(field, value); - } - - List mediaList = new Vector(); - - i = parsedRequest.getFiles().iterator(); - while (i.hasNext()) { - UploadedFile file = new mir.session.CommonsUploadedFileAdapter((FileItem) i.next()); - - String suffix = file.getFieldName().substring(5); - mediaValues.put("title", parsedRequest.getParameter("media_title" + suffix)); - - mediaList.add(MediaUploadProcessor.processMediaUpload(file, mediaValues)); - } - - String articleid = parsedRequest.getParameter("articleid"); - String commentid = parsedRequest.getParameter("commentid"); - - if (articleid!=null) { - EntityContent entContent = (EntityContent) DatabaseContent.getInstance().selectById(articleid); - - i=mediaList.iterator(); - - while (i.hasNext()) { - entContent.attach(((EntityUploadedMedia) i.next()).getId()); - } - - ((ServletModuleContent) ServletModuleContent.getInstance())._showObject(articleid, aRequest, aResponse); - - return; - } - - if (commentid!=null) { - EntityComment comment = (EntityComment) DatabaseComment.getInstance().selectById(commentid); - - i=mediaList.iterator(); - - while (i.hasNext()) { - comment.attach( ( (EntityUploadedMedia) i.next()).getId()); - } - - ((ServletModuleComment) ServletModuleComment.getInstance()).showComment(commentid, aRequest, aResponse); - - return; - } - - SimpleHash mergeData = new SimpleHash(); - SimpleHash popups = new SimpleHash(); - mergeData.put("contentlist", mir.generator.FreemarkerGenerator.makeAdapter(mediaList)); - - mergeData.put("count", Integer.toString(mediaList.size())); - mergeData.put("from", "1"); - mergeData.put("to", Integer.toString(mediaList.size())); - - //fetch the popups - popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData()); - // raus damit - deliver(aRequest, aResponse, mergeData, popups, templateListString); - } - catch (Throwable t) { - Throwable cause = ExceptionFunctions.traceCauseException(t); - - if (cause instanceof ModuleMediaType.UnsupportedMimeTypeExc) { - throw new ServletModuleUserExc("media.error.unsupportedformat", new String[] {}); - } - throw new ServletModuleFailure("ServletModuleUploadedMedia.insert: " + t.toString(), t); - } - } - - public void update(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { - - try { - HTTPParsedRequest parsedRequest = new HTTPParsedRequest(aRequest, - configuration.getString("Mir.DefaultEncoding"), - configuration.getInt("MaxMediaUploadSize")*1024, - configuration.getString("TempDir")); - Map mediaValues = new HashMap(); - - Iterator i = mainModule.getStorageObject().getFields().iterator(); - while (i.hasNext()) { - String field = (String) i.next(); - String value = parsedRequest.getParameter(field); - if (value!=null) - mediaValues.put(field, value); - } - - mediaValues.put("to_publisher", ServletHelper.getUser(aRequest).getId()); - mediaValues.put("is_produced", "0"); - if (!mediaValues.containsKey("is_published")) - mediaValues.put("is_published", "0"); - - String id = mainModule.set(mediaValues); - logger.debug("update: media ID = " + id); - _edit(id, aRequest, aResponse); - } - catch (Throwable e) { - throw new ServletModuleFailure("upload -- exception " + e.toString(), e); - } - - } - - - public void list(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { - // Parameter auswerten - SimpleHash mergeData = new SimpleHash(); - SimpleHash popups = new SimpleHash(); - - String query_text = aRequest.getParameter("query_text"); - mergeData.put("query_text", query_text); - if (query_text != null) mergeData.put("query_text_encoded", URLEncoder.encode(query_text)); - String query_field = aRequest.getParameter("query_field"); - mergeData.put("query_field", query_field); - String query_is_published = aRequest.getParameter("query_is_published"); - mergeData.put("query_is_published", query_is_published); - String query_media_folder = aRequest.getParameter("query_media_folder"); - mergeData.put("query_media_folder", query_media_folder); - String offset = aRequest.getParameter("offset"); - if (offset == null || offset.equals("")) offset = "0"; - mergeData.put("offset", offset); - - String order = aRequest.getParameter("order"); - if (order == null || order.equals("")) order = "webdb_lastchange desc"; - - // if in connection mode to content - mergeData.put("articleid", aRequest.getParameter("articleid")); - mergeData.put("commentid", aRequest.getParameter("commentid")); - - - // sql basteln - String whereClause = ""; - boolean isFirst = true; - if (query_text != null && !query_text.equalsIgnoreCase("")) { - whereClause += "lower(" + query_field + ") like lower('%" + query_text + "%')"; - isFirst = false; - } - if (query_is_published != null && !query_is_published.equals("")) { - if (isFirst == false) whereClause += " and "; - whereClause += "is_published='" + query_is_published + "'"; - isFirst = false; - } - if (query_media_folder != null && !query_media_folder.equals("")) { - if (isFirst == false) whereClause += " and "; - whereClause += "to_media_folder='" + query_media_folder + "'"; - } - //theLog.printDebugInfo("sql-whereclause: " + whereClause + " order: " + order + " offset: " + offset); - - // fetch and deliver - try { - if (query_text != null || query_is_published != null || query_media_folder != null) { - EntityList theList = mainModule.getByWhereClause(whereClause, order, (new Integer(offset)).intValue(), 10); - if (theList != null) { - mergeData.put("contentlist", theList); - if (theList.getOrder() != null) { - mergeData.put("order", theList.getOrder()); - mergeData.put("order_encoded", URLEncoder.encode(theList.getOrder())); - } - mergeData.put("count", (new Integer(theList.getCount())).toString()); - mergeData.put("from", (new Integer(theList.getFrom())).toString()); - mergeData.put("to", (new Integer(theList.getTo())).toString()); - if (theList.hasNextBatch()) - mergeData.put("next", (new Integer(theList.getNextBatch())).toString()); - if (theList.hasPrevBatch()) - mergeData.put("prev", (new Integer(theList.getPrevBatch())).toString()); - } - } - popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData()); - - deliver(aRequest, aResponse, mergeData, popups, templateListString); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - - public void add(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { - try { - SimpleHash mergeData = new SimpleHash(); - SimpleHash popups = new SimpleHash(); - String maxMedia = MirPropertiesConfiguration.instance().getString("ServletModule.OpenIndy.MaxMediaUploadItems"); - String numOfMedia = aRequest.getParameter("medianum"); - - mergeData.put("new", "1"); - mergeData.put("articleid", aRequest.getParameter("articleid")); - mergeData.put("commentid", aRequest.getParameter("commentid")); - - popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData()); - - if (numOfMedia==null || numOfMedia.equals("")) { - numOfMedia="1"; - } - else if(Integer.parseInt(numOfMedia) > Integer.parseInt(maxMedia)) { - numOfMedia = maxMedia; - } - - int mediaNum = Integer.parseInt(numOfMedia); - SimpleList mediaFields = new SimpleList(); - for(int i =0; iTitle:

+ *

Description:

+ *

Copyright: Copyright (c) 2003

+ *

Company:

+ * @author the mir coders + * @version 1.0 + */ + +public abstract class ServletModuleUploadedMedia extends ServletModule { + protected int nrMediaPerPage = 20; + protected String entityName = "uploadedMedia"; + protected String moduleName = "UploadedMedia"; + + public static ServletModule getInstance() { + return null; + } + + public ServletModuleUploadedMedia() { + super(); + + logger = new LoggerWrapper("ServletModule.UploadedMedia"); + } + + public void insert(HttpServletRequest aRequest, HttpServletResponse aResponse) + throws ServletModuleExc, ServletModuleUserExc { + try { + HTTPParsedRequest parsedRequest = new HTTPParsedRequest(aRequest, + configuration.getString("Mir.DefaultEncoding"), + configuration.getInt("MaxMediaUploadSize")*1024, + configuration.getString("TempDir")); + + Map mediaValues = new HashMap(); + + mediaValues.put("to_publisher", ServletHelper.getUser(aRequest).getId()); + + Iterator i = mainModule.getStorageObject().getFields().iterator(); + while (i.hasNext()) { + String field = (String) i.next(); + String value = parsedRequest.getParameter(field); + if (value!=null) + mediaValues.put(field, value); + } + + List mediaList = new Vector(); + + i = parsedRequest.getFiles().iterator(); + while (i.hasNext()) { + UploadedFile file = new mir.session.CommonsUploadedFileAdapter((FileItem) i.next()); + + String suffix = file.getFieldName().substring(5); + mediaValues.put("title", parsedRequest.getParameter("media_title" + suffix)); + + mediaList.add(MediaUploadProcessor.processMediaUpload(file, mediaValues)); + } + + String articleid = parsedRequest.getParameter("articleid"); + String commentid = parsedRequest.getParameter("commentid"); + + if (articleid!=null) { + EntityContent entContent = (EntityContent) DatabaseContent.getInstance().selectById(articleid); + + i=mediaList.iterator(); + + while (i.hasNext()) { + entContent.attach(((EntityUploadedMedia) i.next()).getId()); + } + + ((ServletModuleContent) ServletModuleContent.getInstance())._showObject(articleid, aRequest, aResponse); + + return; + } + + if (commentid!=null) { + EntityComment comment = (EntityComment) DatabaseComment.getInstance().selectById(commentid); + + i=mediaList.iterator(); + + while (i.hasNext()) { + comment.attach( ( (EntityUploadedMedia) i.next()).getId()); + } + + ((ServletModuleComment) ServletModuleComment.getInstance()).showComment(commentid, aRequest, aResponse); + + return; + } + + returnUploadedMediaList(aRequest, aResponse, mediaList, 1, mediaList.size(), mediaList.size(), "", null, null); + } + catch (Throwable t) { + Throwable cause = ExceptionFunctions.traceCauseException(t); + + if (cause instanceof ModuleMediaType.UnsupportedMimeTypeExc) { + throw new ServletModuleUserExc("media.error.unsupportedformat", new String[] {}); + } + throw new ServletModuleFailure("ServletModuleUploadedMedia.insert: " + t.toString(), t); + } + } + + public void update(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + + try { + HTTPParsedRequest parsedRequest = new HTTPParsedRequest(aRequest, + configuration.getString("Mir.DefaultEncoding"), + configuration.getInt("MaxMediaUploadSize")*1024, + configuration.getString("TempDir")); + Map mediaValues = new HashMap(); + + Iterator i = mainModule.getStorageObject().getFields().iterator(); + while (i.hasNext()) { + String field = (String) i.next(); + String value = parsedRequest.getParameter(field); + if (value!=null) + mediaValues.put(field, value); + } + + mediaValues.put("to_publisher", ServletHelper.getUser(aRequest).getId()); + mediaValues.put("is_produced", "0"); + if (!mediaValues.containsKey("is_published")) + mediaValues.put("is_published", "0"); + + String id = mainModule.set(mediaValues); + logger.debug("update: media ID = " + id); + + editUploadedMediaObject(id, aRequest, aResponse); + } + catch (Throwable e) { + throw new ServletModuleFailure("upload -- exception " + e.toString(), e); + } + + } + + public void returnUploadedMediaList(HttpServletRequest aRequest, HttpServletResponse aResponse, + Object aList, int aFrom, int aTo, int aCount, + String aThisUrl, String aNextUrl, String aPreviousUrl) throws ServletModuleExc { + + try { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] {getLocale(aRequest), getFallbackLocale(aRequest)}); + + responseData.put("searchfield", requestParser.getParameterWithDefault("searchfield", "")); + responseData.put("searchtext", requestParser.getParameterWithDefault("searchtext", "")); + responseData.put("searchispublished", requestParser.getParameterWithDefault("searchispublished", "")); + responseData.put("searchmediafolder", requestParser.getParameterWithDefault("searchmediafolder", "")); + responseData.put("articleid", requestParser.getParameter("articleid")); + responseData.put("commentid", requestParser.getParameter("commentid")); + + responseData.put("thisurl", aThisUrl); + responseData.put("nexturl", aNextUrl); + responseData.put("prevurl", aPreviousUrl); + + responseData.put("from", Integer.toString(aFrom)); + responseData.put("count", Integer.toString(aCount)); + responseData.put("to", Integer.toString(aTo)); + + responseData.put("medialist", aList); + + addExtraData(responseData); + ServletHelper.generateResponse(aResponse.getWriter(), responseData, templateListString); + } + catch (Throwable t) { + throw new ServletModuleFailure(t); + } + } + + public void returnUploadedMediaList(HttpServletRequest aRequest, HttpServletResponse aResponse, + String aWhereClause, String anOrderByClause, int anOffset) throws ServletModuleExc { + + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + URLBuilder urlBuilder = new URLBuilder(); + EntityAdapterModel model; + String nextPageUrl = null; + String previousPageUrl = null; + String thisUrl = null; + + int count; + + try { + model = MirGlobal.localizer().dataModel().adapterModel(); + + Object mediaList = + new CachingRewindableIterator( + new EntityIteratorAdapter(aWhereClause, anOrderByClause, nrMediaPerPage, + MirGlobal.localizer().dataModel().adapterModel(), entityName, nrMediaPerPage, anOffset) + ); + + count = mainModule.getSize(aWhereClause); + + urlBuilder.setValue("module", moduleName); + urlBuilder.setValue("do", "list"); + urlBuilder.setValue("where", aWhereClause); + urlBuilder.setValue("order", anOrderByClause); + + urlBuilder.setValue("articleid", requestParser.getParameter("articleid")); + urlBuilder.setValue("commentid", requestParser.getParameter("commentid")); + urlBuilder.setValue("searchfield", requestParser.getParameter("searchfield")); + urlBuilder.setValue("searchtext", requestParser.getParameter("searchtext")); + urlBuilder.setValue("searchispublished", requestParser.getParameter("searchispublished")); + urlBuilder.setValue("searchmediafolder", requestParser.getParameter("searchmediafolder")); + urlBuilder.setValue("where", aWhereClause); + urlBuilder.setValue("order", anOrderByClause); + + urlBuilder.setValue("offset", anOffset); + thisUrl = urlBuilder.getQuery(); + + if (count >= anOffset + nrMediaPerPage) { + urlBuilder.setValue("offset", anOffset + nrMediaPerPage); + nextPageUrl = urlBuilder.getQuery(); + } + + if (anOffset > 0) { + urlBuilder.setValue("offset", Math.max(anOffset - nrMediaPerPage, 0)); + previousPageUrl = urlBuilder.getQuery(); + } + + returnUploadedMediaList(aRequest, aResponse, mediaList, + anOffset+1, anOffset+nrMediaPerPage, count, thisUrl, + nextPageUrl, previousPageUrl); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + public void search(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + + SQLQueryBuilder queryBuilder = new SQLQueryBuilder(); + + String queryField = ""; + String searchField = requestParser.getParameter("searchfield"); + String searchText = requestParser.getParameter("searchtext"); + String searchIsPublished = requestParser.getParameter("searchispublished"); + String searchMediaFolder = requestParser.getParameter("searchmediafolder"); + + queryBuilder.appendDescendingOrder("webdb_create"); + + if (searchIsPublished!=null) + if (searchIsPublished.equals("0")) { + queryBuilder.appendAndCondition("is_published='f'"); + } + else if (searchIsPublished.equals("1")) { + queryBuilder.appendAndCondition("is_published='t'"); + } + + if (searchField!=null && searchText!=null && searchText.length()>0) { + queryBuilder.appendAndCondition( + "lower(" + searchField + ") like " + + "'%" + JDBCStringRoutines.escapeStringLiteral(searchText.toLowerCase()) + "%'"); + } + + if (searchMediaFolder!=null && searchMediaFolder.length()>0) { + queryBuilder.appendAndCondition("to_media_folder="+Integer.parseInt(searchMediaFolder)); + } + + returnUploadedMediaList(aRequest, aResponse, + queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), requestParser.getIntegerWithDefault("offset", 0)); + } + + public void list(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + + returnUploadedMediaList(aRequest, aResponse, + requestParser.getParameterWithDefault("where", ""), + requestParser.getParameterWithDefault("order", "webdb_create desc"), + requestParser.getIntegerWithDefault("offset", 0)); + } + + + public void add(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + try { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] {getLocale(aRequest), getFallbackLocale(aRequest)}); + + int nrMedia = requestParser.getIntegerWithDefault("nrmedia", 1); + int maxNrMedia=configuration.getInt("ServletModule.OpenIndy.MaxMediaUploadItems", 20); + + List fields = mainModule.getStorageObject().getFields(); + Map media = new HashMap(); + Iterator i = fields.iterator(); + while (i.hasNext()) { + media.put(i.next(), null); + } + media.put("to_media_folder", new Integer(7)); + responseData.put("uploadedmedia", media); + + responseData.put("new", Boolean.TRUE); + responseData.put("articleid", requestParser.getParameter("articleid")); + responseData.put("commentid", requestParser.getParameter("commentid")); + responseData.put("returnurl", null); + + if (nrMedia<=0) + nrMedia=1; + if (nrMedia>maxNrMedia) + nrMedia=maxNrMedia; + + List mediaFields = new Vector(); + for (int j=0; j - - - + + + @@ -24,29 +24,30 @@ @@ -85,12 +86,17 @@   - - + + + class="listrow1"class="listrow2" > @@ -124,17 +133,17 @@ diff --git a/templates/admin/audio.template b/templates/admin/audio.template index 17fb6047..aab208ac 100755 --- a/templates/admin/audio.template +++ b/templates/admin/audio.template @@ -1,141 +1,40 @@ - - - ${config["Mir.Name"]} | ${lang("audio.htmltitle")} - - - + + - - - - - - -
- - - - - - -
- + - + + + - - - + + - + + + +
- + + + + + ${entry.title}  @@ -103,20 +109,23 @@ ${entry.human_readable_size}  - ${data.mediafolderHashdata[entry.to_media_folder]["name"]}  + + ${entry.mediafolder.name} +   ${entry.creator}    - - ${lang("attach")} + + ${lang("attach")} - - ${lang("attach")} + + ${lang("attach")} - ${lang("delete")} - | ${lang("edit")} + ${lang("delete")} + | + ${lang("edit")}
- ${data.count} ${lang("records")} / ${lang("show_from_to", data.from, data.to)} + ${count} ${lang("records")} / ${lang("show_from_to", from, to)}
- - ${lang("list.previous")}  + + ${lang("list.previous")}  - - ${lang("list.next")} + + ${lang("list.next")}
- - - - -
- ${lang("media.nr_of_media")} :
-
-    -
- + + + +    + + + ${lang("media.created")}: ${uploadedmedia.webdb_create} + / ${lang("media.changed")} ${uploadedmedia.webdb_lastchange}
+ ${lang("media.published")}: ${uploadedmedia.publish_date} / ${uploadedmedia.publish_server}${uploadedmedia.publish_path}
+ ${lang("media.format")}: ${uploadedmedia.mimetype} / ${uploadedmedia.media_descr}
+ ${lang("media.size")}: ${uploadedmedia.human_readable_size}
+ ${lang("media.rights")}: ${uploadedmedia.rightsHashdata[to_rights]["name"]}
+ + - -
- - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - -
- -    - - ${lang("media.created")}: ${data.webdb_create} - / ${lang("media.changed")} ${data.webdb_lastchange}
- ${lang("media.published")}: ${data.publish_date} / ${data.publish_server}${data.publish_path}
- ${lang("media.format")}: ${data.mimetype} / ${data.media_descr}
- ${lang("media.size")}: ${data.human_readable_size}
- ${lang("media.rights")}: ${data.rightsHashdata[to_rights]["name"]}
-
- ${lang("media.mediafolder")}: - - -
+ ${lang("media.mediafolder")}: + + +
 
- ${lang("media.is_published")} : - - checked> -
 
- ${lang("media.title")}: - - -
-   - -
-
- - - - ${lang("media.is_published")} checked> -    - -
-
- -

[<] ${lang("list")}  

- - - - diff --git a/templates/admin/commentlist.template b/templates/admin/commentlist.template index 70ed1d7e..a8ef1608 100755 --- a/templates/admin/commentlist.template +++ b/templates/admin/commentlist.template @@ -172,7 +172,7 @@   - [${lang("delete")}] + [${lang("delete")}] diff --git a/templates/admin/confirm.template b/templates/admin/confirm.template index a317b1ff..38d307f8 100755 --- a/templates/admin/confirm.template +++ b/templates/admin/confirm.template @@ -4,32 +4,26 @@ - -
- -
- diff --git a/templates/admin/head_nonavi.template b/templates/admin/head_nonavi.template index 99314aac..8850bb77 100755 --- a/templates/admin/head_nonavi.template +++ b/templates/admin/head_nonavi.template @@ -1,18 +1,11 @@ -
-

${lang("confirm.really_delete")}

-

- - - - - - - - - - - -
-
- ${lang("confirm.text")} + +

+ + +
+

${lang("confirm.really_delete")}

+

+ + + + + + +
+
+ ${lang("confirm.text")}

-
- -
- + + + diff --git a/templates/admin/contentlist.template b/templates/admin/contentlist.template index 8b7078a3..00d39d67 100755 --- a/templates/admin/contentlist.template +++ b/templates/admin/contentlist.template @@ -107,7 +107,7 @@
- [${lang("delete")}] + [${lang("delete")}]
+ +
- + - - - - - -
-   - ${config["Mir.Name"]} + + ${config["Mir.Name"]}   |   ${config.now.format("yyyy-MM-dd HH:mm z")}
- ${login_user.login} ${lang("head.logged_in")} | - ${lang("head.logout")} -

+
diff --git a/templates/admin/image.template b/templates/admin/image.template index 1e89c10e..18ffebef 100755 --- a/templates/admin/image.template +++ b/templates/admin/image.template @@ -1,146 +1,45 @@ - - - ${config["Mir.Name"]} | ${lang("image.htmltitle")} - - - + + - - - - - - -
- - - - - - - - - - - - - - -
- ${lang("media.nr_of_media")} :
-
-    -
-
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -    + + + +    - ${lang("media.created")}: ${data.webdb_create} - / ${lang("media.changed")} ${data.webdb_lastchange}
- ${lang("media.published")}: ${data.publish_date} / ${data.publish_server}${data.publish_path}
- ${lang("media.format")}: ${data.mimetype} / ${data.media_descr}
- ${lang("media.size")}: ${data.human_readable_size}
- ${lang("media.rights")}: ${data.rightsHashdata[to_rights]["name"]}
-
- ${lang("media.mediafolder")}: - - -
 
- ${lang("media.is_published")} : - - checked> -
 
- ${lang("media.title")}: - - + ${lang("media.created")}: ${uploadedmedia.webdb_create} + / ${lang("media.changed")} ${uploadedmedia.webdb_lastchange}
+ ${lang("media.published")}: ${uploadedmedia.publish_date} / ${uploadedmedia.publish_server}${uploadedmedia.publish_path}
+ ${lang("media.format")}: ${uploadedmedia.mimetype} / ${uploadedmedia.media_descr}
+ ${lang("media.size")}: ${uploadedmedia.human_readable_size}
+ ${lang("media.rights")}: ${uploadedmedia.rightsHashdata[to_rights]["name"]}
-   - -
-
- - - - ${lang("media.is_published")} checked> -    - -
- -

[<] ${lang("list")}  

+ - - - + + + ${lang("media.mediafolder")}: + + + + + + + + + + + + + + diff --git a/templates/admin/imagelist.template b/templates/admin/imagelist.template index b166e3f3..f6b74569 100755 --- a/templates/admin/imagelist.template +++ b/templates/admin/imagelist.template @@ -3,96 +3,20 @@ ${config["Mir.Name"]} | ${lang("imagelist.htmltitle")} - - - - - - - - - - - - - - - - - class="listrow1"class="listrow2" > - - - - - - - - - - - - - - - - + - - - -
- ${lang("media.icon")} - ${lang("media.title")} - ${lang("media.format")} - ${lang("media.size")} - ${lang("media.mediafolder")} - ${lang("media.creator")} -  
- - - - ${entry.title}  -
${entry.description}
-
- ${entry.media_descr}  - - ${entry.human_readable_size}  - - ${data.mediafolderHashdata[entry.to_media_folder]["name"]}  - - ${entry.creator}  -   - - ${lang("attach")} - - - ${lang("attach")} - - ${lang("delete")} - | ${lang("edit")} - - -
- ${data.count} ${lang("records")} / ${lang("show_from_to", data.from, data.to)} -
- - ${lang("list.previous")}  - - - ${lang("list.next")} - -
${lang("no_matches_found")}
+ diff --git a/templates/admin/media.template b/templates/admin/media.template deleted file mode 100755 index a1907ada..00000000 --- a/templates/admin/media.template +++ /dev/null @@ -1,143 +0,0 @@ - - - ${config["Mir.Name"]} | ${lang("other_media.htmltitle")} - - - - - - - - - - -
- - - - - - - - - - - - -
- ${lang("media.nr_of_media")} :
-
-    -
-
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -    - - ${lang("media.created")}: ${data.webdb_create} - / ${lang("media.changed")} ${data.webdb_lastchange}
- ${lang("media.published")}: ${data.publish_date} / ${data.publish_server}${data.publish_path}
- ${lang("media.format")}: ${data.mimetype} / ${data.media_descr}
- ${lang("media.size")}: ${data.human_readable_size}
- ${lang("media.rights")}: ${data.rightsHashdata[to_rights]["name"]}
-
- ${lang("media.mediafolder")}: - - -
 
- ${lang("media.is_published")} : - - checked> -
 
- ${lang("media.title")}: - - -
-   - -
-
- - - - ${lang("media.is_published")} checked> -    - -
- -

[<] ${lang("list")}  

- - - - - diff --git a/templates/admin/other.template b/templates/admin/other.template new file mode 100755 index 00000000..037cb208 --- /dev/null +++ b/templates/admin/other.template @@ -0,0 +1,39 @@ + + + + + + +    + + + ${lang("media.created")}: ${uploadedmedia.webdb_create} + / ${lang("media.changed")} ${uploadedmedia.webdb_lastchange}
+ ${lang("media.published")}: ${uploadedmedia.publish_date} / ${uploadedmedia.publish_server}${uploadedmedia.publish_path}
+ ${lang("media.format")}: ${uploadedmedia.mimetype} / ${uploadedmedia.media_descr}
+ ${lang("media.size")}: ${uploadedmedia.human_readable_size}
+ ${lang("media.rights")}: ${uploadedmedia.rightsHashdata[to_rights]["name"]}
+ + +
+ + + + ${lang("media.mediafolder")}: + + + + + + + + + + + + + diff --git a/templates/admin/start_admin.template b/templates/admin/start_admin.template index ebb1174c..2b4bdb44 100755 --- a/templates/admin/start_admin.template +++ b/templates/admin/start_admin.template @@ -23,7 +23,7 @@

${lang("start.articles.title")}

- > ${lang("start.allarticlesoftype", lang("articletypes."+a.name))}
+ > ${lang("start.allarticlesoftype", lang("articletypes."+a.name))}

> ${lang("start.content.not_published")}
diff --git a/templates/admin/uploadedmedia.template b/templates/admin/uploadedmedia.template new file mode 100755 index 00000000..72d0f8ab --- /dev/null +++ b/templates/admin/uploadedmedia.template @@ -0,0 +1,100 @@ + + + ${config["Mir.Name"]}<comment> | ${lang("image.htmltitle")}</comment> + + + + + + + + +

+ + + + + + + + + + + + + +
+ ${lang("media.nr_of_media")} :
+
+    +
+
+ + + +
insertupdate&id=${uploadedmedia.id}"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ ${lang("media.is_published")} : + + checked> +
 
+ ${lang("media.title")}: + + +
+   + +
+
+ + + + ${lang("media.is_published")} checked> +    + +
+ + +

[<] ${lang("list")}  

+ + + + diff --git a/templates/admin/video.template b/templates/admin/video.template index 7cd4fccf..037cb208 100755 --- a/templates/admin/video.template +++ b/templates/admin/video.template @@ -1,142 +1,39 @@ - - - ${config["Mir.Name"]} | ${lang("video.htmltitle")} - - - - - - - - - -
- - - - - - - - - - - -
- ${lang("media.nr_of_media")} :
-
-    -
-
+ + + + + + +    + + + ${lang("media.created")}: ${uploadedmedia.webdb_create} + / ${lang("media.changed")} ${uploadedmedia.webdb_lastchange}
+ ${lang("media.published")}: ${uploadedmedia.publish_date} / ${uploadedmedia.publish_server}${uploadedmedia.publish_path}
+ ${lang("media.format")}: ${uploadedmedia.mimetype} / ${uploadedmedia.media_descr}
+ ${lang("media.size")}: ${uploadedmedia.human_readable_size}
+ ${lang("media.rights")}: ${uploadedmedia.rightsHashdata[to_rights]["name"]}
+ +
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - -
- -    - - ${lang("media.created")}: ${data.webdb_create} - / ${lang("media.changed")} ${data.webdb_lastchange}
- ${lang("media.published")}: ${data.publish_date} / ${data.publish_server}${data.publish_path}
- ${lang("media.format")}: ${data.mimetype} / ${data.media_descr}
- ${lang("media.size")}: ${data.human_readable_size}
- ${lang("media.rights")}: ${data.rightsHashdata[to_rights]["name"]}
-
- ${lang("media.mediafolder")}: - - -
 
+ ${lang("media.mediafolder")}: + + +
- ${lang("media.is_published")} : - - checked> -
 
- ${lang("media.title")}: - - -
-   - -
-
- - - - ${lang("media.is_published")} checked> -    - -
-
- -

[<] ${lang("list")}  

- - - - - + + + + + + + diff --git a/templates/admin/videolist.template b/templates/admin/videolist.template index 852fb6d1..c516599a 100755 --- a/templates/admin/videolist.template +++ b/templates/admin/videolist.template @@ -1,17 +1,16 @@ - - ${config["Mir.Name"]} | ${lang("video.htmltitle")} - - + + ${config["Mir.Name"]} | ${lang("video.htmltitle")} + + + + + + - - - - - -

 

- - - - + +

 

+ + + -- 2.11.0