media stuff
authorbr1 <br1>
Fri, 29 Mar 2002 20:56:51 +0000 (20:56 +0000)
committerbr1 <br1>
Fri, 29 Mar 2002 20:56:51 +0000 (20:56 +0000)
20 files changed:
bundles/admin_de.properties
bundles/admin_en.properties
source/config.properties-dist
source/mircoders/entity/EntityContent.java
source/mircoders/entity/EntityUploadedMedia.java
source/mircoders/module/ModuleImages.java
source/mircoders/servlet/ServletModuleAudio.java [new file with mode: 0755]
source/mircoders/servlet/ServletModuleImages.java
source/mircoders/servlet/ServletModuleOtherMedia.java [new file with mode: 0755]
source/mircoders/servlet/ServletModuleUploadedMedia.java
source/mircoders/servlet/ServletModuleVideo.java [new file with mode: 0755]
templates-dist/admin/audio.template [new file with mode: 0755]
templates-dist/admin/audiolist.template [new file with mode: 0755]
templates-dist/admin/image.template
templates-dist/admin/imagelist.template
templates-dist/admin/media.template [new file with mode: 0755]
templates-dist/admin/medialist.template [new file with mode: 0755]
templates-dist/admin/start_admin.template
templates-dist/admin/video.template [new file with mode: 0755]
templates-dist/admin/videolist.template [new file with mode: 0755]

index e2edb04..f0355bc 100755 (executable)
@@ -25,28 +25,42 @@ no_matches_found=Keine passenden Eintr&auml;ge gefunden!
 list.next=weiter
 list.previous=zur&uuml;ck
 
+# media - used by image, audio, video and other media
+media.created=erzeugt
+media.changed=letzte &auml;nderung
+media.published=publiziert
+media.format=Format
+media.rights=Copyright
+media.type=Typ
+media.mediafolder=Mediafolder
+media.title=Titel
+media.description=Beschreibung
+media.date=Datum/Zusatz
+media.location=Ort
+media.creator=Urheber
+media.keywords=Keywords
+media.comment=Kommentar
+media.source=Quelle
+media.is_published=free to publish
+media.icon=Icon
+
+medialist.search_text_in=Text suchen in
+
 # image
 image.htmltitle=indymedia.de | image
-image.created=erzeugt
-image.changed=letzte &auml;nderung
-image.published=publiziert
-image.format=Format
-image.rights=Copyright
-image.type=Typ
-image.mediafolder=Mediafolder
-image.title=Titel
-image.description=Beschreibung
-image.date=Datum/Zusatz
-image.location=Ort
-image.creator=Urheber
-image.keywords=Keywords
-image.comment=Kommentar
-image.source=Quelle
-image.is_published=free to publish
-image.icon=Icon
-
 imagelist.htmltitle=indymedia.de | imagelist
-imagelist.search_text_in=Text suchen in
+
+# audio
+audio.htmltitle=indymedia.de | audio
+audiolist.htmltitle=indymedia.de | audiolist
+
+# video
+video.htmltitle=indymedia.de | video
+videolist.htmltitle=indymedia.de | videolist
+
+# other
+other_media.htmltitle=indymedia.de | other media
+other_media.htmltitle=indymedia.de | other medialist
 
 # breaking
 breaking.htmltitle=indymedia.de | breaking news
@@ -210,6 +224,9 @@ start.generate.navigation=Navigation
 start.coverage.title=SCHWERPUNKTEs
 start.topics.title=THEMEN
 start.images.title=BILDER
+start.audio.title=AUDIO
+start.video.title=VIDEO
+start.other_media.title=ANDERE MEDIEN
 start.mediafolder.title=MEDIAFOLDER
 start.languages.title=SPRACHEN
 start.imcs.title=IMCS
index f2d7bb5..5194702 100755 (executable)
@@ -25,28 +25,42 @@ no_matches_found=No matching entries!
 list.next=next
 list.previous=previous
 
+# media - used by image, audio, video and other media
+media.created=erzeugt
+media.changed=letzte &auml;nderung
+media.published=publiziert
+media.format=Format
+media.rights=Copyright
+media.type=Typ
+media.mediafolder=Mediafolder
+media.title=Titel
+media.description=Beschreibung
+media.date=Datum/Zusatz
+media.location=Ort
+media.creator=Urheber
+media.keywords=Keywords
+media.comment=Kommentar
+media.source=Quelle
+media.is_published=free to publish
+media.icon=Icon
+
+medialist.search_text_in=Text suchen in
+
 # image
 image.htmltitle=indymedia.de | image
-image.created=created
-image.changed=changed
-image.published=published
-image.format=format
-image.rights=copyright
-image.type=imagetype
-image.mediafolder=mediafolder
-image.title=title
-image.description=description
-image.date=datum/additional
-image.location=location
-image.creator=creator
-image.keywords=keywords
-image.comment=comment
-image.source=source
-image.is_published=free to publish
-image.icon=icon
-
 imagelist.htmltitle=indymedia.de | imagelist
-imagelist.search_text_in=search text in
+
+# audio
+audio.htmltitle=indymedia.de | audio
+audiolist.htmltitle=indymedia.de | audiolist
+
+# video
+video.htmltitle=indymedia.de | video
+videolist.htmltitle=indymedia.de | videolist
+
+# other
+other_media.htmltitle=indymedia.de | other media
+other_media.htmltitle=indymedia.de | other medialist
 
 # breaking
 breaking.htmltitle=indymedia.de | breaking news
index b975e21..a778ea1 100755 (executable)
@@ -230,13 +230,27 @@ ServletModule.Images.ConfirmTemplate=admin/confirm.template
 ServletModule.Images.ObjektTemplate=admin/image.template
 ServletModule.Images.ListTemplate=admin/imagelist.template
 ServletModule.Images.Logfile=log/mir.log
+Module.Images.Logfile=log/mir.log
 
 Module.UploadedMedia.Logfile=log/mir.log
 
+ServletModule.Audio.ConfirmTemplate=admin/confirm.template
+ServletModule.Audio.ObjektTemplate=admin/audio.template
+ServletModule.Audio.ListTemplate=admin/audiolist.template
+ServletModule.Audio.Logfile=log/mir.log
+
+ServletModule.Video.ConfirmTemplate=admin/confirm.template
+ServletModule.Video.ObjektTemplate=admin/video.template
+ServletModule.Video.ListTemplate=admin/videolist.template
+ServletModule.Video.Logfile=log/mir.log
+
+ServletModule.OtherMedia.ConfirmTemplate=admin/confirm.template
+ServletModule.OtherMedia.ObjektTemplate=admin/media.template
+ServletModule.OtherMedia.ListTemplate=admin/medialist.template
+ServletModule.OtherMedia.Logfile=log/mir.log
+
 ServletModule.Content.ConfirmTemplate=admin/confirm.template
 ServletModule.Content.ObjektTemplate=admin/content.template
-# is the next line ever used??? dont thinks so [br1]
-#ServletModule.Content.OpTemplate=oplist.template
 ServletModule.Content.ListTemplate=admin/contentlist.template
 ServletModule.Content.Logfile=log/mir.log
 Module.Content.Logfile=log/mir.log
index e6fbbe0..eedd1f9 100755 (executable)
@@ -339,6 +339,7 @@ public class EntityContent extends Entity
           tinyIcon = mediaHandler.getTinyIcon();
           iconAlt = mediaHandler.getIconAlt();
         }
+
       }
       //it only has image(s)
       if (tinyIcon == null) {
index 7a1ee12..a092489 100755 (executable)
@@ -1,18 +1,18 @@
 package mircoders.entity;
 
-import java.lang.*;
-import java.io.*;
-import java.util.*;
-import java.sql.*;
+import freemarker.template.SimpleList;
+import freemarker.template.SimpleScalar;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateModelException;
+import mir.entity.Entity;
+import mir.media.MediaHelper;
+import mir.media.MirMedia;
+import mir.storage.StorageObject;
+import mir.storage.StorageObjectException;
+import mircoders.storage.DatabaseUploadedMedia;
+
+import java.util.HashMap;
 
-import freemarker.template.*;
-
-import mir.entity.*;
-import mir.misc.*;
-import mir.storage.*;
-import mir.media.*;
-
-import mircoders.storage.*;
 /**
  * Diese Klasse enthält die Daten eines MetaObjekts
  *
@@ -21,114 +21,150 @@ import mircoders.storage.*;
  */
 
 
-public class EntityUploadedMedia extends Entity
-{
+public class EntityUploadedMedia extends Entity {
 
 
-  public EntityUploadedMedia(){
+  public EntityUploadedMedia() {
     super();
   }
 
-  public EntityUploadedMedia(StorageObject theStorage)
-  {
+  public EntityUploadedMedia(StorageObject theStorage) {
     this();
     setStorage(theStorage);
   }
 
-  public void setValues(HashMap theStringValues)
-       {
-               if (theStringValues != null) {
-                       if (!theStringValues.containsKey("is_published"))
-                        theStringValues.put("is_published","0");
-               }
-               super.setValues(theStringValues);
-       }
-
-
-       /**
-        * fetches the MediaType entry assiciated w/ this media
-        *
-        * @return mir.entity.Entity
-        */
-       public Entity getMediaType() throws StorageObjectException {
-        Entity ent = null;
-        try {
-                   ent = DatabaseUploadedMedia.getInstance().getMediaType(this);
-        } catch (StorageObjectException e) {
-            throwStorageObjectException(e, "get MediaType failed -- ");
-        }
-        return ent;
-       }
-
-  public String getValue(String key)
-  {
-    String returnValue=null;
-
-    if (key!=null) {
+  public void setValues(HashMap theStringValues) {
+    if (theStringValues != null) {
+      if (!theStringValues.containsKey("is_published"))
+        theStringValues.put("is_published", "0");
+    }
+    super.setValues(theStringValues);
+  }
+
+
+  /**
+   * fetches the MediaType entry assiciated w/ this media
+   *
+   * @return mir.entity.Entity
+   */
+  public Entity getMediaType() throws StorageObjectException {
+    Entity ent = null;
+    try {
+      ent = DatabaseUploadedMedia.getInstance().getMediaType(this);
+    }
+    catch (StorageObjectException e) {
+      throwStorageObjectException(e, "get MediaType failed -- ");
+    }
+    return ent;
+  }
+
+  public String getValue(String key) {
+    String returnValue = null;
+
+    if (key != null) {
       if (key.equals("big_icon"))
-        returnValue=getBigIcon();
+        returnValue = getBigIcon();
       else if (key.equals("descr"))
-        returnValue=getDescr();
+        returnValue = getDescr();
+      else if (key.equals("mediatype"))
+        returnValue = getMediaTypeString();
+      else if (key.equals("mimetype"))
+        returnValue = getMimeType();
       else
-        returnValue=super.getValue(key);
+        returnValue = super.getValue(key);
     }
     return returnValue;
   }
 
-  public TemplateModel get(java.lang.String key) throws TemplateModelException
-  {
+  public TemplateModel get(java.lang.String key) throws TemplateModelException {
     if (key.equals("url"))
       return getUrl();
-
     return new SimpleScalar(getValue(key));
   }
 
   // @todo  all these methods should be merged into 1
   // and the MediaHandler should be cached somehow.
-  private String getBigIcon()
-  {
-    MirMedia            mediaHandler=null;
-    Entity              mediaType=null;
+  private String getMediaTypeString() {
+    MirMedia mediaHandler = null;
+    Entity mediaType = null;
 
     try {
       mediaType = getMediaType();
-      mediaHandler = MediaHelper.getHandler( mediaType );
+      mediaHandler = MediaHelper.getHandler(mediaType);
+      String t;
+      if (mediaHandler.isAudio())
+        return "audio";
+      else if (mediaHandler.isImage())
+        return "image";
+      else if (mediaHandler.isVideo())
+        return "video";
+      else
+        return "other";
+    }
+    catch (Exception ex) {
+      theLog.printWarning("-- getMediaTypeString: could not fetch data "
+                          + this.getClass().toString() + " " + ex.toString());
+    }
+    return null;
+  }
+
+  private String getBigIcon() {
+    MirMedia mediaHandler = null;
+    Entity mediaType = null;
+
+    try {
+      mediaType = getMediaType();
+      mediaHandler = MediaHelper.getHandler(mediaType);
       return mediaHandler.getBigIcon();
-    } catch (Exception ex) {
+    }
+    catch (Exception ex) {
       theLog.printWarning("-- getBigIcon: could not fetch data "
-                         + this.getClass().toString()+" "+ ex.toString());
+                          + this.getClass().toString() + " " + ex.toString());
     }
     return null;
   }
 
-  private SimpleList getUrl()
-  {
-    MirMedia            mediaHandler=null;
-    Entity              mediaType=null;
+  private SimpleList getUrl() {
+    MirMedia mediaHandler = null;
+    Entity mediaType = null;
 
     try {
       mediaType = getMediaType();
-      mediaHandler = MediaHelper.getHandler( mediaType );
+      mediaHandler = MediaHelper.getHandler(mediaType);
       return mediaHandler.getURL(this, mediaType);
-    } catch (Exception ex) {
+    }
+    catch (Exception ex) {
       theLog.printWarning("-- getUrl: could not fetch data "
-                         + this.getClass().toString()+" "+ ex.toString());
+                          + this.getClass().toString() + " " + ex.toString());
     }
     return null;
   }
 
-  private String getDescr()
-  {
-    MirMedia            mediaHandler=null;
-    Entity              mediaType=null;
+  private String getDescr() {
+    MirMedia mediaHandler = null;
+    Entity mediaType = null;
 
     try {
       mediaType = getMediaType();
-      mediaHandler = MediaHelper.getHandler( mediaType );
+      mediaHandler = MediaHelper.getHandler(mediaType);
       return mediaHandler.getDescr();
-    } catch (Exception ex) {
+    }
+    catch (Exception ex) {
       theLog.printWarning("-- getDescr: could not fetch data "
-                         + this.getClass().toString()+" "+ ex.toString());
+                          + this.getClass().toString() + " " + ex.toString());
+    }
+    return null;
+  }
+  private String getMimeType() {
+    Entity mediaType = null;
+
+    try {
+      mediaType = getMediaType();
+      return mediaType.getValue("mime_type");
+    }
+    catch (Exception ex) {
+      theLog.printWarning("-- getBigIcon: could not fetch data "
+                          + this.getClass().toString() + " " + ex.toString());
     }
     return null;
   }
index 01e8e5f..13ee50d 100755 (executable)
@@ -24,7 +24,7 @@ public class ModuleImages extends AbstractModule {
 
        public ModuleImages(StorageObject theStorage) {
 
-               if (theLog == null) theLog = Logfile.getInstance(MirConfig.getProp("Home")+MirConfig.getProp("Module.Bilder.Logfile"));
+               if (theLog == null) theLog = Logfile.getInstance(MirConfig.getProp("Home")+MirConfig.getProp("Module.Images.Logfile"));
                if (theStorage == null) theLog.printWarning("StorageObject was null!");
                this.theStorage = theStorage;
 
diff --git a/source/mircoders/servlet/ServletModuleAudio.java b/source/mircoders/servlet/ServletModuleAudio.java
new file mode 100755 (executable)
index 0000000..62a26a2
--- /dev/null
@@ -0,0 +1,42 @@
+package mircoders.servlet;
+
+import mir.misc.Logfile;
+import mir.misc.MirConfig;
+import mir.servlet.ServletModule;
+import mir.storage.StorageObjectException;
+import mircoders.module.ModuleUploadedMedia;
+import mircoders.storage.DatabaseAudio;
+
+/*
+ *
+ *
+ * @author br1
+ */
+
+public class ServletModuleAudio extends ServletModuleUploadedMedia {
+
+  //private static DatabaseRights dbRights;
+
+  // Singelton / Contructor
+  private static ServletModuleAudio instance = new ServletModuleAudio();
+
+  public static ServletModule getInstance() {
+    return instance;
+  }
+
+
+  private ServletModuleAudio() {
+    theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("ServletModule.Audio.Logfile"));
+    templateListString = MirConfig.getProp("ServletModule.Audio.ListTemplate");
+    templateObjektString = MirConfig.getProp("ServletModule.Audio.ObjektTemplate");
+    templateConfirmString = MirConfig.getProp("ServletModule.Audio.ConfirmTemplate");
+    try {
+      mainModule = new ModuleUploadedMedia(DatabaseAudio.getInstance());
+      //dbRights = DatabaseRights.getInstance();
+    }
+    catch (StorageObjectException e) {
+      theLog.printDebugInfo("servletmodule audio could not be initialized");
+    }
+  }
+}
+
index c358b8c..0a3a384 100755 (executable)
@@ -101,7 +101,5 @@ public class ServletModuleImages extends ServletModuleUploadedMedia
     }
     else throw new ServletModuleException("id nicht angeben.");
   }
-
-
 }
 
diff --git a/source/mircoders/servlet/ServletModuleOtherMedia.java b/source/mircoders/servlet/ServletModuleOtherMedia.java
new file mode 100755 (executable)
index 0000000..efd97e5
--- /dev/null
@@ -0,0 +1,42 @@
+package mircoders.servlet;
+
+import mir.misc.Logfile;
+import mir.misc.MirConfig;
+import mir.servlet.ServletModule;
+import mir.storage.StorageObjectException;
+import mircoders.module.ModuleUploadedMedia;
+import mircoders.storage.DatabaseOther;
+
+/*
+ *
+ *
+ * @author br1
+ */
+
+public class ServletModuleOtherMedia extends ServletModuleUploadedMedia {
+
+  //private static DatabaseRights dbRights;
+
+  // Singelton / Contructor
+  private static ServletModuleOtherMedia instance = new ServletModuleOtherMedia();
+
+  public static ServletModule getInstance() {
+    return instance;
+  }
+
+
+  private ServletModuleOtherMedia() {
+    theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("ServletModule.OtherMedia.Logfile"));
+    templateListString = MirConfig.getProp("ServletModule.OtherMedia.ListTemplate");
+    templateObjektString = MirConfig.getProp("ServletModule.OtherMedia.ObjektTemplate");
+    templateConfirmString = MirConfig.getProp("ServletModule.OtherMedia.ConfirmTemplate");
+    try {
+      mainModule = new ModuleUploadedMedia(DatabaseOther.getInstance());
+      //dbRights = DatabaseRights.getInstance();
+    }
+    catch (StorageObjectException e) {
+      theLog.printDebugInfo("servletmodule otherMedia could not be initialized");
+    }
+  }
+}
+
index 7fd35bc..71ddb8a 100755 (executable)
@@ -1,29 +1,33 @@
 package mircoders.servlet;
 
-import java.io.*;
-import java.lang.*;
-import java.sql.*;
-import java.util.*;
-import java.net.*;
-import java.lang.reflect.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-
-import freemarker.template.*;
-import com.oreilly.servlet.multipart.*;
-import com.oreilly.servlet.*;
-
-import mir.servlet.*;
-import mir.module.*;
-import mir.misc.*;
-import mir.entity.*;
-import mir.storage.*;
-import mir.media.*;
-
-import mircoders.entity.*;
-import mircoders.storage.*;
-import mircoders.module.*;
-import mircoders.producer.*;
+import freemarker.template.SimpleHash;
+import mir.entity.Entity;
+import mir.entity.EntityList;
+import mir.media.MediaHelper;
+import mir.media.MirMedia;
+import mir.media.MirMediaException;
+import mir.media.MirMediaUserException;
+import mir.misc.FileUtil;
+import mir.misc.MpRequest;
+import mir.misc.StringUtil;
+import mir.misc.WebdbMultipartRequest;
+import mir.module.ModuleException;
+import mir.servlet.ServletModule;
+import mir.servlet.ServletModuleException;
+import mir.servlet.ServletModuleUserException;
+import mir.storage.Database;
+import mir.storage.StorageObjectException;
+import mircoders.entity.EntityUsers;
+import mircoders.storage.DatabaseMediaType;
+import mircoders.storage.DatabaseMediafolder;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
 
 /*
  *  ServletModuleBilder -
@@ -34,22 +38,22 @@ import mircoders.producer.*;
  */
 
 public abstract class ServletModuleUploadedMedia
-  extends mir.servlet.ServletModule
-{
+        extends mir.servlet.ServletModule {
 
   //private static DatabaseRights dbRights;
 
-  public static ServletModule getInstance() { return null; }
+  public static ServletModule getInstance() {
+    return null;
+  }
 
   public void insert(HttpServletRequest req, HttpServletResponse res)
-    throws ServletModuleException, ServletModuleUserException
-  {
+          throws ServletModuleException, ServletModuleUserException {
     try {
       WebdbMultipartRequest mp = new WebdbMultipartRequest(req);
       HashMap parameters = mp.getParameters();
-      EntityUsers   user = _getUser(req);
-      String mediaId=null;
-      MpRequest mpReq = (MpRequest)mp.requestList.get(0);
+      EntityUsers user = _getUser(req);
+      String mediaId = null;
+      MpRequest mpReq = (MpRequest) mp.requestList.get(0);
       String mediaTypeId; //= null;
       MirMedia mediaHandler;
       Database mediaStorage;
@@ -58,13 +62,13 @@ public abstract class ServletModuleUploadedMedia
       // sends us. (the "Oreilly method")
       String contentType = mpReq.getContentType();
       String fileName = mpReq.getFilename();
-      theLog.printInfo("CONTENT-TYPE FROM BROWSER: "+contentType);
+      theLog.printInfo("CONTENT-TYPE FROM BROWSER: " + contentType);
 
       // if the client browser sent us unknown (text/plain is default)
       // or if we got application/octet-stream, it's possible that
       // the browser is in error, better check against the file extension
       if (contentType.equals("text/plain") ||
-          contentType.equals("application/octet-stream")) {
+              contentType.equals("application/octet-stream")) {
         /**
          * This is just a temporary way to get the content-type via
          * the .extension , we could maybe use a magic method, by looking
@@ -80,15 +84,15 @@ public abstract class ServletModuleUploadedMedia
          * sure that it is in this file -mh
          */
         contentType = FileUtil.guessContentTypeFromName(fileName);
-        if (contentType==null)
+        if (contentType == null)
           contentType = "text/plain"; // rfc1867 says this is the default
       }
-      theLog.printInfo("CONTENT TYPE IS: "+contentType);
+      theLog.printInfo("CONTENT TYPE IS: " + contentType);
 
       if (contentType.equals("text/plain") ||
-          contentType.equals("application/octet-stream")) {
+              contentType.equals("application/octet-stream")) {
         throw new ServletModuleUserException(
-          "One or more files of unrecognized types");
+                "One or more files of unrecognized types");
       }
 
       parameters.put("date", StringUtil.date2webdbDate(new GregorianCalendar()));
@@ -99,7 +103,7 @@ public abstract class ServletModuleUploadedMedia
       // @todo this should probably be moved to DatabaseMediaType or
       // somewhere else appropriate -mh
       String[] contentTypeSplit = StringUtil.split(contentType, "/");
-      String wc = " mime_type LIKE '"+contentTypeSplit[0]+"%'";
+      String wc = " mime_type LIKE '" + contentTypeSplit[0] + "%'";
       DatabaseMediaType mediaTypeStor = DatabaseMediaType.getInstance();
       EntityList mediaTypesList = mediaTypeStor.selectByWhereClause(wc);
 
@@ -110,20 +114,20 @@ public abstract class ServletModuleUploadedMedia
         throw new MirMediaUserException("One or more files of unrecognized type");
       }
       Entity mediaType = null;
-      
+
       // find out if we an exact content-type match if so take it.
       // otherwise just use the first one.
       // @todo this should probably be moved to DatabaseMediaType -mh
-      for(int j=0;j<mediaTypesList.size();j++) {
-        if(contentType.equals(
-                        mediaTypesList.elementAt(j).getValue("mime_type")))
+      for (int j = 0; j < mediaTypesList.size(); j++) {
+        if (contentType.equals(
+                mediaTypesList.elementAt(j).getValue("mime_type")))
           mediaType = mediaTypesList.elementAt(j);
       }
 
       // if no exact match, whatever foo/* might match
-      if( mediaType == null )
+      if (mediaType == null)
         mediaType = mediaTypesList.elementAt(0);
-            
+
       // get the class names from the media_type table.
       mediaTypeId = mediaType.getId();
       try {
@@ -132,18 +136,19 @@ public abstract class ServletModuleUploadedMedia
         // along with media_type
         mediaHandler = MediaHelper.getHandler(mediaType);
         mediaStorage = MediaHelper.getStorage(mediaType,
-                                            "mircoders.storage.Database");
-      } catch (Exception e) {
-        theLog.printError("getting media handler failed: "+e.toString());
+                                              "mircoders.storage.Database");
+      }
+      catch (Exception e) {
+        theLog.printError("getting media handler failed: " + e.toString());
         throw new MirMediaException("getting media handler failed: "
-                                        +e.toString());
+                                    e.toString());
       }
 
-      parameters.put("to_media_type",mediaTypeId);
+      parameters.put("to_media_type", mediaTypeId);
       //load the classes via reflection
       Entity mediaEnt = null;
       try {
-        mediaEnt = (Entity)mediaStorage.getEntityClass().newInstance();
+        mediaEnt = (Entity) mediaStorage.getEntityClass().newInstance();
         mediaEnt.setStorage(mediaStorage);
         mediaEnt.setValues(parameters);
         // unfortunatly we have to insert it first because of the way
@@ -154,172 +159,193 @@ public abstract class ServletModuleUploadedMedia
 
         //were done with mpReq at this point, dereference it.
         //as it contains mucho mem. -mh 01.10.2001
-        mpReq=null;
-        
+        mpReq = null;
+
         //we got this far, associate the media to the article
-        mediaEnt.setValueForProperty("is_published","1");
+        mediaEnt.setValueForProperty("is_published", "1");
         mediaEnt.update();
-      } catch (Exception e) {
+      }
+      catch (Exception e) {
         try {
           mediaStorage.delete(mediaId);
-        } catch (Exception e2) {
+        }
+        catch (Exception e2) {
           // dont't do anything here as the error was setting the media,
           // this just means that the entity may not have been inserted yet
         }
-        theLog.printError("setting media failed: "+e.toString());
-        throw new MirMediaException("setting media failed: "+e.toString());
+        theLog.printError("setting media failed: " + e.toString());
+        throw new MirMediaException("setting media failed: " + e.toString());
       }
 
       _edit(mediaId, req, res);
     }
-    catch (MirMediaException e) { throw new ServletModuleException(
-                          "upload -- media handling exception " +e.toString());}
-    catch (MirMediaUserException e) { throw new ServletModuleUserException(
-                                                  e.getMsg());}
-    catch (IOException e) { throw new ServletModuleException("upload -- ioexception " + e.toString());}
-    catch (StorageObjectException e) { throw new ServletModuleException("StorageObjectException" + e.toString());}
+    catch (MirMediaException e) {
+      throw new ServletModuleException(
+              "upload -- media handling exception " + e.toString());
+    }
+    catch (MirMediaUserException e) {
+      throw new ServletModuleUserException(
+              e.getMsg());
+    }
+    catch (IOException e) {
+      throw new ServletModuleException("upload -- ioexception " + e.toString());
+    }
+    catch (StorageObjectException e) {
+      throw new ServletModuleException("StorageObjectException" + e.toString());
+    }
 
   }
 
-  public void update(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException
-  {
+  public void update(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException {
 
     try {
       WebdbMultipartRequest mp = new WebdbMultipartRequest(req);
       HashMap parameters = mp.getParameters();
 
-      EntityUsers   user = _getUser(req);
+      EntityUsers user = _getUser(req);
       parameters.put("to_publisher", user.getId());
       parameters.put("is_produced", "0");
       if (!parameters.containsKey("is_published"))
-        parameters.put("is_published","0");
+        parameters.put("is_published", "0");
 
       String id = mainModule.set(parameters);
-      theLog.printError("media ID"+id);
+      theLog.printError("media ID" + id);
       _edit(id, req, res);
     }
-    catch (IOException e) { throw new ServletModuleException("upload -- ioexception " + e.toString());}
-    catch (ModuleException e) { throw new ServletModuleException("upload -- moduleexception " + e.toString());}
+    catch (IOException e) {
+      throw new ServletModuleException("upload -- ioexception " + e.toString());
+    }
+    catch (ModuleException e) {
+      throw new ServletModuleException("upload -- moduleexception " + e.toString());
+    }
 
   }
 
 
   public void list(HttpServletRequest req, HttpServletResponse res)
-  throws ServletModuleException {
+          throws ServletModuleException {
     // Parameter auswerten
     SimpleHash mergeData = new SimpleHash();
-               SimpleHash popups = new SimpleHash();
-               
-               String query_text = req.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 = req.getParameter("query_field");
-               mergeData.put("query_field",query_field);
-               String query_is_published = req.getParameter("query_is_published");
-               mergeData.put("query_is_published",query_is_published);
-               String query_media_folder = req.getParameter("query_media_folder");
-               mergeData.put("query_media_folder",query_media_folder);
-               String offset = req.getParameter("offset");
-               if (offset==null || offset.equals("")) offset="0";
-               mergeData.put("offset",offset);
-
-               String order = req.getParameter("order");
-               if (order==null) order="webdb_lastchange desc";
-
-               // if in connection mode to content
-               String cid = req.getParameter("cid");
-               mergeData.put("cid",cid);
-
-
-               // 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 und ausliefern
-               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());
-                               }
-                               //fetch the popups
-                               popups.put("mediafolderPopupData",DatabaseMediafolder.getInstance().getPopupData());
-                       }
-                       // raus damit
-                       deliver(req, res, mergeData, popups, templateListString);
-               } catch (ModuleException e) {
-                       throw new ServletModuleException(e.toString());
-               } catch (Exception e) {
-                       throw new ServletModuleException(e.toString());
-               }
+    SimpleHash popups = new SimpleHash();
+
+    String query_text = req.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 = req.getParameter("query_field");
+    mergeData.put("query_field", query_field);
+    String query_is_published = req.getParameter("query_is_published");
+    mergeData.put("query_is_published", query_is_published);
+    String query_media_folder = req.getParameter("query_media_folder");
+    mergeData.put("query_media_folder", query_media_folder);
+    String offset = req.getParameter("offset");
+    if (offset == null || offset.equals("")) offset = "0";
+    mergeData.put("offset", offset);
+
+    String order = req.getParameter("order");
+    if (order == null) order = "webdb_lastchange desc";
+
+    // if in connection mode to content
+    String cid = req.getParameter("cid");
+    mergeData.put("cid", cid);
+
+
+    // 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 und ausliefern
+    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());
+        }
+        //fetch the popups
+        popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
+      }
+      // raus damit
+      deliver(req, res, mergeData, popups, templateListString);
+    }
+    catch (ModuleException e) {
+      throw new ServletModuleException(e.toString());
+    }
+    catch (Exception e) {
+      throw new ServletModuleException(e.toString());
+    }
   }
 
 
   public void add(HttpServletRequest req, HttpServletResponse res)
-  throws ServletModuleException
-  {
+          throws ServletModuleException {
     try {
       SimpleHash mergeData = new SimpleHash();
       mergeData.put("new", "1");
-                       SimpleHash popups = new SimpleHash();
-                       popups.put("mediafolderPopupData",DatabaseMediafolder.getInstance().getPopupData());
+      SimpleHash popups = new SimpleHash();
+      popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
       deliver(req, res, mergeData, popups, templateObjektString);
     }
-    catch (Exception e) { throw new ServletModuleException(e.toString());}
+    catch (Exception e) {
+      throw new ServletModuleException(e.toString());
+    }
   }
 
   public void edit(HttpServletRequest req, HttpServletResponse res)
-       throws ServletModuleException {
+          throws ServletModuleException {
     String idParam = req.getParameter("id");
     _edit(idParam, req, res);
   }
 
   private void _edit(String idParam, HttpServletRequest req, HttpServletResponse res)
-       throws ServletModuleException {
-    if (idParam!=null && !idParam.equals("")) {
+          throws ServletModuleException {
+    if (idParam != null && !idParam.equals("")) {
       try {
-                               SimpleHash popups = new SimpleHash();
-                               popups.put("mediafolderPopupData",DatabaseMediafolder.getInstance().getPopupData());
-        deliver(req, res, mainModule.getById(idParam),popups,
-                                                               templateObjektString);
-      } catch (ModuleException e) {
-                               throw new ServletModuleException(e.toString());
-                       } catch (StorageObjectException e) {
-                               throw new ServletModuleException(e.toString());
-                       }
-    } else {
-                       throw new ServletModuleException("ServletmoduleUploadedMedia :: _edit without id");
-               }
+        SimpleHash popups = new SimpleHash();
+        popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
+        deliver(req, res, mainModule.getById(idParam), popups,
+                templateObjektString);
+      }
+      catch (ModuleException e) {
+        throw new ServletModuleException(e.toString());
+      }
+      catch (StorageObjectException e) {
+        throw new ServletModuleException(e.toString());
+      }
+    }
+    else {
+      throw new ServletModuleException("ServletmoduleUploadedMedia :: _edit without id");
+    }
   }
 
 
   /** @todo should be in ServletModule.java */
-  private EntityUsers _getUser(HttpServletRequest req)
-  {
-    HttpSession session=req.getSession(false);
-    return (EntityUsers)session.getAttribute("login.uid");
+  private EntityUsers _getUser(HttpServletRequest req) {
+    HttpSession session = req.getSession(false);
+    return (EntityUsers) session.getAttribute("login.uid");
   }
 
 }
diff --git a/source/mircoders/servlet/ServletModuleVideo.java b/source/mircoders/servlet/ServletModuleVideo.java
new file mode 100755 (executable)
index 0000000..a911a62
--- /dev/null
@@ -0,0 +1,42 @@
+package mircoders.servlet;
+
+import mir.misc.Logfile;
+import mir.misc.MirConfig;
+import mir.servlet.ServletModule;
+import mir.storage.StorageObjectException;
+import mircoders.module.ModuleUploadedMedia;
+import mircoders.storage.DatabaseVideo;
+
+/*
+ *
+ *
+ * @author br1
+ */
+
+public class ServletModuleVideo extends ServletModuleUploadedMedia {
+
+  //private static DatabaseRights dbRights;
+
+  // Singelton / Contructor
+  private static ServletModuleVideo instance = new ServletModuleVideo();
+
+  public static ServletModule getInstance() {
+    return instance;
+  }
+
+
+  private ServletModuleVideo() {
+    theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("ServletModule.Video.Logfile"));
+    templateListString = MirConfig.getProp("ServletModule.Video.ListTemplate");
+    templateObjektString = MirConfig.getProp("ServletModule.Video.ObjektTemplate");
+    templateConfirmString = MirConfig.getProp("ServletModule.Video.ConfirmTemplate");
+    try {
+      mainModule = new ModuleUploadedMedia(DatabaseVideo.getInstance());
+      //dbRights = DatabaseRights.getInstance();
+    }
+    catch (StorageObjectException e) {
+      theLog.printDebugInfo("servletmodule video could not be initialized");
+    }
+  }
+}
+
diff --git a/templates-dist/admin/audio.template b/templates-dist/admin/audio.template
new file mode 100755 (executable)
index 0000000..16fa695
--- /dev/null
@@ -0,0 +1,113 @@
+<html>
+<head>
+<title>
+${lang("audio.htmltitle")}
+</title>
+<head>
+<SCRIPT LANGUAGE="JavaScript">
+function openWin(url) {
+   window.open(url,"vc","scrollbars=0,height=${data.img_height},width=${data.img_width}");
+}
+</SCRIPT>
+<body bgcolor="#FFFFFF">
+<include "admin/head.template">
+
+<form enctype="multipart/form-data" method="post" action="${config.actionRoot}?module=Audio&do=<if data.new>insert<else>update</if>&id=${data.id}">
+<if data.icon_data=="" || data.icon_data=="0">
+       <INPUT TYPE="file" NAME="mptest">
+</if>
+
+       <input type="hidden" name="where" value="${data.where}">
+       <input type="hidden" name="offset" value="${data.offset}">
+       <input type="hidden" name="order" value="${data.order}">
+       <input type="hidden" name="id" value="${data.id}">
+
+       <table border="0">
+       <tr>
+    <td align="right" bgcolor="#006600">
+               <font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+                       <img src="${config.docRoot}/img/${data.big_icon}" border=0></font></td>
+    <td valign="bottom"><font color="Silver" face="Verdana, Arial, Helvetica, sans-serif" size=1>
+               ${lang("media.created")}: ${data.webdb_create}
+        <if data.webdb_lastchange>/ ${lang("media.changed")} ${data.webdb_lastchange}</if><br>
+               <if data.is_published=="1">${lang("media.published")}: ${data.publish_date} / ${data.publish_server}${data.publish_path}<br></if>
+               ${lang("media.format")}: ${data.mimetype} / ${data.descr}<br>
+               ${lang("media.rights")}: <b>${data.rightsHashdata[to_rights]["name"]}</b><br>
+       </td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.mediafolder")}:</B></font></td>
+    <td>
+               <select name="to_media_folder">
+               <list popups.mediafolderPopupData as m>
+               <option value="${m.key}" <if m.key == data.to_media_folder>selected</if>>${m.value}</option>
+               </list>
+           </select>
+       </td>
+       </tr>
+
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.title")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="255" name="title" value="${data.title}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.description")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="255" name="description" value="${data.description}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.date")}:</B></font></td>
+    <td><input type="text" size="8" maxlength="8" name="date" value="${data.date}">
+               <input type="text" size="20" maxlength="40" name="year" value="${data.year}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.location")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="80" name="place" value="${data.place}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.creator")}:</B></font></td>
+    <td>
+               <input type="text" size="40" maxlength="80" name="creator" value="${data.creator}">
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.keywords")}:</B></font></td>
+    <td><textarea cols="40" rows="2" name="keywords">${data.keywords}</textarea></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.comment")}:</B></font></td>
+    <td><textarea cols="40" rows="2" name="comment">${data.comment}</textarea></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.source")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="80" name="source" value="${data.source}"></td>
+       </tr>
+       <tr>
+    <td colspan="2" align="right"> <font color="black">
+       ${lang("media.is_published")} <input type="checkbox" name="is_published" value="1"<if data.is_published!="0" && data.is_published!=""> checked</if>>
+       <if data.new>
+      <input type="submit" name="save" value="${lang("insert")}">
+    <else>
+    <input type="submit" name="save" value="${lang("save")}">
+    </if> </font></form></font>
+    </td>
+</table>
+<include "admin/foot.template">
+</body>
+</html>
diff --git a/templates-dist/admin/audiolist.template b/templates-dist/admin/audiolist.template
new file mode 100755 (executable)
index 0000000..40435fe
--- /dev/null
@@ -0,0 +1,104 @@
+<html>
+<head>
+       <title>${lang("audiolist.htmltitle")}</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+<include "admin/head.template">
+
+<table border="0" cellpadding="2" cellspacing="1">
+  <tr>
+    <td colspan="5"><form method="post" action="${config.actionRoot}">
+       <input type="hidden" name="module" value="Audio">
+       <input type="hidden" name="do" value="list">
+       <input type="hidden" name="cid" value="${data.cid}">
+       <table border="0">
+       <tr bgcolor="Pink">
+               <td>${lang("medialist.search_text_in")}:</td>
+               <td>${lang("media.published")}:</td>
+               <td>${lang("media.mediafolder")}:</td>
+               <td>&nbsp;</td>
+       </tr>
+
+       <tr>
+       <td>
+               <input type="text" size="10" maxlength="20" name="query_text" value="${data.query_text}">
+               <select name="query_field">
+               <option value="title"<if data.query_field=="title"> selected</if>>${lang("media.title")}</option>
+               <option value="creator"<if data.query_field=="creator"> selected</if>>${lang("media.creator")}</option>
+               <option value="place"<if data.query_field=="place"> selected</if>>${lang("media.location")}</option>
+               <option value="keywords"<if data.query_field=="keywords"> selected</if>>${lang("media.keywords")}</option>
+       </select>
+       </td>
+       <td>
+               <select name="query_is_published">
+                   <option value="">${lang("dontcare")}</option>
+               <option value="0" <if data.query_is_published=="0"> selected</if>>${lang("no")}</option>
+                   <option value="1" <if data.query_is_published=="1"> selected</if>>${lang("yes")}</option>
+           </select>
+       </td>
+       <td>
+       <select name="query_media_folder">
+       <list popups.mediafolderPopupData as m>
+       <option value="${m.key}" <if m.key == query_media_folder>selected</if>>${m.value}</option>
+       </list>
+       </select>
+       </td>
+       <td>
+               <input type="submit" name="search" value="${lang("filter")}">
+       </td>
+       </tr>
+       </table>
+       </form>
+       </td>
+  </tr>
+
+  <tr bgcolor="#006600" >
+       <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.icon")}</b></font></td>
+       <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.title")}</b></font></td>
+    <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.mediafolder")}</b></font></td>
+    <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.creator")}</b></font></td>
+  </tr>
+  <if data.contentlist>
+  <list data.contentlist as entry>
+  <tr <if grey=="1"><assign grey="0">bgcolor="#dddddd" <else><assign grey="1"> </if>>
+  <td>
+         <img src="${config.docRoot}/img/${entry.big_icon}" border=0></font></td>
+  <td>${entry.title}&nbsp;
+         <if entry.decription><br>${entry.description}</if></td>
+  <td>${data.mediafolderHashdata[entry.to_media_folder]["name"]}&nbsp;</td>
+  <td>${entry.creator}&nbsp;</td>
+  <td><font size="1">&nbsp;
+       <if data.cid><a href="${config.actionRoot}?module=Content&do=attach&mid=${entry.id}&cid=${data.cid}">${lang("attach")}</a>
+       <else>
+       <a href="${config.actionRoot}?module=Audio&do=delete&id=${entry.id}">${lang("delete")}</a>
+    | <a href="${config.actionRoot}?module=Audio&do=edit&id=${entry.id}">${lang("edit")}</a>
+       </if>
+       </font></td>
+  </tr>
+  </list>
+  <tr>
+    <td colspan="4" bgcolor="#006600"><font color="#ffffff">${data.count} ${lang("records")}
+      / ${lang("show_from_to", data.from, data.to)}</font></td>
+    <td>&nbsp;</td>
+  </tr>
+
+<tr><td>
+<if data.prev>
+       <a href="${config.actionRoot}?module=Audio&do=list&query_text=${data.query_text_encoded}&query_field=${data.query_field}&query_is_published=${data.query_is_published}&query_media_folder=${data.query_media_folder}&offset=${data.prev}&prev=zur&uuml;ck&cid=${data.cid}">zurueck</a>&nbsp;
+</if>
+<if data.next>
+<a href="${config.actionRoot}?module=Audio&do=list&query_text=${data.query_text_encoded}&query_field=${data.query_field}&query_is_published=${data.query_is_published}&query_media_folder=${data.query_media_folder}&offset=${data.next}&next=weiter&cid=${data.cid}">weiter</a>
+</if>
+</td></tr>
+<else>
+  <tr><td align="center">${lang("no_matches_found")}</td></tr>
+</if>
+</table>
+<include "admin/foot.template">
+</body>
+</html>
index 2661bf9..2c03673 100755 (executable)
@@ -32,17 +32,17 @@ function openWin(url) {
                <img src="${config.actionRoot}?module=Images&do=showicon&id=${data.id}" border=0></a></font></td>
                </if>
     <td valign="bottom"><font color="Silver" face="Verdana, Arial, Helvetica, sans-serif" size=1>
-               ${lang("image.created")}: ${data.webdb_create} <if data.webdb_lastchange>/ ${lang("image.changed")} ${data.webdb_lastchange}</if><br>
-               <if data.is_published=="1">${lang("image.published")}: ${data.publish_date} / ${data.publish_server}${data.publish_path}<br></if>
-               ${lang("image.format")}: ${data.img_width}x${data.img_height} / ${data.imgformatHashdata[to_img_format]["name"]} / ${data.imglayoutHashdata[to_img_layout]["name"]} /  ${data.imgcolorHashdata[to_img_color]["name"]}<br>
-               ${lang("image.rights")}: <b>${data.rightsHashdata[to_rights]["name"]}</b><br>
-               ${lang("image.type")}: <b>${data.imgtypeHashdata[to_img_type]["name"]}</b><br>
+               ${lang("media.created")}: ${data.webdb_create} <if data.webdb_lastchange>/ ${lang("media.changed")} ${data.webdb_lastchange}</if><br>
+               <if data.is_published=="1">${lang("media.published")}: ${data.publish_date} / ${data.publish_server}${data.publish_path}<br></if>
+               ${lang("media.format")}: ${data.img_width}x${data.img_height} / ${data.imgformatHashdata[to_img_format]["name"]} / ${data.imglayoutHashdata[to_img_layout]["name"]} /  ${data.imgcolorHashdata[to_img_color]["name"]}<br>
+               ${lang("media.rights")}: <b>${data.rightsHashdata[to_rights]["name"]}</b><br>
+               ${lang("media.type")}: <b>${data.imgtypeHashdata[to_img_type]["name"]}</b><br>
        </td>
        </tr>
 
        <tr>
     <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-        <B>${lang("image.mediafolder")}:</B></font></td>
+        <B>${lang("media.mediafolder")}:</B></font></td>
     <td>
                <select name="to_media_folder">
                <list extra.mediafolderPopupData as m>
@@ -55,56 +55,56 @@ function openWin(url) {
 
        <tr>
     <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-        <B>${lang("image.title")}:</B></font></td>
+        <B>${lang("media.title")}:</B></font></td>
     <td><input type="text" size="40" maxlength="255" name="title" value="${data.title}"></td>
        </tr>
 
        <tr>
     <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-        <B>${lang("image.description")}:</B></font></td>
+        <B>${lang("media.description")}:</B></font></td>
     <td><input type="text" size="40" maxlength="255" name="description" value="${data.description}"></td>
        </tr>
 
        <tr>
     <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-        <B>${lang("image.date")}:</B></font></td>
+        <B>${lang("media.date")}:</B></font></td>
     <td><input type="text" size="8" maxlength="8" name="date" value="${data.date}">
                <input type="text" size="20" maxlength="40" name="year" value="${data.year}"></td>
        </tr>
 
        <tr>
     <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-        <B>${lang("image.location")}:</B></font></td>
+        <B>${lang("media.location")}:</B></font></td>
     <td><input type="text" size="40" maxlength="80" name="place" value="${data.place}"></td>
        </tr>
 
        <tr>
     <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-        <B>${lang("image.creator")}:</B></font></td>
+        <B>${lang("media.creator")}:</B></font></td>
     <td>
                <input type="text" size="40" maxlength="80" name="creator" value="${data.creator}">
        </tr>
 
        <tr>
     <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-        <B>${lang("image.keywords")}:</B></font></td>
+        <B>${lang("media.keywords")}:</B></font></td>
     <td><textarea cols="40" rows="2" name="keywords">${data.keywords}</textarea></td>
        </tr>
 
        <tr>
     <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-        <B>${lang("image.comment")}:</B></font></td>
+        <B>${lang("media.comment")}:</B></font></td>
     <td><textarea cols="40" rows="2" name="comment">${data.comment}</textarea></td>
        </tr>
 
        <tr>
     <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-        <B>${lang("image.source")}:</B></font></td>
+        <B>${lang("media.source")}:</B></font></td>
     <td><input type="text" size="40" maxlength="80" name="source" value="${data.source}"></td>
        </tr>
        <tr>
     <td colspan="2" align="right"> <font color="black">
-       ${lang("image.is_published")} <input type="checkbox" name="is_published" value="1"<if data.is_published!="0" && data.is_published!=""> checked</if>>
+       ${lang("media.is_published")} <input type="checkbox" name="is_published" value="1"<if data.is_published!="0" && data.is_published!=""> checked</if>>
        <if data.new>
       <input type="submit" name="save" value="${lang("insert")}">
     <else>
index a1760be..d00b44d 100755 (executable)
@@ -14,9 +14,9 @@
        <input type="hidden" name="cid" value="${data.cid}">
        <table border="0">
        <tr bgcolor="Pink">
-               <td>${lang("imagelist.search_text_in")}:</td>
-               <td>${lang("image.published")}:</td>
-               <td>${lang("image.mediafolder")}:</td>
+               <td>${lang("medialist.search_text_in")}:</td>
+               <td>${lang("media.published")}:</td>
+               <td>${lang("media.mediafolder")}:</td>
                <td>&nbsp;</td>
        </tr>
        
        <td>
                <input type="text" size="10" maxlength="20" name="query_text" value="${data.query_text}">
                <select name="query_field">
-               <option value="title"<if data.query_field=="title"> selected</if>>${lang("image.title")}</option>
-               <option value="creator"<if data.query_field=="creator"> selected</if>>${lang("image.creator")}</option>
-               <option value="place"<if data.query_field=="place"> selected</if>>${lang("image.location")}</option>
-               <option value="keywords"<if data.query_field=="keywords"> selected</if>>${lang("image.keywords")}</option>
+               <option value="title"<if data.query_field=="title"> selected</if>>${lang("media.title")}</option>
+               <option value="creator"<if data.query_field=="creator"> selected</if>>${lang("media.creator")}</option>
+               <option value="place"<if data.query_field=="place"> selected</if>>${lang("media.location")}</option>
+               <option value="keywords"<if data.query_field=="keywords"> selected</if>>${lang("media.keywords")}</option>
        </select>
        </td>
        <td>
 
   <tr bgcolor="#006600" >
        <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-       <b>${lang("image.icon")}</b></font></td>
+       <b>${lang("media.icon")}</b></font></td>
        <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-       <b>${lang("image.title")}</b></font></td>
+       <b>${lang("media.title")}</b></font></td>
     <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-       <b>${lang("image.mediafolder")}</b></font></td>
+       <b>${lang("media.mediafolder")}</b></font></td>
     <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
-       <b>${lang("image.creator")}</b></font></td>
+       <b>${lang("media.creator")}</b></font></td>
   </tr>
   <if data.contentlist>
   <list data.contentlist as entry>
diff --git a/templates-dist/admin/media.template b/templates-dist/admin/media.template
new file mode 100755 (executable)
index 0000000..90445a7
--- /dev/null
@@ -0,0 +1,113 @@
+<html>
+<head>
+<title>
+${lang("other_media.htmltitle")}
+</title>
+<head>
+<SCRIPT LANGUAGE="JavaScript">
+function openWin(url) {
+   window.open(url,"vc","scrollbars=0,height=${data.img_height},width=${data.img_width}");
+}
+</SCRIPT>
+<body bgcolor="#FFFFFF">
+<include "admin/head.template">
+
+<form enctype="multipart/form-data" method="post" action="${config.actionRoot}?module=OtherMedia&do=<if data.new>insert<else>update</if>&id=${data.id}">
+<if data.icon_data=="" || data.icon_data=="0">
+       <INPUT TYPE="file" NAME="mptest">
+</if>
+
+       <input type="hidden" name="where" value="${data.where}">
+       <input type="hidden" name="offset" value="${data.offset}">
+       <input type="hidden" name="order" value="${data.order}">
+       <input type="hidden" name="id" value="${data.id}">
+
+       <table border="0">
+       <tr>
+    <td align="right" bgcolor="#006600">
+               <font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+                       <img src="${config.docRoot}/img/${data.big_icon}" border=0></font></td>
+    <td valign="bottom"><font color="Silver" face="Verdana, Arial, Helvetica, sans-serif" size=1>
+               ${lang("media.created")}: ${data.webdb_create}
+        <if data.webdb_lastchange>/ ${lang("media.changed")} ${data.webdb_lastchange}</if><br>
+               <if data.is_published=="1">${lang("media.published")}: ${data.publish_date} / ${data.publish_server}${data.publish_path}<br></if>
+               ${lang("media.format")}: ${data.mimetype} / ${data.descr}<br>
+               ${lang("media.rights")}: <b>${data.rightsHashdata[to_rights]["name"]}</b><br>
+       </td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.mediafolder")}:</B></font></td>
+    <td>
+               <select name="to_media_folder">
+               <list popups.mediafolderPopupData as m>
+               <option value="${m.key}" <if m.key == data.to_media_folder>selected</if>>${m.value}</option>
+               </list>
+           </select>
+       </td>
+       </tr>
+
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.title")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="255" name="title" value="${data.title}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.description")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="255" name="description" value="${data.description}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.date")}:</B></font></td>
+    <td><input type="text" size="8" maxlength="8" name="date" value="${data.date}">
+               <input type="text" size="20" maxlength="40" name="year" value="${data.year}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.location")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="80" name="place" value="${data.place}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.creator")}:</B></font></td>
+    <td>
+               <input type="text" size="40" maxlength="80" name="creator" value="${data.creator}">
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.keywords")}:</B></font></td>
+    <td><textarea cols="40" rows="2" name="keywords">${data.keywords}</textarea></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.comment")}:</B></font></td>
+    <td><textarea cols="40" rows="2" name="comment">${data.comment}</textarea></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.source")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="80" name="source" value="${data.source}"></td>
+       </tr>
+       <tr>
+    <td colspan="2" align="right"> <font color="black">
+       ${lang("media.is_published")} <input type="checkbox" name="is_published" value="1"<if data.is_published!="0" && data.is_published!=""> checked</if>>
+       <if data.new>
+      <input type="submit" name="save" value="${lang("insert")}">
+    <else>
+    <input type="submit" name="save" value="${lang("save")}">
+    </if> </font></form></font>
+    </td>
+</table>
+<include "admin/foot.template">
+</body>
+</html>
diff --git a/templates-dist/admin/medialist.template b/templates-dist/admin/medialist.template
new file mode 100755 (executable)
index 0000000..c73cf8b
--- /dev/null
@@ -0,0 +1,104 @@
+<html>
+<head>
+       <title>${lang("other_media.htmltitle")}</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+<include "admin/head.template">
+
+<table border="0" cellpadding="2" cellspacing="1">
+  <tr>
+    <td colspan="5"><form method="post" action="${config.actionRoot}">
+       <input type="hidden" name="module" value="OtherMedia">
+       <input type="hidden" name="do" value="list">
+       <input type="hidden" name="cid" value="${data.cid}">
+       <table border="0">
+       <tr bgcolor="Pink">
+               <td>${lang("medialist.search_text_in")}:</td>
+               <td>${lang("media.published")}:</td>
+               <td>${lang("media.mediafolder")}:</td>
+               <td>&nbsp;</td>
+       </tr>
+
+       <tr>
+       <td>
+               <input type="text" size="10" maxlength="20" name="query_text" value="${data.query_text}">
+               <select name="query_field">
+               <option value="title"<if data.query_field=="title"> selected</if>>${lang("media.title")}</option>
+               <option value="creator"<if data.query_field=="creator"> selected</if>>${lang("media.creator")}</option>
+               <option value="place"<if data.query_field=="place"> selected</if>>${lang("media.location")}</option>
+               <option value="keywords"<if data.query_field=="keywords"> selected</if>>${lang("media.keywords")}</option>
+       </select>
+       </td>
+       <td>
+               <select name="query_is_published">
+                   <option value="">${lang("dontcare")}</option>
+               <option value="0" <if data.query_is_published=="0"> selected</if>>${lang("no")}</option>
+                   <option value="1" <if data.query_is_published=="1"> selected</if>>${lang("yes")}</option>
+           </select>
+       </td>
+       <td>
+       <select name="query_media_folder">
+       <list popups.mediafolderPopupData as m>
+       <option value="${m.key}" <if m.key == query_media_folder>selected</if>>${m.value}</option>
+       </list>
+       </select>
+       </td>
+       <td>
+               <input type="submit" name="search" value="${lang("filter")}">
+       </td>
+       </tr>
+       </table>
+       </form>
+       </td>
+  </tr>
+
+  <tr bgcolor="#006600" >
+       <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.icon")}</b></font></td>
+       <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.title")}</b></font></td>
+    <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.mediafolder")}</b></font></td>
+    <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.creator")}</b></font></td>
+  </tr>
+  <if data.contentlist>
+  <list data.contentlist as entry>
+  <tr <if grey=="1"><assign grey="0">bgcolor="#dddddd" <else><assign grey="1"> </if>>
+  <td>
+         <img src="${config.docRoot}/img/${entry.big_icon}" border=0></font></td>
+  <td>${entry.title}&nbsp;
+         <if entry.decription><br>${entry.description}</if></td>
+  <td>${data.mediafolderHashdata[entry.to_media_folder]["name"]}&nbsp;</td>
+  <td>${entry.creator}&nbsp;</td>
+  <td><font size="1">&nbsp;
+       <if data.cid><a href="${config.actionRoot}?module=Content&do=attach&mid=${entry.id}&cid=${data.cid}">${lang("attach")}</a>
+       <else>
+       <a href="${config.actionRoot}?module=OtherMedia&do=delete&id=${entry.id}">${lang("delete")}</a>
+    | <a href="${config.actionRoot}?module=OtherMedia&do=edit&id=${entry.id}">${lang("edit")}</a>
+       </if>
+       </font></td>
+  </tr>
+  </list>
+  <tr>
+    <td colspan="4" bgcolor="#006600"><font color="#ffffff">${data.count} ${lang("records")}
+      / ${lang("show_from_to", data.from, data.to)}</font></td>
+    <td>&nbsp;</td>
+  </tr>
+
+<tr><td>
+<if data.prev>
+       <a href="${config.actionRoot}?module=OtherMedia&do=list&query_text=${data.query_text_encoded}&query_field=${data.query_field}&query_is_published=${data.query_is_published}&query_media_folder=${data.query_media_folder}&offset=${data.prev}&prev=zur&uuml;ck&cid=${data.cid}">zurueck</a>&nbsp;
+</if>
+<if data.next>
+<a href="${config.actionRoot}?module=OtherMedia&do=list&query_text=${data.query_text_encoded}&query_field=${data.query_field}&query_is_published=${data.query_is_published}&query_media_folder=${data.query_media_folder}&offset=${data.next}&next=weiter&cid=${data.cid}">weiter</a>
+</if>
+</td></tr>
+<else>
+  <tr><td align="center">${lang("no_matches_found")}</td></tr>
+</if>
+</table>
+<include "admin/foot.template">
+</body>
+</html>
index 600dc33..7ac10f0 100755 (executable)
                        <img src="${config.docRoot}/img/pointgris.gif" border=0> ${lang("add")}</a>
 
                <p>
+
+        <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#663399">
+                 <b>${lang("start.audio.title")}</b></font>
+
+    <p>
+                       <a href="${config.actionRoot}?module=Audio&do=list">
+      <img src="${config.docRoot}/img/pointgris.gif" border=0> ${lang("edit")}</a><br>
+      <a href="${config.actionRoot}?module=Audio&do=add" >
+                       <img src="${config.docRoot}/img/pointgris.gif" border=0> ${lang("add")}</a>
+
+               <p>
+
+        <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#663399">
+                 <b>${lang("start.video.title")}</b></font>
+
+    <p>
+                       <a href="${config.actionRoot}?module=Video&do=list">
+      <img src="${config.docRoot}/img/pointgris.gif" border=0> ${lang("edit")}</a><br>
+      <a href="${config.actionRoot}?module=Video&do=add" >
+                       <img src="${config.docRoot}/img/pointgris.gif" border=0> ${lang("add")}</a>
+
+               <p>
+
+        <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#663399">
+                 <b>${lang("start.other_media.title")}</b></font>
+
+    <p>
+                       <a href="${config.actionRoot}?module=OtherMedia&do=list">
+      <img src="${config.docRoot}/img/pointgris.gif" border=0> ${lang("edit")}</a><br>
+      <a href="${config.actionRoot}?module=OtherMedia&do=add" >
+                       <img src="${config.docRoot}/img/pointgris.gif" border=0> ${lang("add")}</a>
+
+               <p>
+
                        <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#663399">
                  <b>${lang("start.mediafolder.title")}</b></font>
 
                        <img src="${config.docRoot}/img/pointgris.gif" border=0> ${lang("add")}</a>
 
     <p>
-                       <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#663399">
+<!--
+               <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#663399">
                  <b>${lang("start.languages.title")}</b></font>
 
                <p>
                        <img src="${config.docRoot}/img/pointgris.gif" border=0> ${lang("add")}</a>
 
                <p>
+-->
                        <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#663399">
                  <b>${lang("start.imcs.title")}</b></font>
 
diff --git a/templates-dist/admin/video.template b/templates-dist/admin/video.template
new file mode 100755 (executable)
index 0000000..51177dd
--- /dev/null
@@ -0,0 +1,113 @@
+<html>
+<head>
+<title>
+${lang("video.htmltitle")}
+</title>
+<head>
+<SCRIPT LANGUAGE="JavaScript">
+function openWin(url) {
+   window.open(url,"vc","scrollbars=0,height=${data.img_height},width=${data.img_width}");
+}
+</SCRIPT>
+<body bgcolor="#FFFFFF">
+<include "admin/head.template">
+
+<form enctype="multipart/form-data" method="post" action="${config.actionRoot}?module=Video&do=<if data.new>insert<else>update</if>&id=${data.id}">
+<if data.icon_data=="" || data.icon_data=="0">
+       <INPUT TYPE="file" NAME="mptest">
+</if>
+
+       <input type="hidden" name="where" value="${data.where}">
+       <input type="hidden" name="offset" value="${data.offset}">
+       <input type="hidden" name="order" value="${data.order}">
+       <input type="hidden" name="id" value="${data.id}">
+
+       <table border="0">
+       <tr>
+    <td align="right" bgcolor="#006600">
+               <font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+                       <img src="${config.docRoot}/img/${data.big_icon}" border=0></font></td>
+    <td valign="bottom"><font color="Silver" face="Verdana, Arial, Helvetica, sans-serif" size=1>
+               ${lang("media.created")}: ${data.webdb_create}
+        <if data.webdb_lastchange>/ ${lang("media.changed")} ${data.webdb_lastchange}</if><br>
+               <if data.is_published=="1">${lang("media.published")}: ${data.publish_date} / ${data.publish_server}${data.publish_path}<br></if>
+               ${lang("media.format")}: ${data.mimetype} / ${data.descr}<br>
+               ${lang("media.rights")}: <b>${data.rightsHashdata[to_rights]["name"]}</b><br>
+       </td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.mediafolder")}:</B></font></td>
+    <td>
+               <select name="to_media_folder">
+               <list popups.mediafolderPopupData as m>
+               <option value="${m.key}" <if m.key == data.to_media_folder>selected</if>>${m.value}</option>
+               </list>
+           </select>
+       </td>
+       </tr>
+
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.title")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="255" name="title" value="${data.title}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.description")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="255" name="description" value="${data.description}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.date")}:</B></font></td>
+    <td><input type="text" size="8" maxlength="8" name="date" value="${data.date}">
+               <input type="text" size="20" maxlength="40" name="year" value="${data.year}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.location")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="80" name="place" value="${data.place}"></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.creator")}:</B></font></td>
+    <td>
+               <input type="text" size="40" maxlength="80" name="creator" value="${data.creator}">
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.keywords")}:</B></font></td>
+    <td><textarea cols="40" rows="2" name="keywords">${data.keywords}</textarea></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.comment")}:</B></font></td>
+    <td><textarea cols="40" rows="2" name="comment">${data.comment}</textarea></td>
+       </tr>
+
+       <tr>
+    <td align="right" bgcolor="#006600"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+        <B>${lang("media.source")}:</B></font></td>
+    <td><input type="text" size="40" maxlength="80" name="source" value="${data.source}"></td>
+       </tr>
+       <tr>
+    <td colspan="2" align="right"> <font color="black">
+       ${lang("media.is_published")} <input type="checkbox" name="is_published" value="1"<if data.is_published!="0" && data.is_published!=""> checked</if>>
+       <if data.new>
+      <input type="submit" name="save" value="${lang("insert")}">
+    <else>
+    <input type="submit" name="save" value="${lang("save")}">
+    </if> </font></form></font>
+    </td>
+</table>
+<include "admin/foot.template">
+</body>
+</html>
diff --git a/templates-dist/admin/videolist.template b/templates-dist/admin/videolist.template
new file mode 100755 (executable)
index 0000000..526d6cd
--- /dev/null
@@ -0,0 +1,104 @@
+<html>
+<head>
+       <title>${lang("video.htmltitle")}</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+<include "admin/head.template">
+
+<table border="0" cellpadding="2" cellspacing="1">
+  <tr>
+    <td colspan="5"><form method="post" action="${config.actionRoot}">
+       <input type="hidden" name="module" value="Video">
+       <input type="hidden" name="do" value="list">
+       <input type="hidden" name="cid" value="${data.cid}">
+       <table border="0">
+       <tr bgcolor="Pink">
+               <td>${lang("medialist.search_text_in")}:</td>
+               <td>${lang("media.published")}:</td>
+               <td>${lang("media.mediafolder")}:</td>
+               <td>&nbsp;</td>
+       </tr>
+
+       <tr>
+       <td>
+               <input type="text" size="10" maxlength="20" name="query_text" value="${data.query_text}">
+               <select name="query_field">
+               <option value="title"<if data.query_field=="title"> selected</if>>${lang("media.title")}</option>
+               <option value="creator"<if data.query_field=="creator"> selected</if>>${lang("media.creator")}</option>
+               <option value="place"<if data.query_field=="place"> selected</if>>${lang("media.location")}</option>
+               <option value="keywords"<if data.query_field=="keywords"> selected</if>>${lang("media.keywords")}</option>
+       </select>
+       </td>
+       <td>
+               <select name="query_is_published">
+                   <option value="">${lang("dontcare")}</option>
+               <option value="0" <if data.query_is_published=="0"> selected</if>>${lang("no")}</option>
+                   <option value="1" <if data.query_is_published=="1"> selected</if>>${lang("yes")}</option>
+           </select>
+       </td>
+       <td>
+       <select name="query_media_folder">
+       <list popups.mediafolderPopupData as m>
+       <option value="${m.key}" <if m.key == query_media_folder>selected</if>>${m.value}</option>
+       </list>
+       </select>
+       </td>
+       <td>
+               <input type="submit" name="search" value="${lang("filter")}">
+       </td>
+       </tr>
+       </table>
+       </form>
+       </td>
+  </tr>
+
+  <tr bgcolor="#006600" >
+       <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.icon")}</b></font></td>
+       <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.title")}</b></font></td>
+    <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.mediafolder")}</b></font></td>
+    <td><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="-1">
+       <b>${lang("media.creator")}</b></font></td>
+  </tr>
+  <if data.contentlist>
+  <list data.contentlist as entry>
+  <tr <if grey=="1"><assign grey="0">bgcolor="#dddddd" <else><assign grey="1"> </if>>
+  <td>
+         <img src="${config.docRoot}/img/${entry.big_icon}" border=0></font></td>
+  <td>${entry.title}&nbsp;
+         <if entry.decription><br>${entry.description}</if></td>
+  <td>${data.mediafolderHashdata[entry.to_media_folder]["name"]}&nbsp;</td>
+  <td>${entry.creator}&nbsp;</td>
+  <td><font size="1">&nbsp;
+       <if data.cid><a href="${config.actionRoot}?module=Content&do=attach&mid=${entry.id}&cid=${data.cid}">${lang("attach")}</a>
+       <else>
+       <a href="${config.actionRoot}?module=Video&do=delete&id=${entry.id}">${lang("delete")}</a>
+    | <a href="${config.actionRoot}?module=Video&do=edit&id=${entry.id}">${lang("edit")}</a>
+       </if>
+       </font></td>
+  </tr>
+  </list>
+  <tr>
+    <td colspan="4" bgcolor="#006600"><font color="#ffffff">${data.count} ${lang("records")}
+      / ${lang("show_from_to", data.from, data.to)}</font></td>
+    <td>&nbsp;</td>
+  </tr>
+
+<tr><td>
+<if data.prev>
+       <a href="${config.actionRoot}?module=Video&do=list&query_text=${data.query_text_encoded}&query_field=${data.query_field}&query_is_published=${data.query_is_published}&query_media_folder=${data.query_media_folder}&offset=${data.prev}&prev=zur&uuml;ck&cid=${data.cid}">zurueck</a>&nbsp;
+</if>
+<if data.next>
+<a href="${config.actionRoot}?module=Video&do=list&query_text=${data.query_text_encoded}&query_field=${data.query_field}&query_is_published=${data.query_is_published}&query_media_folder=${data.query_media_folder}&offset=${data.next}&next=weiter&cid=${data.cid}">weiter</a>
+</if>
+</td></tr>
+<else>
+  <tr><td align="center">${lang("no_matches_found")}</td></tr>
+</if>
+</table>
+<include "admin/foot.template">
+</body>
+</html>