rebuilding head
authoridfx <idfx>
Sat, 6 Nov 2004 18:46:24 +0000 (18:46 +0000)
committeridfx <idfx>
Sat, 6 Nov 2004 18:46:24 +0000 (18:46 +0000)
45 files changed:
source/tool/BundleTool.java
source/tool/ConfigTool.java
source/tool/ImageTool.java [new file with mode: 0755]
templates/admin/EDITFUNCTIONS.template
templates/admin/EDITFUNCTIONS.tmpl [deleted file]
templates/admin/FUNCTIONS.template
templates/admin/FUNCTIONS.tmpl [deleted file]
templates/admin/FUNCTIONS_media.template
templates/admin/LISTFUNCTIONS.template
templates/admin/abuse.filter.template
templates/admin/abuse.filters.template
templates/admin/abuse.log.template
templates/admin/audio.template
templates/admin/comment.template
templates/admin/commentlist.template
templates/admin/confirm.template
templates/admin/confirm.tmpl [deleted file]
templates/admin/content.template
templates/admin/content.tmpl [deleted file]
templates/admin/contentlist.template
templates/admin/contentlist.tmpl [deleted file]
templates/admin/fileedit.template
templates/admin/foot.tmpl [deleted file]
templates/admin/head.template
templates/admin/head.tmpl [deleted file]
templates/admin/image.template
templates/admin/index.tmpl [deleted file]
templates/admin/login.template
templates/admin/logon.tmpl [deleted file]
templates/admin/mediafolderlist.template
templates/admin/mediatype.template [new file with mode: 0755]
templates/admin/mediatypelist.template [new file with mode: 0755]
templates/admin/message.tmpl [deleted file]
templates/admin/other.template
templates/admin/producerqueue.template
templates/admin/start_admin.template
templates/admin/superusermenu.template
templates/admin/superusermenu.tmpl [deleted file]
templates/admin/topic.tmpl [deleted file]
templates/admin/topiclist.tmpl [deleted file]
templates/admin/uploadedmedia.template
templates/admin/user.template
templates/admin/usererror.template
templates/admin/userlist.template
templates/admin/video.template

index e44345b..0b007d4 100755 (executable)
  * 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 tool;
 
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
+import java.util.Arrays;
 import java.util.Iterator;
+import java.util.List;
 
 import mir.util.ExceptionFunctions;
 import mir.util.PropertiesManipulator;
@@ -47,7 +51,9 @@ public class BundleTool {
     PropertiesManipulator result;
 
     try {
-      master = PropertiesManipulator.readProperties(new FileInputStream(new File(aMaster)));
+      master = PropertiesManipulator.readProperties(
+        new BufferedInputStream(
+          new FileInputStream(new File(aMaster)),8192));
     }
     catch (Throwable t) {
       System.out.println("Unable to read master properties: " + t.getMessage());
@@ -55,7 +61,9 @@ public class BundleTool {
     }
 
     try {
-      slave = PropertiesManipulator.readProperties(new FileInputStream(new File(aSlave)));
+      slave = PropertiesManipulator.readProperties(
+        new BufferedInputStream(
+          new FileInputStream(new File(aSlave)),8192));
     }
     catch (FileNotFoundException t) {
       slave = new PropertiesManipulator();
@@ -114,7 +122,9 @@ public class BundleTool {
     PropertiesManipulator result;
 
     try {
-      master = PropertiesManipulator.readProperties(new FileInputStream(new File(aMaster)));
+      master = PropertiesManipulator.readProperties(
+        new BufferedInputStream(
+          new FileInputStream(new File(aMaster)),8192));
     }
     catch (Throwable t) {
       System.out.println("Unable to read master properties: " + t.getMessage());
@@ -122,7 +132,9 @@ public class BundleTool {
     }
 
     try {
-      slave = PropertiesManipulator.readProperties(new FileInputStream(new File(aSlave)));
+      slave = PropertiesManipulator.readProperties(
+        new BufferedInputStream(
+          new FileInputStream(new File(aSlave)),8192));
     }
     catch (FileNotFoundException t) {
       slave = new PropertiesManipulator();
@@ -176,7 +188,8 @@ public class BundleTool {
     }
 
     try {
-      PropertiesManipulator.writeProperties(result, new FileOutputStream(new File(aSlave)));
+      PropertiesManipulator.writeProperties(result, 
+        new BufferedOutputStream(new FileOutputStream(new File(aSlave)),8192));
     }
     catch (Throwable t) {
       System.out.println("Unable to write slave properties: " + t.getMessage());
@@ -188,9 +201,12 @@ public class BundleTool {
     PropertiesManipulator bundle;
 
     try {
-      bundle = PropertiesManipulator.readProperties(new FileInputStream(new File(aBundle)));
+      bundle = PropertiesManipulator.readProperties(
+        new BufferedInputStream(
+          new FileInputStream(new File(aBundle)),8192));
 
-      PropertiesManipulator.writeProperties(bundle, new FileOutputStream(anOutputFile), anEncoding, false);
+      PropertiesManipulator.writeProperties(bundle, 
+        new BufferedOutputStream(new FileOutputStream(anOutputFile),8192), anEncoding, false);
     }
     catch (Throwable t) {
       System.out.println("Unable to read master properties: " + t.getMessage());
@@ -202,7 +218,9 @@ public class BundleTool {
     PropertiesManipulator bundle;
 
     try {
-      bundle = PropertiesManipulator.readProperties(new FileInputStream(new File(aSourceFile)), anEncoding);
+      bundle = PropertiesManipulator.readProperties(
+        new BufferedInputStream(
+          new FileInputStream(new File(aSourceFile)),8192), anEncoding);
     }
     catch (Throwable t) {
       Throwable s = ExceptionFunctions.traceCauseException(t);
@@ -211,7 +229,8 @@ public class BundleTool {
       return;
     }
     try {
-      PropertiesManipulator.writeProperties(bundle, new FileOutputStream(aBundle));
+      PropertiesManipulator.writeProperties(bundle, 
+        new BufferedOutputStream(new FileOutputStream(aBundle),8192));
     }
     catch (Throwable t) {
       System.out.println("Unable to write bundle: " + t.toString());
@@ -219,6 +238,23 @@ public class BundleTool {
     }
   }
 
+  public static void rename(String anOldKeyName, String aNewKeyName, List aBundles) {
+    /*
+    PropertiesManipulator bundle;
+
+    try {
+      bundle = PropertiesManipulator.readProperties(new FileInputStream(new File(aBundle)));
+
+      PropertiesManipulator.writeProperties(bundle, new FileOutputStream(anOutputFile), anEncoding, false);
+    }
+    catch (Throwable t) {
+      System.out.println("Unable to read master properties: " + t.getMessage());
+      return;
+    }
+*/
+  }
+
+
   public static void main(String[] anArguments) {
     String command = "help";
 
@@ -253,9 +289,19 @@ public class BundleTool {
           return;
         }
       }
-    }
+      else if (command.equals("rename")) {
+        if (anArguments.length>=3) {
+          List arguments = Arrays.asList(anArguments);
 
+          rename(anArguments[0], anArguments[1], arguments.subList(2, arguments.size()));
 
+/*
+          decode(anArguments[1], anArguments[2], anArguments[3]);
+*/
+          return;
+        }
+      }
+    }
 
     System.out.println("Usage:");
 
@@ -274,6 +320,9 @@ public class BundleTool {
     System.out.println("  BundleTool decode <bundle> <encoding> <sourcefile>");
     System.out.println("");
     System.out.println("      Decodes the keys/values with a custom encoding.");
+    System.out.println("  BundleTool rename <old key> <new key> <bundle> [<bundle> [ ... ]]");
+    System.out.println("");
+    System.out.println("      Decodes the keys/values with a custom encoding.");
   }
 
 }
\ No newline at end of file
index c6e1619..d7e8993 100755 (executable)
-package tool;\r
-\r
-import java.security.MessageDigest;\r
-import java.util.TimeZone;\r
-\r
-import gnu.regexp.RE;\r
-import mir.util.StringRoutines;\r
-\r
-/**\r
- * <p>Title: </p>\r
- * <p>Description: </p>\r
- * <p>Copyright: Copyright (c) 2003</p>\r
- * <p>Company: </p>\r
- * @author not attributable\r
- * @version 1.0\r
- */\r
-\r
-public class ConfigTool {\r
-  public ConfigTool() {\r
-  }\r
-\r
-  public static void timezone(String aSpecification) {\r
-    try {\r
-      RE specification = new RE(aSpecification);\r
-      String[] timeZoneIds = TimeZone.getAvailableIDs();\r
-\r
-      System.out.println("ID\tOffset\tDST?\tName");\r
-      for (int i=0; i<timeZoneIds.length; i++) {\r
-        if (specification.isMatch(timeZoneIds[i])) {\r
-          TimeZone timeZone = TimeZone.getTimeZone(timeZoneIds[i]);\r
-          long offset = timeZone.getRawOffset()/(1000*60);\r
-          String sign = "";\r
-          if (offset<0) {\r
-            offset=-offset;\r
-            sign = "-";\r
-          }\r
-\r
-          System.out.println(timeZone.getID() + "\t" + sign + offset/60 + ":" + StringRoutines.padStringLeft(Long.toString(offset%60),2,'0')+"\t"+(timeZone.useDaylightTime()?"yes":"no")+"\t"+ timeZone.getDisplayName());\r
-        }\r
-      }\r
-    }\r
-    catch (Throwable t) {\r
-      System.err.println(t.toString());\r
-    }\r
-  }\r
-\r
-  public static void digest(String aDigest, String aData) {\r
-    try {\r
-      MessageDigest messageDigest = MessageDigest.getInstance(aDigest);\r
-\r
-      System.out.println(StringRoutines.convertToHex(messageDigest.digest(aData.getBytes("UTF-8"))));\r
-    }\r
-    catch (Throwable t) {\r
-      System.err.println(t.toString());\r
-    }\r
-  }\r
-\r
-  public static void main(String[] anArguments) {\r
-    String command = "help";\r
-\r
-    if (anArguments.length >= 1) {\r
-      command = anArguments[0];\r
-\r
-      if (command.equals("timezone")) {\r
-        if (anArguments.length<=2) {\r
-          if (anArguments.length==2)\r
-            timezone(anArguments[1]);\r
-          else\r
-            timezone(".*");\r
-        }\r
-\r
-        return;\r
-      }\r
-      else if (command.equals("digest")) {\r
-        if (anArguments.length == 3) {\r
-          digest(anArguments[1], anArguments[2]);\r
-\r
-          return;\r
-        }\r
-      }\r
-    }\r
-\r
-\r
-\r
-    System.out.println("Usage:");\r
-\r
-    System.out.println("  ConfigTool timezone [regexp]");\r
-    System.out.println("");\r
-    System.out.println("      Shows the available timezones");\r
-    System.out.println("");\r
-    System.out.println("  BundleTool digest <digestname> <string>");\r
-    System.out.println("");\r
-    System.out.println("      Calculates the digest of a string.");\r
-    System.out.println("");\r
-  }\r
+/*
+ * 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 tool;
+
+import gnu.regexp.RE;
+
+import java.security.MessageDigest;
+import java.util.TimeZone;
+
+import mir.util.StringRoutines;
+
+/**
+ * <p>Title: </p>
+ * <p>Description: </p>
+ * <p>Copyright: Copyright (c) 2003</p>
+ * <p>Company: </p>
+ * @author not attributable
+ * @version 1.0
+ */
+
+public class ConfigTool {
+  public ConfigTool() {
+  }
+
+  public static void timezone(String aSpecification) {
+    try {
+      RE specification = new RE(aSpecification);
+      String[] timeZoneIds = TimeZone.getAvailableIDs();
+
+      System.out.println("ID\tOffset\tDST?\tName");
+      for (int i=0; i<timeZoneIds.length; i++) {
+        if (specification.isMatch(timeZoneIds[i])) {
+          TimeZone timeZone = TimeZone.getTimeZone(timeZoneIds[i]);
+          long offset = timeZone.getRawOffset()/(1000*60);
+          String sign = "";
+          if (offset<0) {
+            offset=-offset;
+            sign = "-";
+          }
+
+          System.out.println(timeZone.getID() + "\t" + sign + offset/60 + ":" + StringRoutines.padStringLeft(Long.toString(offset%60),2,'0')+"\t"+(timeZone.useDaylightTime()?"yes":"no")+"\t"+ timeZone.getDisplayName());
+        }
+      }
+    }
+    catch (Throwable t) {
+      System.err.println(t.toString());
+    }
+  }
+
+  public static void digest(String aDigest, String aData) {
+    try {
+      MessageDigest messageDigest = MessageDigest.getInstance(aDigest);
+
+      System.out.println(StringRoutines.convertToHex(messageDigest.digest(aData.getBytes("UTF-8"))));
+    }
+    catch (Throwable t) {
+      System.err.println(t.toString());
+    }
+  }
+
+  public static void main(String[] anArguments) {
+    String command = "help";
+
+    if (anArguments.length >= 1) {
+      command = anArguments[0];
+
+      if (command.equals("timezone")) {
+        if (anArguments.length<=2) {
+          if (anArguments.length==2)
+            timezone(anArguments[1]);
+          else
+            timezone(".*");
+        }
+
+        return;
+      }
+      else if (command.equals("digest")) {
+        if (anArguments.length == 3) {
+          digest(anArguments[1], anArguments[2]);
+
+          return;
+        }
+      }
+    }
+
+
+
+    System.out.println("Usage:");
+
+    System.out.println("  ConfigTool timezone [regexp]");
+    System.out.println("");
+    System.out.println("      Shows the available timezones");
+    System.out.println("");
+    System.out.println("  BundleTool digest <digestname> <string>");
+    System.out.println("");
+    System.out.println("      Calculates the digest of a string.");
+    System.out.println("");
+  }
 }
\ No newline at end of file
diff --git a/source/tool/ImageTool.java b/source/tool/ImageTool.java
new file mode 100755 (executable)
index 0000000..ff68b2c
--- /dev/null
@@ -0,0 +1,119 @@
+package tool;
+
+import java.awt.Transparency;
+import java.awt.image.ColorModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import javax.media.jai.JAI;
+import javax.media.jai.PlanarImage;
+
+
+/**
+ * This class displays basic information about the image.
+ */
+public class ImageTool {
+  /**
+   * The application entry point.
+   * @param args the command line arguments.
+   */
+  public static void main(String[] args) throws FileNotFoundException {
+    // We need one argument: the image filename.
+    if (args.length != 1) {
+      System.err.println("Usage: java tool.ImageTool image");
+      System.exit(0);
+    }
+    FileInputStream fi = new FileInputStream(args[0]);
+    // Open the image (using the name passed as a command line parameter)
+    PlanarImage pi = JAI.create("ImageRead", fi);
+
+    // Display image data. First, the image size (non-JAI related).
+    File image = new File(args[0]);
+    System.out.println("Image file size:" + image.length() + " bytes.");
+
+    // Now let's display the image dimensions and coordinates.
+    System.out.print("Dimensions: ");
+    System.out.print(pi.getWidth() + "x" + pi.getHeight() + " pixels");
+    System.out.println(" (from " + pi.getMinX() + "," + pi.getMinY() + " to " +
+                       pi.getMaxX() + "," + pi.getMaxY() + ")");
+
+    // Tiles number, dimensions and coordinates.
+    System.out.print("Tiles:");
+    System.out.print(pi.getTileWidth() + "x" + pi.getTileHeight() + " pixels" +
+                     " (" + pi.getNumXTiles() + "x" + pi.getNumYTiles() +
+                     " tiles)");
+    System.out.print(" (from " + pi.getMinTileX() + "," + pi.getMinTileY() +
+                     " to " + pi.getMaxTileX() + "," + pi.getMaxTileY() + ")");
+    System.out.println(" offset: " + pi.getTileGridXOffset() + "," +
+                       pi.getTileGridXOffset());
+
+    // Display info about the SampleModel of the image.
+    SampleModel sm = pi.getSampleModel();
+    System.out.println("Number of bands: " + sm.getNumBands());
+    System.out.print("Data type: ");
+
+    switch (sm.getDataType()) {
+    case DataBuffer.TYPE_BYTE:
+      System.out.println("byte");
+
+      break;
+
+    case DataBuffer.TYPE_SHORT:
+      System.out.println("short");
+
+      break;
+
+    case DataBuffer.TYPE_USHORT:
+      System.out.println("unsigned short");
+
+      break;
+
+    case DataBuffer.TYPE_INT:
+      System.out.println("int");
+
+      break;
+
+    case DataBuffer.TYPE_FLOAT:
+      System.out.println("float");
+
+      break;
+
+    case DataBuffer.TYPE_DOUBLE:
+      System.out.println("double");
+
+      break;
+
+    case DataBuffer.TYPE_UNDEFINED:
+      System.out.println("undefined");
+
+      break;
+    }
+
+    // Display info about the ColorModel of the image.
+    ColorModel cm = pi.getColorModel();
+    System.out.println("Number of color components: " + cm.getNumComponents());
+    System.out.println("Bits per pixel: " + cm.getPixelSize());
+    System.out.print("Transparency: ");
+
+    switch (cm.getTransparency()) {
+    case Transparency.OPAQUE:
+      System.out.println("opaque");
+
+      break;
+
+    case Transparency.BITMASK:
+      System.out.println("bitmask");
+
+      break;
+
+    case Transparency.TRANSLUCENT:
+      System.out.println("translucent");
+
+      break;
+    }
+  }
+}
index d9830b9..5a374a9 100755 (executable)
@@ -36,7 +36,7 @@
 <function EditSubmitButtonNormal(aLabel, aFieldName)>\r
   <tr>
     <td class="${TABLE_FOOT_CLASS}" colspan="2" align="right"> 
-      <input type="submit" name="${aFieldName}" value="${aLabel}">
+      <input class="majorbutton" type="submit" name="${aFieldName}" value="${aLabel}">
     </td>
   </tr>
 </function>  
       <input type="checkbox" name="${fieldname}" value="1"<if fieldcontent=="1"> checked</if>>&nbsp;&nbsp;
   <call EditFieldEnd()>
 </function> \r
+
+<function ReadOnlyCheckbox(label, fieldcontent, aLabelClass, aValueClass)>
+  <call EditFieldStart(label, "", aLabelClass, aValueClass)>
+      <if fieldcontent=="1">${lang("yes")}<else>${lang("no")}</if>&nbsp;&nbsp;
+  <call EditFieldEnd()>
+</function> \r
 \r
+<function ReadOnlyCheckboxNormal(label, fieldcontent)>\r
+  <call ReadOnlyCheckbox(label, fieldcontent, "table-left", "listrow2")>\r
+</function>
 <function EditCheckboxNormal(label, fieldname, fieldcontent)>\r
   <call EditCheckbox(label, fieldname, fieldcontent, "table-left", "listrow2")>\r
 </function>
diff --git a/templates/admin/EDITFUNCTIONS.tmpl b/templates/admin/EDITFUNCTIONS.tmpl
deleted file mode 100755 (executable)
index 5fb9631..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-<include "SETTINGS.template">
-
-<function EditStart(aAction, aHiddenFields, aHiddenValues)>
-    <form action="${config.docRoot}/admin/${aAction}" method="post">
-        <assign index="0">
-        <list aHiddenFields as i>
-          <input type="hidden" name="${i}" value="${aHiddenValues[index]}">
-          <assign index=utility.increment(index)>
-        </list>
-      <table border="0">
-</function>
-
-<function EditEnd()>
-      </table>
-    </form>
-</function>
-
-<function EditFieldStart(aLabel, aHint, aLabelClass, aValueClass)>
-  <tr>
-    <td align="right" class="${aLabelClass}">
-      <b>${aLabel}:</b>
-      <if aHint>
-        <br>
-        <span class="small">${aHint}</span>      
-      </if>
-    </td>
-    
-    <td class="${aValueClass}">
-</function>
-
-<function EditFieldEnd()>
-    </td>
-  </tr>
-</function>  
-
-<function EditSubmitButtonNormal(aLabel, aFieldName)>
-  <tr>
-    <td class="${TABLE_FOOT_CLASS}" colspan="2" align="right"> 
-      <input type="submit" name="${aFieldName}" value="${aLabel}">
-    </td>
-  </tr>
-</function>  
-
-
-<function EditReadonlyTextNormal(label, fieldcontent)>
-  <call EditFieldStart(label, "", "table-left", "listrow2")>
-      ${utility.encodeHTML(fieldcontent)}
-  <call EditFieldEnd()>
-</function>
-
-
-<function EditText(label, size, maxlength, fieldname, fieldcontent, aLabelClass, aValueClass)>
-  <call EditFieldStart(label, "", aLabelClass, aValueClass)>
-      <input type="text" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
-  <call EditFieldEnd()>
-</function>
-<function EditTextNormal(label, size, maxlength, fieldname, fieldcontent)>
-  <call EditText(label, size, maxlength, fieldname, fieldcontent, "table-left", "listrow2")>
-</function>
-<function EditTextHighlighted(label, size, maxlength, fieldname, fieldcontent)>
-  <call EditText(label, size, maxlength, fieldname, fieldcontent, "table-left-light", "listrow1")>
-</function>
-
-
-<function EditPassword(label, size, maxlength, fieldname, fieldcontent, aLabelClass, aValueClass)>
-  <call EditFieldStart(label, "", aLabelClass, aValueClass)>
-      <input type="password" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
-  <call EditFieldEnd()>
-</function>
-
-<function EditPasswordNormal(label, size, maxlength, fieldname, fieldcontent)>
-  <call EditPassword(label, size, maxlength, fieldname, fieldcontent, "table-left", "listrow2")>
-</function>
-<function EditPasswordHighlighted(label, size, maxlength, fieldname, fieldcontent)>
-  <call EditPassword(label, size, maxlength, fieldname, fieldcontent, "table-left-light", "listrow1")>
-</function>
-
-
-<function EditCheckbox(label, fieldname, fieldcontent, aLabelClass, aValueClass)>
-  <call EditFieldStart(label, "", aLabelClass, aValueClass)>
-      <input type="checkbox" name="${fieldname}" value="1"<if fieldcontent=="1"> checked</if>>&nbsp;&nbsp;
-  <call EditFieldEnd()>
-</function> 
-
-<function EditCheckboxNormal(label, fieldname, fieldcontent)>
-  <call EditCheckbox(label, fieldname, fieldcontent, "table-left", "listrow2")>
-</function>
-<function EditCheckboxHighlighted(label, fieldname, fieldcontent)>
-  <call EditCheckbox(label, fieldname, fieldcontent, "table-left-light", "listrow1")>
-</function>
-
-
-<function EditTextArea(label, aHint, cols, rows, fieldname, fieldcontent, aLabelClass, aValueClass)>
-  <call EditFieldStart(label, aHint, aLabelClass, aValueClass)>
-      <textarea cols="${cols}" rows="${rows}" name="${fieldname}" wrap="virtual">${utility.encodeHTML(fieldcontent)}</textarea>
-  <call EditFieldEnd()>
-</function>
-
-<function EditTextAreaNormal(label, aHint, cols, rows, fieldname, fieldcontent)>
-  <call EditTextArea(label, aHint, cols, rows, fieldname, fieldcontent, "table-left", "listrow2")>
-</function>
-<function EditTextAreaHighlighted(label, size, maxlength, fieldname, fieldcontent)>
-  <call EditTextArea(label, aHint, cols, rows, fieldname, fieldcontent, "table-left-light", "listrow1")>
-</function>
-
-
-
-
-<function EditPullDown (label, fieldname, entrieslist, keyfield, valuefield, value, langprefix, aLabelClass, aValueClass)>
-  <call EditFieldStart(label, "", aLabelClass, aValueClass)>
-       <select name="${fieldname}">
-         <list entrieslist as a>
-           <option value="${a[keyfield]}" <if (a[keyfield] == value)>selected</if>><if langprefix>${lang(langprefix+a[valuefield])}<else>${a[valuefield]}</if></option>
-         </list>
-       </select>
-  <call EditFieldEnd()>
-</function>   
-
-<function EditPullDownNormal(label, fieldname, entrieslist, keyfield, valuefield, value, langprefix)>
-  <call EditPullDown(label, fieldname, entrieslist, keyfield, valuefield, value, langprefix, "table-left", "listrow2")>
-</function>
-<function EditPullDownHighlighted(label, fieldname, entrieslist, keyfield, valuefield, value, langprefix)>
-  <call EditPullDown(label, fieldname, entrieslist, keyfield, valuefield, value, langprefix, "table-left-light", "listrow1")>
-</function>
-
-
index 2b1eeed..6c08aa3 100755 (executable)
@@ -8,6 +8,15 @@
 <function showButton(anUrl, aLabel)>
   <call showAbsoluteLinkButton(config.actionRoot+"?"+anUrl, aLabel)>
 </function>
+<function showGETButton(anUrl, aLabel)>
+  <call showAbsoluteLinkButton(config.actionRoot+"?"+anUrl, aLabel)>
+</function>
+<function showPOSTButton(anUrl, aLabel)>
+  <call showGETButton(anUrl, aLabel)>
+<comment>
+  <form method="POST" action="${utility.encodeHTML(config.actionRoot+"?"+anUrl)}"><input type="submit" class="majorbutton" value="${aLabel}"></form>
+</comment>  
+</function>
 
 
 <assign TABLE_HEAD_CLASS          "table-head">
         
         <list aDataKeys as i>   
             <td>
-              ${entry[i]}
+              ${utility.prettyEncodeHTML(entry[i])}
             </td>
         </list>
         <if aShowDelete == "1" || aShowEdit == "1" >
           <td>
             <if aShowDelete>
-            <a class="listcommand" href="${config.actionRoot}?module=${aModuleName}&do=delete&id=${entry.id}">${lang("delete")}</a>
+            <a class="listcommand" href="${config.actionRoot}?module=${aModuleName}&amp;do=delete&amp;id=${entry.id}&amp;okurl=${utility.encodeURI(thisurl)}&amp;cancelurl=${utility.encodeURI(thisurl)}">${lang("delete")}</a>
             </if>
             <if aShowDelete == "1" && aShowEdit == "1">
             | 
 
 
 <comment>extra navigation</comment>
-<function AddOrBack(module_name, module_jumpback, do_jumpback)>
+<function showAddOrBack(anAllowAdd, anAddModule, aBackModule, aBackMethod)>
     <p>
-      <a class="link-box" href="${config.actionRoot}?module=${module_name}&do=add">[+] ${lang("add")}</a> &nbsp;
-      <a class="link-box" href="${config.actionRoot}?module=${module_jumpback}&do=${do_jumpback}">[&lt;] ${lang("back")} </a> &nbsp;
-      <a class="link-box" href="${config.actionRoot}">[&lt;&lt;&lt;] ${lang("head.start")}</a>
+      <if anAllowAdd == "1">
+        <a class="link-box" href="${config.actionRoot}?module=${anAddModule}&do=add">[+] ${lang("add")}</a> &nbsp;
+      </if>
+      <a class="link-box" href="${config.actionRoot}?module=${aBackModule}&do=${aBackMethod}">[&lt;] ${lang("back")} </a> &nbsp;
+<comment>      <a class="link-box" href="${config.actionRoot}">[&lt;&lt;&lt;] ${lang("head.start")}</a></comment>
   </p>
 </function>
 
-<function showAddOrBack(anAllowAdd, anAddModule, aBackModule, aBackMethod, )>
+<function showAddOrBack2(anAllowAdd, anAddModule, aBackUrl)>
     <p>
       <if anAllowAdd == "1">
         <a class="link-box" href="${config.actionRoot}?module=${anAddModule}&do=add">[+] ${lang("add")}</a> &nbsp;
       </if>
-      <a class="link-box" href="${config.actionRoot}?module=${aBackModule}&do=${aBackMethod}">[&lt;] ${lang("back")} </a> &nbsp;
-<comment>      <a class="link-box" href="${config.actionRoot}">[&lt;&lt;&lt;] ${lang("head.start")}</a></comment>
+      <a class="link-box" href="${config.actionRoot}?${aBackUrl}">[&lt;] ${lang("back")} </a> &nbsp;
   </p>
 </function>
 
   <p><a class="link-box" href="${config.actionRoot}?${aBackUrl}">[&lt;] ${lang("back")} </a> &nbsp;</p>
 </function>
 
+<function _PulldownTableRow (label, fieldname, entrieslist, keyfield, valuefield, value, langprefix, aCanEdit)>
+  <if aCanEdit=="1">
+    <call PulldownTableRow (label, fieldname, entrieslist, keyfield, valuefield, value, langprefix)>
+  <else>
+    <call ReadOnlyPulldownTableRow (label, entrieslist, keyfield, valuefield, value, langprefix)>
+  </if>
+</function>
+
+<function ReadOnlyPulldownTableRow (label, entrieslist, keyfield, valuefield, value, langprefix)>
+  <tr>
+     <td align="right" class="table-left">
+       <b>${label}:</b>
+     </td>
+     <td class="listrow2">
+       <list entrieslist as a>
+          <if (a[keyfield] == value)><if langprefix>${lang(langprefix+a[valuefield])}<else>${a[valuefield]}</if></if>
+        </list>
+     </td>
+   </tr>
+</function>   
+
 <function PulldownTableRow (label, fieldname, entrieslist, keyfield, valuefield, value, langprefix)>
   <tr>
      <td align="right" class="table-left">
    </tr>
 </function>   
 
+<function ReadonlyTextTableRowNormal (label, fieldcontent)>
+  <call ReadonlyTextTableRow(label, fieldcontent, "listrow2")>
+</function>  
 
 
+<function _TextInputTableRow(label, size, maxlength, fieldname, fieldcontent, aCanEdit)>
+  <if aCanEdit=="1">
+    <call TextInputTableRow(label, size, maxlength, fieldname, fieldcontent)>
+  <else>
+    <call ReadonlyTextTableRow(label, fieldcontent, "listrow2")>
+  </if>
+</function>
 
-
-
-
-
+<function _TextInputTableRowLight(label, size, maxlength, fieldname, fieldcontent, aCanEdit)>
+  <if aCanEdit=="1">
+    <call TextInputTableRowLight(label, size, maxlength, fieldname, fieldcontent)>
+  <else>
+    <call ReadonlyTextTableRow(label, fieldcontent, "listrow1")>
+  </if>
+</function>
 
 <function TextInputTableRow (label, size, maxlength, fieldname, fieldcontent)>
   <tr>
   </tr>
 </function>
 
-<function ReadonlyTextTableRow (label, fieldcontent)>
+<function ReadonlyTextTableRow (label, fieldcontent, class)>
   <tr>
     <td align="right" class="table-left">
       <b>${label}:</b>
     </td>
     
-    <td class="listrow2">
+    <td class="${class}">
       ${utility.encodeHTML(fieldcontent)}
     </td>
   </tr>
 
 <function CheckboxTableRow (label, fieldname, fieldcontent )>
   <call EditCheckboxNormal(label, fieldname, fieldcontent)>
-<comment>
+</function> 
+
+<function _CheckboxTableRow (label, fieldname, fieldcontent, aCanEdit)>
+  <if aCanEdit=="1">
+    <call EditCheckboxNormal(label, fieldname, fieldcontent)>
+  <else>
+    <call ReadOnlyCheckboxNormal(label, fieldcontent)>
+  </if>
+</function> 
+
+<function _TextAreaTableRow (label, hint, cols, rows, fieldname, fieldcontent, aCanEdit)>
+  <if aCanEdit=="1">
+    <call TextAreaTableRow (label, hint, cols, rows, fieldname, fieldcontent)>
+  <else>
+    <call ReadOnlyTextAreaTableRow (label, hint, fieldcontent)>
+  </if>
+</function>
+<function ReadOnlyTextAreaTableRow (label, hint, fieldcontent )>
   <tr>
     <td align="right" valign="top" class="table-left">
       <b>${label}:</b>
+      <if hint>
+        <br>
+        <span class="small">${hint}</span>      
+      </if>
     </td>
     
     <td class="listrow2">
-      <input type="checkbox" name="${fieldname}" value="1"<if fieldcontent=="1"> checked</if>>&nbsp;&nbsp;
+      ${utility.prettyEncodeHTML(fieldcontent)}
     </td>
   </tr>
-</comment>  
-</function> 
-
+</function>
 <function TextAreaTableRow (label, hint, cols, rows, fieldname, fieldcontent )>
   <tr>
     <td align="right" valign="top" class="table-left">
 </function>
 
 <comment>complete search-form for contenentries, not sure if it works from everywhere</comment>
-<function ContentSearch (layout)>
+<function ContentSearch (aLayout)>
 
-      <form method="POST" action="${config.actionRoot}">
+      <form method="GET" action="${config.actionRoot}">
         <input type="hidden" name="module" value="Content">
         <input type="hidden" name="do" value="search">
-        <input type="hidden" name="selectarticleurl" value="${utility.encodeHTML(selectarticleurl)}">
+        <if selectarticleurl>
+          <input type="hidden" name="selectarticleurl" value="${utility.encodeHTML(selectarticleurl)}">
+        </if>
          
         <table border="0" cellpadding="2" cellspacing="3">
-          <tr <if !layout>class="bg-neutral"</if>>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.value")}</td>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.field")}</td>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.publishedstate")}</td>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.articletype")}</td>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.order")}</td>
-      <td <if layout>class="table_head"<else>class="small bg_neutral"</if> valign="bottom"> &nbsp;</td>
+          <tr <if !aLayout>class="bg-neutral"</if>>
+            <td <if aLayout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.value")}</td>
+            <td <if aLayout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.field")}</td>
+            <td <if aLayout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.publishedstate")}</td>
+            <td <if aLayout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.articletype")}</td>
+            <td <if aLayout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.order")}</td>
+      <td <if aLayout>class="table_head"<else>class="small bg_neutral"</if> valign="bottom"> &nbsp;</td>
           </tr>
           <tr>
-            <td <if layout>class="listrow2"</if>><input type="text" size="10" maxlength="20" name="searchvalue" value="${searchvalue}"></td>
-            <td <if layout>class="listrow2"</if>>
+            <td <if aLayout>class="listrow2"</if>><input type="text" size="10" maxlength="20" name="searchvalue" value="${searchvalue}"></td>
+            <td <if aLayout>class="listrow2"</if>>
                 <select name="searchfield">
-                  <option value="title"<if searchfield=="title"> selected</if>>${lang("contentsearch.field.title")}</option>
-                  <option value="creator"<if searchfield=="creator"> selected</if>>${lang("contentsearch.field.creator")}</option>
-                  <option value="contents"<if searchfield=="content"> selected</if>>${lang("contentsearch.field.contents")}</option>
-                  <option value="creator_main_url"<if searchfield=="creator_main_url"> selected</if>>${lang("contentsearch.field.creator_main_url")}</option>
-                  <option value="creator_email"<if searchfield=="creator_email"> selected</if>>${lang("contentsearch.field.creator_email")}</option>
+                  <option value="title"<if searchfield && searchfield=="title"> selected</if>>${lang("contentsearch.field.title")}</option>
+                  <option value="creator"<if searchfield && searchfield=="creator"> selected</if>>${lang("contentsearch.field.creator")}</option>
+                  <option value="contents"<if searchfield && searchfield=="content"> selected</if>>${lang("contentsearch.field.contents")}</option>
+                  <option value="creator_main_url"<if searchfield && searchfield=="creator_main_url"> selected</if>>${lang("contentsearch.field.creator_main_url")}</option>
+                  <option value="creator_email"<if searchfield && searchfield=="creator_email"> selected</if>>${lang("contentsearch.field.creator_email")}</option>
+                  <option value="comment"<if searchfield && searchfield=="comment"> selected</if>>${lang("contentsearch.field.comment")}</option>
                 </select>
             </td>
-            <td <if layout>class="listrow2"</if>>
+            <td <if aLayout>class="listrow2"</if>>
                 <select name="searchispublished">
                   <option value="">--</option>
-                  <option value="0" <if searchispublished=="0"> selected</if>>${lang("contentsearch.publishedstate.hidden")}</option>
-                  <option value="1" <if searchispublished=="1"> selected</if>>${lang("contentsearch.publishedstate.published")}</option>
+                  <option value="0" <if searchispublished && searchispublished=="0"> selected</if>>${lang("contentsearch.publishedstate.hidden")}</option>
+                  <option value="1" <if searchispublished && searchispublished=="1"> selected</if>>${lang("contentsearch.publishedstate.published")}</option>
                 </select>
             </td>
-            <td <if layout>class="listrow2"</if>>
+            <td <if aLayout>class="listrow2"</if>>
                 <select name="searcharticletype">
                   <option value="">--</option>
                   <list articletypes as at>
-                    <option value="${at.id}" <if searcharticletype==at.id> selected</if>>${lang("articletypes."+at.name)}</option>
+                    <option value="${at.id}" <if searcharticletype && searcharticletype==at.id> selected</if>>${lang("articletypes."+at.name)}</option>
                   </list>
                 </select>
             </td>
-            <td <if layout>class="listrow2"</if>>
+            <td <if aLayout>class="listrow2"</if>>
                 <select name="searchorder">
-                  <option value="datedesc" <if searchorder=="datedesc"> selected</if>>${lang("contentsearch.order.datedesc")}</option>
-                  <option value="dateasc" <if searchorder=="dateasc"> selected</if>>${lang("contentsearch.order.dateasc")}</option>
-                  <option value="title" <if searchorder=="title"> selected</if>>${lang("contentsearch.order.title")}</option>
-                  <option value="creator" <if searchorder=="creator"> selected</if>>${lang("contentsearch.order.creator")}</option>
+                  <option value="datedesc" <if searchorder && searchorder=="datedesc"> selected</if>>${lang("contentsearch.order.datedesc")}</option>
+                  <option value="dateasc" <if searchorder && searchorder=="dateasc"> selected</if>>${lang("contentsearch.order.dateasc")}</option>
+                  <option value="title" <if searchorder && searchorder=="title"> selected</if>>${lang("contentsearch.order.title")}</option>
+                  <option value="creator" <if searchorder && searchorder=="creator"> selected</if>>${lang("contentsearch.order.creator")}</option>
                 </select>
             </td>
-            <td <if layout>class="listrow2"</if>>
+            <td <if aLayout>class="listrow2"</if>>
                 <input class="majorbutton" type="submit" name="search" value="${lang("contentsearch.searchbutton")}">
             </td>
           </tr>
 
 
 <comment>functions to show media for an article/comment edit page</comment>
-<function showArticleAttachments(anArticle)>
-  <call showAttachments(1, anArticle)>
+<function showArticleAttachments(anArticle, aCanEdit, aReturnUrl)>
+  <call showAttachments(1, anArticle, aCanEdit, aReturnUrl)>
 </function>
 
-<function showCommentAttachments(aComment)>
-  <call showAttachments(0, aComment)>
+<function showCommentAttachments(aComment, aReturnUrl)>
+  <call showAttachments(0, aComment, "1", aReturnUrl)>
 </function>
 
-<function showAttachments(anIsArticle, anObject)>
+<function showAttachments(anIsArticle, anObject, aCanEdit, aReturnUrl)>
   <if anIsArticle=="1">
     <assign objectKey="articleid">
     <assign objectModule="Content">
       <td align=right valign=top class="table-left">
         ${lang("content.images")}: 
       </td>
-      <td align="left" valign="top" class="listrow2">
-        <a href="${config.actionRoot}?module=Images&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addimage")}</a> |
-        <a href="${config.actionRoot}?module=Images&do=add&${objectKey}=${anObject.id}">${lang("content.uploadimage")}</a>
-      </td>
+      <if aCanEdit=="1">
+        <td align="left" valign="top" class="listrow2">
+          <a href="${config.actionRoot}?module=Images&amp;do=list&amp;${objectKey}=${anObject.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">[+] ${lang("content.addimage")}</a> |
+          <a href="${config.actionRoot}?module=Images&amp;do=add&amp;${objectKey}=${anObject.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">${lang("content.uploadimage")}</a>
+        </td>
+      </if>
     </tr>
     <list anObject.to_all_media_images as m>
       <tr>
       <td align=right valign=top>
-        <a href="${config.actionRoot}?module=Images&do=edit&id=${m["id"]}"><img src="${config.actionRoot}?module=Images&do=getIcon&id=${m["id"]}" alt="edit" border="0"></a>&nbsp;
-      </td>
-      <td align="left" valign="top">
-        <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
+        <a href="${config.actionRoot}?module=Images&amp;do=getMedia&amp;id=${m["id"]}&amp;returnurl=${utility.encodeURI(aReturnUrl)}"><img src="${config.actionRoot}?module=Images&amp;do=getIcon&amp;id=${m["id"]}" alt="edit" border="0"></a>&nbsp;
       </td>
+      <if aCanEdit=="1">
+        <td align="left" valign="top">
+          <a href="${config.actionRoot}?module=${objectModule}&do=dettach&amp;${objectKey}=${anObject.id}&amp;mid=${m["id"]}">[-] ${lang("deattach")}</a> |
+          <a href="${config.actionRoot}?module=Images&amp;do=edit&amp;id=${m.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">${lang("edit")}</a>
+        </td>
+      </if>
       </tr>
     </list>
-    
 
     <tr>
       <td align=right valign=top class="table-left">
       ${lang("content.audio")}:
       </td>
-      <td align="left" valign="top" class="listrow2">
-        <a href="${config.actionRoot}?module=Audio&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addaudio")}</a> |
-        <a href="${config.actionRoot}?module=Audio&do=add&${objectKey}=${anObject.id}">${lang("content.uploadaudio")}</a>
-      </td>
+      <if aCanEdit=="1">
+        <td align="left" valign="top" class="listrow2">
+          <a href="${config.actionRoot}?module=Audio&do=list&amp;${objectKey}=${anObject.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">[+] ${lang("content.addaudio")}</a> |
+          <a href="${config.actionRoot}?module=Audio&do=add&amp;${objectKey}=${anObject.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">${lang("content.uploadaudio")}</a>
+        </td>
+      </if>
     </tr>
     <list anObject.to_all_media_audio as m>
       <tr>
       <td align=right valign=top>
-        <a href="${config.actionRoot}?module=Audio&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;
-      </td>
-      <td align="left" valign="top">
-        <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
+        <a href="${config.actionRoot}?module=Audio&amp;do=getMedia&amp;id=${m["id"]}&amp;returnurl=${utility.encodeURI(aReturnUrl)}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;
       </td>
+      <if aCanEdit=="1">
+        <td align="left" valign="top">
+          <a href="${config.actionRoot}?module=${objectModule}&amp;do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("deattach")}</a> |
+          <a href="${config.actionRoot}?module=Audio&amp;do=edit&amp;id=${m.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">${lang("edit")}</a>
+        </td>
+      </if>
       </tr>
     </list>
     
       <td align=right valign=top class="table-left">
         ${lang("content.video")}:
       </td>
-      <td  align="left" valign="top" class="listrow2">
-        <a href="${config.actionRoot}?module=Video&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addvideo")}</a> |
-        <a href="${config.actionRoot}?module=Video&do=add&${objectKey}=${anObject.id}">${lang("content.uploadvideo")}</a>
-      </td>
+      <if aCanEdit=="1">
+        <td  align="left" valign="top" class="listrow2">
+          <a href="${config.actionRoot}?module=Video&amp;do=list&${objectKey}=${anObject.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">[+] ${lang("content.addvideo")}</a> |
+          <a href="${config.actionRoot}?module=Video&amp;do=add&${objectKey}=${anObject.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">${lang("content.uploadvideo")}</a>
+        </td>
+      </if>
     </tr>
     <list anObject.to_all_media_video as m>
       <tr>
       <td align=right valign=top>
-        <a href="${config.actionRoot}?module=Video&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;        
-      </td>
-      <td align="left" valign="top">
-        <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
+        <a href="${config.actionRoot}?module=Video&amp;do=getMedia&amp;id=${m["id"]}&amp;returnurl=${utility.encodeURI(aReturnUrl)}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;        
       </td>
+      <if aCanEdit=="1">
+        <td align="left" valign="top">
+          <a href="${config.actionRoot}?module=${objectModule}&amp;do=dettach&amp;${objectKey}=${anObject.id}&amp;mid=${m["id"]}">[-] ${lang("deattach")}</a> |
+          <a href="${config.actionRoot}?module=Video&amp;do=edit&amp;id=${m.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">${lang("edit")}</a>
+        </td>
+      </if>
       </tr>
     </list>
+
     
     <tr>
       <td align=right valign=top class="table-left">
         ${lang("content.other")}:
       </td>
-      <td align="left" valign="top" class="listrow2">
-      <a href="${config.actionRoot}?module=OtherMedia&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addother")}</a> |
-      <a href="${config.actionRoot}?module=OtherMedia&do=add&${objectKey}=${anObject.id}">${lang("content.uploadother")}</a>
-      </td>
+      <if aCanEdit=="1">
+        <td align="left" valign="top" class="listrow2">
+          <a href="${config.actionRoot}?module=OtherMedia&do=list&amp;${objectKey}=${anObject.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">[+] ${lang("content.addother")}</a> |
+          <a href="${config.actionRoot}?module=OtherMedia&do=add&amp;${objectKey}=${anObject.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">${lang("content.uploadother")}</a>
+        </td>
+      </if>
     </tr>
     <list anObject.to_all_media_other as m>
       <tr>
       <td align=right valign=top">
-      <a href="${config.actionRoot}?module=Video&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;  
-      </td>
-      <td align="left" valign="top">
-        <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
+      <a href="${config.actionRoot}?module=OtherMedia&amp;do=getMedia&amp;id=${m["id"]}&amp;returnurl=${utility.encodeURI(aReturnUrl)}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;  
       </td>
+      <if aCanEdit=="1">
+        <td align="left" valign="top">
+          <a href="${config.actionRoot}?module=${objectModule}&amp;do=dettach&amp;${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("deattach")}</a> |
+          <a href="${config.actionRoot}?module=OtherMedia&amp;do=edit&amp;id=${m.id}&amp;returnurl=${utility.encodeURI(aReturnUrl)}">${lang("edit")}</a>
+        </td>
+      </if>
       </tr>
     </list>
   </table>
diff --git a/templates/admin/FUNCTIONS.tmpl b/templates/admin/FUNCTIONS.tmpl
deleted file mode 100755 (executable)
index 3c3409e..0000000
+++ /dev/null
@@ -1,457 +0,0 @@
-<include "EDITFUNCTIONS.tmpl">
-
-<function showAbsoluteLinkButton(anUrl, aLabel)>
-    <span class="link-box-div">
-  <a class="link-box" href="${utility.encodeHTML(anUrl)}">${aLabel}</a>
-    </span>
-</function>
-<function showButton(anUrl, aLabel)>
-  <call showAbsoluteLinkButton(config.docRoot+"?"+anUrl, aLabel)>
-</function>
-
-
-<assign TABLE_HEAD_CLASS          "table-head">
-<assign TABLE_FOOT_CLASS          "table-foot">
-<assign LIST_ROW_CLASS             "listrow1">
-<assign LIST_ROW_CLASS_ALTERNATIVE "listrow2">
-
-<function EntityTable(anEntityList, aDataKeys, aHeaders, aFrom, aTo, aCount, aDeleteUri, aEditUri, aDeleteCancelUri)>
-  <assign nrColumns="0">
-  <list aHeaders as h>
-    <assign nrColumns=utility.increment(nrColumns)>
-  </list>
-  <if aDeleteUri || aEditUri >
-    <assign nrColumns=utility.increment(nrColumns)>
-  </if>
-
-  <table cellspacing="2" border="0">
-    <tr>
-      <list aHeaders as i>
-        <td class="${TABLE_HEAD_CLASS}">
-          <b>${i}</b> 
-        </td>
-      </list>
-      <if aDeleteUri || aEditUri>
-        <td class="${TABLE_HEAD_CLASS}">
-          &nbsp;
-        </td> 
-      </if>
-    </tr>
-    <assign alternative="0">
-    
-    <list anEntityList as entry>
-      <if alternative=="0">
-        <assign alternative="1">
-        <tr class="${LIST_ROW_CLASS}">
-      <else>
-        <assign alternative="0">
-        <tr class="${LIST_ROW_CLASS_ALTERNATIVE}">
-      </if>
-        
-        <list aDataKeys as i>   
-            <td>
-              ${entry[i]}
-            </td>
-        </list>
-        <if aDeleteUri || aEditUri>
-          <td>
-            <if aDeleteUri>
-            <a class="listcommand" href="${config.docRoot}/admin/${aDeleteUri}?id=${entry.id}&offset=${aFrom}&okurl=${aDeleteUri}&cancelurl=${aDeleteCancelUri}&order=&where">${lang("delete")}</a>
-            </if>
-            <if aDeleteUri && aEditUri>
-            | 
-            </if>
-            <if aEditUri>
-              <a class="listcommand" href="${config.docRoot}/admin/${aEditUri}?id=${entry.id}&offset=${aFrom}">${lang("edit")}</a>
-            </if>
-          </td>
-        </if>
-      </tr>
-    </list>
-    
-    
-    <tr>    
-      <td colspan="${nrColumns}" class="${TABLE_FOOT_CLASS}">
-        ${aCount} ${lang("records")} / ${lang("show_from_to", aFrom, aTo)}
-      </td>
-    </tr>
-  
-  </table>
-</function>
-
-
-<comment>extra navigation</comment>
-<function AddOrBack(module_name, module_jumpback, do_jumpback)>
-    <p>
-      <a class="link-box" href="${config.docRoot}?module=${module_name}&do=add">[+] ${lang("add")}</a> &nbsp;
-      <a class="link-box" href="${config.docRoot}?module=${module_jumpback}&do=${do_jumpback}">[&lt;] ${lang("back")} </a> &nbsp;
-      <a class="link-box" href="${config.docRoot}">[&lt;&lt;&lt;] ${lang("head.start")}</a>
-  </p>
-</function>
-
-<function showAddOrBack(anAllowAdd, anAddModule, aBackModule, aBackParams, )>
-    <p>
-      <if anAllowAdd == "1">
-        <a class="link-box" href="${config.docRoot}/admin/${anAddModule}">[+] ${lang("add")}</a> &nbsp;
-      </if>
-      <a class="link-box" href="${config.docRoot}/admin/${aBackModule}?${aBackParams}">[&lt;] ${lang("back")} </a> &nbsp;
-<comment>      <a class="link-box" href="${config.docRoot}">[&lt;&lt;&lt;] ${lang("head.start")}</a></comment>
-  </p>
-</function>
-
-<function showBack(aBackUrl)>
-  <p><a class="link-box" href="${config.docRoot}?${aBackUrl}">[&lt;] ${lang("back")} </a> &nbsp;</p>
-</function>
-
-<function PulldownTableRow (label, fieldname, entrieslist, keyfield, valuefield, value, langprefix)>
-  <tr>
-     <td align="right" class="table-left">
-       <b>${label}:</b>
-     </td>
-     <td class="listrow2">
-       <select name="${fieldname}">
-         <list entrieslist as a>
-           <option value="${a[keyfield]}" <if (a[keyfield] == value)>selected</if>><if langprefix>${lang(langprefix+a[valuefield])}<else>${a[valuefield]}</if></option>
-         </list>
-       </select>
-     </td>
-   </tr>
-</function>   
-
-
-
-
-
-
-
-
-
-<function TextInputTableRow (label, size, maxlength, fieldname, fieldcontent)>
-  <tr>
-    <td align="right" class="table-left">
-      <b>${label}:</b>
-    </td>
-    
-    <td class="listrow2">
-      <input type="text" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
-    </td>
-  </tr>
-</function>
-
-<function ReadonlyTextTableRow (label, fieldcontent)>
-  <tr>
-    <td align="right" class="table-left">
-      <b>${label}:</b>
-    </td>
-    
-    <td class="listrow2">
-      ${utility.encodeHTML(fieldcontent)}
-    </td>
-  </tr>
-</function>
-
-<function PasswordTextInputTableRow (label, size, maxlength, fieldname, fieldcontent)>
-  <tr>
-    <td align="right" class="table-left">
-      <b>${label}:</b>
-    </td>
-    
-    <td class="listrow2">
-      <input type="password" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
-    </td>
-  </tr>
-</function>
-
-<function TextInputTableRowLight (label, size, maxlength, fieldname, fieldcontent)>
-  <tr>
-    <td align="right" class="table-left-light">
-      <b>${label}:</b>
-    </td>
-    
-    <td class="listrow1">
-      <input type="text" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
-    </td>
-  </tr>
-</function>
-
-<function CheckboxTableRow (label, fieldname, fieldcontent )>
-  <call EditCheckboxNormal(label, fieldname, fieldcontent)>
-<comment>
-  <tr>
-    <td align="right" valign="top" class="table-left">
-      <b>${label}:</b>
-    </td>
-    
-    <td class="listrow2">
-      <input type="checkbox" name="${fieldname}" value="1"<if fieldcontent=="1"> checked</if>>&nbsp;&nbsp;
-    </td>
-  </tr>
-</comment>  
-</function> 
-
-<function TextAreaTableRow (label, hint, cols, rows, fieldname, fieldcontent )>
-  <tr>
-    <td align="right" valign="top" class="table-left">
-      <b>${label}:</b>
-      <if hint>
-        <br>
-        <span class="small">${hint}</span>      
-      </if>
-    </td>
-    
-    <td class="listrow2">
-      <textarea cols="${cols}" rows="${rows}" name="${fieldname}" wrap="virtual">${utility.encodeHTML(fieldcontent)}</textarea>
-    </td>
-  </tr>
-</function>
-
-
-<function TextAreaTableRowLight (label, hint, cols, rows, fieldname, fieldcontent )>
-  <tr>
-    <td align="right" valign="top" class="table-left-light">
-      <b>${label}:</b>
-      <if hint>
-        <br>
-        <span class="small">${hint}</span>      
-      </if>
-    </td>
-    
-    <td class="listrow1">
-      <textarea cols="${cols}" rows="${rows}" name="${fieldname}" wrap="virtual">${utility.encodeHTML(fieldcontent)}</textarea>
-    </td>
-  </tr>
-</function>
-
-<comment>complete search-form for contenentries, not sure if it works from everywhere</comment>
-<function ContentSearch (layout)>
-
-      <form method="POST" action="${config.docRoot}">
-        <input type="hidden" name="module" value="Content">
-        <input type="hidden" name="do" value="search">
-        <input type="hidden" name="selectarticleurl" value="${utility.encodeHTML(request.selectarticleurl)}">
-         
-        <table border="0" cellpadding="2" cellspacing="3">
-          <tr <if !layout>class="bg-neutral"</if>>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.value")}</td>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.field")}</td>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.publishedstate")}</td>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.articletype")}</td>
-            <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.order")}</td>
-      <td <if layout>class="table_head"<else>class="small bg_neutral"</if> valign="bottom"> &nbsp;</td>
-          </tr>
-          <tr>
-            <td <if layout>class="listrow2"</if>><input type="text" size="10" maxlength="20" name="searchvalue" value="${searchvalue}"></td>
-            <td <if layout>class="listrow2"</if>>
-                <select name="searchfield">
-                  <option value="title"<if searchfield=="title"> selected</if>>${lang("contentsearch.field.title")}</option>
-                  <option value="creator"<if searchfield=="creator"> selected</if>>${lang("contentsearch.field.creator")}</option>
-                  <option value="contents"<if searchfield=="content"> selected</if>>${lang("contentsearch.field.contents")}</option>
-                  <option value="creator_main_url"<if searchfield=="creator_main_url"> selected</if>>${lang("contentsearch.field.creator_main_url")}</option>
-                  <option value="creator_email"<if searchfield=="creator_email"> selected</if>>${lang("contentsearch.field.creator_email")}</option>
-                </select>
-            </td>
-            <td <if layout>class="listrow2"</if>>
-                <select name="searchispublished">
-                  <option value="">--</option>
-                  <option value="0" <if searchispublished=="0"> selected</if>>${lang("contentsearch.publishedstate.hidden")}</option>
-                  <option value="1" <if searchispublished=="1"> selected</if>>${lang("contentsearch.publishedstate.published")}</option>
-                </select>
-            </td>
-            <td <if layout>class="listrow2"</if>>
-                <select name="searcharticletype">
-                  <option value="">--</option>
-                  <list articletypes as at>
-                    <option value="${at.id}" <if searcharticletype==at.id> selected</if>>${lang("articletypes."+at.name)}</option>
-                  </list>
-                </select>
-            </td>
-            <td <if layout>class="listrow2"</if>>
-                <select name="searchorder">
-                  <option value="datedesc" <if searchorder=="datedesc"> selected</if>>${lang("contentsearch.order.datedesc")}</option>
-                  <option value="dateasc" <if searchorder=="dateasc"> selected</if>>${lang("contentsearch.order.dateasc")}</option>
-                  <option value="title" <if searchorder=="title"> selected</if>>${lang("contentsearch.order.title")}</option>
-                  <option value="creator" <if searchorder=="creator"> selected</if>>${lang("contentsearch.order.creator")}</option>
-                </select>
-            </td>
-            <td <if layout>class="listrow2"</if>>
-                <input class="majorbutton" type="submit" name="search" value="${lang("contentsearch.searchbutton")}">
-            </td>
-          </tr>
-        </table>
-      </form>
-
-</function>
-
-<comment>browse function, only called if necessary</comment>
-<function PrevNext (align)>
-  <if prevurl || nexturl>      
-    <p align="${align}">
-    <if prevurl>
-      <a class="link-box" href="${config.docRoot}?${prevurl}"> [ &lt; ] ${lang("list.previous")}</a>&nbsp;&nbsp; 
-    </if>
-    <if nexturl>
-      <a  class="link-box" href="${config.docRoot}?${nexturl}">   ${lang("list.next")} [ &gt; ]</a>
-    </if>
-    </p>
-  </if>
-</function>
-
-
-<comment>previous next links</comment>
-<function showPrevNextLinks (aPreviousUrl, aNextUrl, anAlignment)>
-  <if aPreviousUrl || aNextUrl>      
-    <p align="${anAlignment}">
-    <if aPreviousUrl>
-      <a class="link-box" href="${config.docRoot}${aPreviousUrl}"> [ &lt; ] ${lang("list.previous")}</a>
-    </if>
-    <if aPreviousUrl && aNextUrl>      
-      &nbsp;&nbsp; 
-    </if>
-    <if aNextUrl>
-      <a class="link-box" href="${config.docRoot}${aNextUrl}">   ${lang("list.next")} [ &gt; ]</a>
-    </if>
-    </p>
-  </if>
-</function>
-
-
-<comment>multifunctional help - popup or not - big or small designs</comment>
-<function Help (HelpUrl, popup, big )>
-  <if popup>
-    
-    <Script Language="JavaScript">
-      <!-- 
-      function openwindowlink() {
-      newwin = window.open("${HelpUrl}","windowname","height=320,width=320,top=200,left=300, scrollbars,resizable")
-      }
-      // end hiding -->
-    </Script>
-    
-    <a href="JavaScript: openwindowlink()">
-      <if big><span class="link-help"><else><span class="link-help-small"></if>
-        <if big> [ ? ] ${lang("help")}<else>[?]</if>
-      </span>
-    </a>    
-  
-  <else>
-    
-    <if big>
-      <a href="${HelpUrl}" target="_blank"><span class="link-help"> [ ? ] ${lang("help")}</span></a>
-    <else>
-      <a href="${HelpUrl}" target="_blank"><span class="link-help-small">[?]</span></a>   
-    </if>
-  </if>
-</function>
-
-
-
-<comment>functions to show media for an article/comment edit page</comment>
-<function showArticleAttachments(anArticle)>
-  <call showAttachments(1, anArticle)>
-</function>
-
-<function showCommentAttachments(aComment)>
-  <call showAttachments(0, aComment)>
-</function>
-
-<function showAttachments(anIsArticle, anObject)>
-  <if anIsArticle=="1">
-    <assign objectKey="articleid">
-    <assign objectModule="Content">
-  <else>
-    <assign objectKey="commentid">
-    <assign objectModule="Comment">
-  </if>
-
-  <table cellspacing="2" cellpadding="2">
-    <tr>
-      <td class="table-head" colspan="2">
-        ${lang("content.attachments")}
-      </td>
-    </tr>
-
-    <tr>
-      <td align=right valign=top class="table-left">
-        ${lang("content.images")}: 
-      </td>
-      <td align="left" valign="top" class="listrow2">
-        <a href="${config.docRoot}?module=Images&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addimage")}</a> |
-        <a href="${config.docRoot}?module=Images&do=add&${objectKey}=${anObject.id}">${lang("content.uploadimage")}</a>
-      </td>
-    </tr>
-    <list anObject.to_all_media_images as m>
-      <tr>
-      <td align=right valign=top>
-        <a href="${config.docRoot}?module=Images&do=edit&id=${m["id"]}"><img src="${config.docRoot}?module=Images&do=getIcon&id=${m["id"]}" alt="edit" border="0"></a>&nbsp;
-      </td>
-      <td align="left" valign="top">
-        <a href="${config.docRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
-      </td>
-      </tr>
-    </list>
-    
-
-    <tr>
-      <td align=right valign=top class="table-left">
-      ${lang("content.audio")}:
-      </td>
-      <td align="left" valign="top" class="listrow2">
-        <a href="${config.docRoot}?module=Audio&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addaudio")}</a> |
-        <a href="${config.docRoot}?module=Audio&do=add&${objectKey}=${anObject.id}">${lang("content.uploadaudio")}</a>
-      </td>
-    </tr>
-    <list anObject.to_all_media_audio as m>
-      <tr>
-      <td align=right valign=top>
-        <a href="${config.docRoot}?module=Audio&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;
-      </td>
-      <td align="left" valign="top">
-        <a href="${config.docRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
-      </td>
-      </tr>
-    </list>
-    
-
-    <tr>
-      <td align=right valign=top class="table-left">
-        ${lang("content.video")}:
-      </td>
-      <td  align="left" valign="top" class="listrow2">
-        <a href="${config.docRoot}?module=Video&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addvideo")}</a> |
-        <a href="${config.docRoot}?module=Video&do=add&${objectKey}=${anObject.id}">${lang("content.uploadvideo")}</a>
-      </td>
-    </tr>
-    <list anObject.to_all_media_video as m>
-      <tr>
-      <td align=right valign=top>
-        <a href="${config.docRoot}?module=Video&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;        
-      </td>
-      <td align="left" valign="top">
-        <a href="${config.docRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
-      </td>
-      </tr>
-    </list>
-    
-    <tr>
-      <td align=right valign=top class="table-left">
-        ${lang("content.other")}:
-      </td>
-      <td align="left" valign="top" class="listrow2">
-      <a href="${config.docRoot}?module=OtherMedia&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addother")}</a> |
-      <a href="${config.docRoot}?module=OtherMedia&do=add&${objectKey}=${anObject.id}">${lang("content.uploadother")}</a>
-      </td>
-    </tr>
-    <list anObject.to_all_media_other as m>
-      <tr>
-      <td align=right valign=top">
-      <a href="${config.docRoot}?module=Video&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;  
-      </td>
-      <td align="left" valign="top">
-        <a href="${config.docRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
-      </td>
-      </tr>
-    </list>
-  </table>
-</function>  
-
-
index 3a0932c..de87ba3 100755 (executable)
@@ -7,69 +7,73 @@
 
 <function MediaSearch (module)>
 
-<form method="post" action="${config.actionRoot}">
-
-<input type="hidden" name="module" value="${module}">
-<input type="hidden" name="do" value="search">
-<input type="hidden" name="articleid" value="${articleid}">
-<input type="hidden" name="commentid" value="${commentid}">
-
-<table border="0" cellspacing="2" cellpadding="2">
-  <tr>
-    <td class="table-head">${lang("search")}:</td>
-    <td class="table-head">${lang("medialist.search_text_in")}:</td>
-    <td class="table-head">${lang("media.published")}:</td>
-    <td class="table-head">${lang("media.mediafolder")}:</td>
-    <td class="table-head">&nbsp;</td>
-    <td><a class="link-box" href="${config.actionRoot}?module=${module}&do=add">[+] ${lang("add")} </a></td>
-  </tr>
-
-  <tr>
-    <td class="listrow2">
-      <input type="text" size="20" maxlength="30" name="searchtext" value="${searchtext}">
-    </td> 
-    <td class="listrow2">
-      <select name="searchfield">
-        <option value="title"<if searchfield=="title"> selected</if>>${lang("media.title")}</option>
-        <option value="creator"<if searchfield=="creator"> selected</if>>${lang("media.creator")}</option>
-        <option value="place"<if searchfield=="place"> selected</if>>${lang("media.location")}</option>
-      </select>
-    </td>
-    
-    <td class="listrow2">
-      <select name="searchispublished">
-        <option value="">${lang("dontcare")}</option>
-        <option value="0" <if searchispublished=="0"> selected</if>>${lang("no")}</option>
-        <option value="1" <if searchispublished=="1"> selected</if>>${lang("yes")}</option>
+  <form method="GET" action="${config.actionRoot}">
+  
+  <input type="hidden" name="module" value="${module}">
+  <input type="hidden" name="do" value="search">
+  <input type="hidden" name="articleid" value="${articleid}">
+  <input type="hidden" name="commentid" value="${commentid}">
+  
+  <table border="0" cellspacing="2" cellpadding="2">
+    <tr>
+      <td class="table-head">${lang("search")}:</td>
+      <td class="table-head">${lang("medialist.search_text_in")}:</td>
+      <td class="table-head">${lang("media.published")}:</td>
+      <td class="table-head">${lang("media.mediafolder")}:</td>
+      <td class="table-head">&nbsp;</td>
+      <td><a class="link-box" href="${config.actionRoot}?module=${module}&do=add">[+] ${lang("add")} </a></td>
+    </tr>
+  
+    <tr>
+      <td class="listrow2">
+        <input type="text" size="20" maxlength="30" name="searchtext" value="${searchtext}">
+      </td> 
+      <td class="listrow2">
+        <select name="searchfield">
+          <option value="title"<if searchfield=="title"> selected</if>>${lang("media.title")}</option>
+          <option value="creator"<if searchfield=="creator"> selected</if>>${lang("media.creator")}</option>
+          <option value="place"<if searchfield=="place"> selected</if>>${lang("media.location")}</option>
+        </select>
+      </td>
+      
+      <td class="listrow2">
+        <select name="searchispublished">
+          <option value="">${lang("dontcare")}</option>
+          <option value="0" <if searchispublished=="0"> selected</if>>${lang("no")}</option>
+          <option value="1" <if searchispublished=="1"> selected</if>>${lang("yes")}</option>
+        </select>
+      </td>
+      
+      <td class="listrow2">
+      <select name="searchmediafolder">
+        <option value="">-</option>
+        <list mediafolders as m>
+          <option value="${m.id}" <if m.id == searchmediafolder>selected</if>>${m.name}</option>
+        </list>
       </select>
-    </td>
-    
-    <td class="listrow2">
-    <select name="searchmediafolder">
-      <option value="">-</option>
-      <list mediafolders as m>
-        <option value="${m.id}" <if m.id == searchmediafolder>selected</if>>${m.name}</option>
-      </list>
-    </select>
-    </td>
-    
-    <td class="listrow2">
-      <input type="submit" name="search" value="${lang("filter")}">
-    </td>
-    
-    <td>
-    &nbsp;
-    </td>
-  </tr>
-</table>
-
-</form>
-
+      </td>
+      
+      <td class="listrow2">
+        <input type="submit" class="majorbutton" name="search" value="${lang("filter")}">
+      </td>
+      
+      <td>
+      &nbsp;
+      </td>
+    </tr>
+  </table>
+  
+  </form>
+  
 </function>
 
 <function MediaList (module)>
+    <if returnurl>
+      <call showAddOrBack2("1", module, returnurl)>
+    <else>
+      <call showAddOrBack("1", module, "Admin", "start")>
+    </if>
 
-  <call showAddOrBack("1", module, "Admin", "start")>
     <if medialist>
       <call showPrevNextLinks(prevurl, nexturl, "left")>
 
@@ -83,8 +87,6 @@
           <td class="table-head">
         <b>${lang("media.format")}</b></td>
           <td class="table-head">
-        <b>${lang("media.size")}</b></td>
-          <td class="table-head">
         <b>${lang("media.mediafolder")}</b></td>
           <td class="table-head">
         <b>${lang("media.creator")}</b></td>
       <if module=="Images">
               <img src="${config.actionRoot}?module=${module}&do=getIcon&id=${entry.id}" border=0></a>        
       <else>
-              <img src="${config.docRoot}/img/${entry.big_icon}" border=0></a>
+              <img src="${config.docRoot}/img/${entry.info.bigIcon}" border=0></a>
       </if>
           </td>
             <td>
-            ${entry.title}&nbsp;
-                <if entry.description><br>${entry.description}</if>
+                ${utility.encodeHTML(entry.title)}&nbsp;
+                <if entry.description && entry.title><br></if>${utility.encodeHTML(entry.description)}
+                <br><br>
+                <if entry.is_published=="1">${lang("media.published")}: <a href="${entry.publish_server}${entry.publish_path}">${entry.publish_server}${entry.publish_path}</a><br></if>
+                <a href="${config.actionRoot}?module=${module}&do=showarticles&id=${entry.id}">${lang("media.articles")}</a> |
+                <a href="${config.actionRoot}?module=${module}&do=showcomments&id=${entry.id}">${lang("media.comments")}</a>
+             
           </td>
             <td>
-            ${entry.media_descr}&nbsp;
-          </td>
-            <td>
-            ${entry.human_readable_size}&nbsp;
+            ${entry.info.mediaType}&nbsp;
           </td>
             <td>
              <if entry.mediafolder>
       </table>
       
       <call showPrevNextLinks(prevurl, nexturl, "left")>
-      <call showAddOrBack("1", module, "Admin", "start")>
+
+      <if returnurl>
+        <call showAddOrBack2("1", module, returnurl)>
+      <else>
+        <call showAddOrBack("1", module, "Admin", "start")>
+      </if>
   
     <else>
       <P align="center">${lang("no_matches_found")}</p>
index 256e652..27f043b 100755 (executable)
         <b>${i}</b> 
       </td>
     </list>
-      <td class="${TABLE_HEAD_CLASS}">
+      <td class="${TABLE_HEAD_CLASS}" width="50">
         &nbsp;
       </td> 
   </tr>
 </function>
 \r
+<function SpannedListHead(aHeaders, aSpans)>\r
+  <tr class="${TABLE_HEAD_CLASS}">
+    <assign index="0">\r
+    <list aHeaders as i>
+      <td colspan="${aSpans[index]}" class="${TABLE_HEAD_CLASS}">
+        <b>${i}</b> 
+      </td>
+      <assign index=utility.increment(index)>
+    </list>
+      <td class="${TABLE_HEAD_CLASS}">
+        &nbsp;
+      </td> 
+  </tr>
+</function>
+
 <function ListFoot(aNrRecords, aFrom, aTo)>\r
   <tr>    
     <td colspan="${TABLE_NR_COLUMNS}" class="table-foot">
 </table>\r
 </function>\r
 
+<function ExtendedListEntry(aFields, aLinks, aLinkTitles)>
+    <if alt=="1">
+      <assign alt="0">
+      <tr class="${LIST_ROW_CLASS_ALTERNATIVE}">
+    <else>
+      <assign alt="1"> 
+      <tr class="${LIST_ROW_CLASS}">
+    </if>
+      
+    <list aFields as i>   
+      <td>
+        ${i}
+      </td>
+    </list>
+      <td>\r
+        <assign index="0">\r
+        <assign first="1">\r
+        <list aLinks as i>\r
+          <if first=="1">\r
+            <assign first="0">\r
+          <else>  \r
+            |\r
+          </if>\r
+          <a class="listcommand" href="${config.actionRoot}?${utility.encodeHTML(i)}">${aLinkTitles[index]}</a>        \r
+          <assign index=utility.increment(index)>
+        </list>\r
+      </td>
+    </tr>
+</function>\r
+
+
+<function SpannedListEntry(aFields, aSpans, aLinkPrefix,  aLinks, aLinkTitles)>\r
+    <if alt=="1">
+      <tr class="${LIST_ROW_CLASS_ALTERNATIVE}">
+    <else>
+      <tr class="${LIST_ROW_CLASS}">
+    </if>
+      
+    <assign index="0">\r
+    <list aFields as i>   
+      <td colspan="${aSpans[index]}">
+        ${i}
+      </td>
+      <assign index=utility.increment(index)>
+    </list>
+      <td>\r
+        <assign index="0">\r
+        <assign first="1">\r
+        <list aLinks as i>\r
+          <if first=="1">\r
+            <assign first="0">\r
+          <else>  \r
+            |\r
+          </if>\r
+          <a class="listcommand" href="${config.actionRoot}?${utility.encodeHTML(aLinkPrefix)}${utility.encodeHTML(i)}">${aLinkTitles[index]}</a>        \r
+          <assign index=utility.increment(index)>
+        </list>\r
+      </td>
+    </tr>
+</function>    
 <function ListEntry(aFields, aLinkPrefix, aLinks, aLinkTitles)>\r
     <if alt=="1">
       <assign alt="0">
index 0fc20dc..2597360 100755 (executable)
@@ -32,9 +32,9 @@
         <tr>
           <td class="table-foot" colspan="2" align="right"> 
           <if id>
-            <input type="submit" name="save" value="${lang("save")}">
+            <input type="submit" class="majorbutton" name="save" value="${lang("save")}">
           <else>
-            <input type="submit" name="save" value="${lang("insert")}">
+            <input type="submit" class="majorbutton" name="save" value="${lang("insert")}">
           </if> 
           </td>
         </tr>
index 9ec9763..5c9db62 100755 (executable)
       <br><br>
     </p>
     <call ListStart()>\r
-    <call ListHead([
+    <call SpannedListHead([
           lang("abuse.filter.type"), 
-          lang("abuse.filter.expression"),
+          lang("abuse.filter.expression")], ["1","3"])>
+    <call ListHead([
           lang("abuse.filter.articleaction"),
           lang("abuse.filter.commentaction"),
           lang("abuse.filter.comments"),
-          lang("abuse.filter.lasthit"), 
-           ])>
+          lang("abuse.filter.lasthit")])>
     <list filters as f>    
-    <if f.lastHit>\r
-        <call ListEntry([
-          lang("abuse.filtertype."+f.type),
-          utility.encodeHTML(f.expression),
-          lang("content.operation."+f.articleAction),
-          lang("comment.operation."+f.commentAction),
-          f.comments,                                                   
-          f.lastHit.format(config["Mir.DefaultDateTimeFormat"], config["Mir.DefaultTimezone"])
-          ], 
-          "module=Abuse&id="+f.id, 
-          ["&do=edit", "&do=delete"], 
-          [lang("edit"), lang("delete")])
-        >
-    <else>
-        <call ListEntry([
+        <call SpannedListEntry([
           lang("abuse.filtertype."+f.type),
-          utility.encodeHTML(f.expression),
-          lang("content.operation."+f.articleAction),
-          lang("comment.operation."+f.commentAction),
-          f.comments,
-          "-"
-          ], 
+          utility.encodeHTML(f.expression)],
+          ["1","3"],
           "module=Abuse&id="+f.id, 
-          ["&do=edit", "&do=delete"], 
-          [lang("edit"), lang("delete")])
-        >
-    </if>
+           ["&do=edit", "&do=delete"], 
+           [lang("edit"), lang("delete")])>
+          <if f.lastHit>\r
+              <call ListEntry([
+                lang("content.operation."+f.articleAction),
+                lang("comment.operation."+f.commentAction),
+                utility.prettyEncodeHTML(f.comments),
+                f.lastHit.format(config["Mir.DefaultDateTimeFormat"], config["Mir.DefaultTimezone"])
+                ], 
+                "module=Abuse&id="+f.id, 
+                ["&do=moveup", "&do=movedown", "&do=movetop", "&do=movebottom"], 
+                [lang("abuse.filters.moveup"), lang("abuse.filters.movedown"),
+                 lang("abuse.filters.movetop"), lang("abuse.filters.movebottom")])
+              >
+          <else>
+              <call ListEntry([
+                lang("content.operation."+f.articleAction),
+                lang("comment.operation."+f.commentAction),
+                utility.prettyEncodeHTML(f.comments),
+                "-"
+                ], 
+                "module=Abuse&id="+f.id, 
+                ["&do=moveup", "&do=movedown", "&do=movetop", "&do=movebottom"], 
+                [lang("abuse.filters.moveup"), lang("abuse.filters.movedown"),
+                 lang("abuse.filters.movetop"), lang("abuse.filters.movebottom")])
+              >
+          </if>
+        <tr height="2" class="${TABLE_HEAD_CLASS}"><td colspan="6"> </td></tr>
     </list>\r
     <call ListEnd()>\r
     
index 73882a5..ec52057 100755 (executable)
@@ -18,6 +18,8 @@
         <td class="table-head">${lang("abuse.log.address")}</td>
         <td class="table-head">${lang("abuse.log.object")}</td>
         <td class="table-head">${lang("abuse.log.browser")}</td>
+        <td class="table-head">${lang("abuse.log.filtertype")}</td>
+        <td class="table-head">${lang("abuse.log.filterexpression")}</td>
       </tr>
       
       <assign grey="0">      
             </if>
           </td>
           <td>${l.browser}</td>
+          <td><if l.hitfiltertype>${lang("abuse.filtertype."+l.hitfiltertype)}</if></td>
+          <td>${utility.encodeHTML(l.hitfilterexpression)}</td>
         </tr>
       </list>
     <tr>
-      <td colspan="4" class="table-foot">&nbsp;</td>
+      <td colspan="6" class="table-foot">&nbsp;</td>
     </tr>
     </table>
 
index aab208a..8ffe80d 100755 (executable)
@@ -4,15 +4,13 @@
   <tr>
     <td align="right" valign="top">
       <a href="${config.actionRoot}?module=${module}&do=getMedia&id=${uploadedmedia.id}">
-      <img src="/img/${uploadedmedia.big_icon}" border=0></a>&nbsp;&nbsp;
+      <img src="${config.docRoot}/img/${uploadedmedia.info.bigIcon}" border=0></a>&nbsp;&nbsp;
     </td>
     <td valign="bottom" class="small">
-      ${lang("media.created")}: ${uploadedmedia.webdb_create}
-      <if uploadedmedia.webdb_lastchange>/ ${lang("media.changed")} ${uploadedmedia.webdb_lastchange}</if><br>
-      <if uploadedmedia.is_published=="1">${lang("media.published")}: ${uploadedmedia.publish_date} / ${uploadedmedia.publish_server}${uploadedmedia.publish_path}<br></if>
-      ${lang("media.format")}: ${uploadedmedia.mimetype} / ${uploadedmedia.media_descr}<br>
+      ${lang("media.created")}: ${uploadedmedia.creationdate.format(config["Mir.DefaultDateTimeFormat"])} 
+      ${lang("media.urls")}: ${uploadedmedia.publish_server}${uploadedmedia.publish_path}<br>
+      ${lang("media.format")}: ${uploadedmedia.info.mediaType}<br>
       ${lang("media.size")}: ${uploadedmedia.human_readable_size}<br>
-      ${lang("media.rights")}: <b>${uploadedmedia.rightsHashdata[to_rights]["name"]}</b><br>
     </td>
   </tr>
 </if>
index deb5feb..1fecf8e 100755 (executable)
           <call showButton(
             "module=Comment&do=articlecomments&articleid="+comment.to_content.id+"&returnurl="+utility.encodeURI(thisurl),
             lang("comment.allcomments"))>
+           <comment>
           <call showAbsoluteLinkButton(
             comment.publicurl,
             lang("preview"))>
+           </comment>
         </if>
 
         <list comment.operations as op>
-          <call showButton(
+          <call showPOSTButton(
             "module=Localizer&do=commentoperation&operation="+op+"&id="+comment.id+"&returnurl="+utility.encodeURI(thisurl), 
             lang("comment.operation."+op))>
         </list>
@@ -45,9 +47,9 @@
     <td align="right" valign="top">
       ${lang("comment.published")} <input type="checkbox" name="is_published" value="1" <if comment.is_published=="1"> checked</if>>
       <if new=="1">
-        <input type="submit" name="save" value="${lang("insert")}">
+        <input type="submit" class="majorbutton" name="save" value="${lang("insert")}">
       <else>
-        <input type="submit" name="save" value="${lang("save")}">
+        <input type="submit" class="majorbutton" name="save" value="${lang("save")}">
       </if> 
     </td>
   </tr>
     <call PulldownTableRow (lang("comment.language"), "to_language", languages, "id", "name", comment.to_language, "")>
     <call CheckboxTableRow       (lang("comment.html"), "is_html", comment.is_html )>
     <call TextAreaTableRow       (lang("comment.text"), "", 70, 15, "description", comment.description)>
+    <call TextAreaTableRow       (lang("comment.comment"), lang("comment.comment.info"), 70, 6, "comment", comment.comment)>
 
         <tr>
           <td colspan="2" align="right" class="table-foot" > 
             <span class="text">
               <if new=="1">
-                <input type="submit" name="save" value="${lang("insert")}">
+                <input type="submit" class="majorbutton" name="save" value="${lang("insert")}">
               <else>
-                <input type="submit" name="save" value="${lang("save")}">
+                <input type="submit" class="majorbutton" name="save" value="${lang("save")}">
               </if> 
             </span>
           </td>
 
 <tr>
 <td align="left" valign="top">
-<call showCommentAttachments(comment)>
+<call showCommentAttachments(comment, thisurl)>
 </td>
 </tr>
 </table>
index 229f756..184d544 100755 (executable)
@@ -37,6 +37,7 @@
         <option value="description"<if searchfield=="description"> selected</if>>${lang("commentsearch.field.description")}</option>
         <option value="main_url"<if searchfield=="main_url"> selected</if>>${lang("commentsearch.field.main_url")}</option>
         <option value="email"<if searchfield=="email"> selected</if>>${lang("commentsearch.field.email")}</option>
+        <option value="comment"<if searchfield=="comment"> selected</if>>${lang("commentsearch.field.comment")}</option>
       </select>
     </td>
     <td class="listrow2">
@@ -91,6 +92,9 @@
         ${lang("comment.article")} / ${lang("comment.title")} / ${lang("comment.creator")} / ${lang("comment.text")}
       </td>
       <td>
+        ${lang("comment.comment")}
+      </td>
+      <td>
         &nbsp;
       </td>
     </tr>
               <a href="${config.actionRoot}?module=Content&do=edit&id=${entry.to_content.id}">
               ${lang("edit")}
               </a> |
+<comment>              
               <a href="${entry.publicurl}">
                 ${lang("start.show")}
               </a> |
+</comment>              
               <a href="${config.actionRoot}?module=Comment&do=articlecomments&articleid=${entry.to_content.id}">
                 ${lang("commentlist.allcomments")}
               </a>
           ${lang("by")}: ${entry.creator}
         </if>
         <br>
-        ${utility.encodeHTML(entry.description)}
+        ${utility.prettyEncodeHTML(utility.subString(entry.description, 0, config["Mir.Admin.ListTextLengthLimit"]))}
         
         <if entry.main_url><br>URL: ${entry.main_url}</if>
         <br>
       </td>
         
       <td valign="top">
+        ${utility.prettyEncodeHTML(entry.comment)}
+      </td>    
+      <td valign="top">
         &nbsp;
         <if config["Mir.Localizer.Admin.AllowDeleteComment"]=="1">
           <a class="small" href="${config.actionRoot}?module=Comment&do=delete&id=${entry.id}&okurl=${utility.encodeURI(thisurl)}&cancelurl=${utility.encodeURI(thisurl)}">[${lang("delete")}]</a>
   </list>
         
     <tr>
-      <td colspan="3" class="table-foot">
+      <td colspan="4" class="table-foot">
         ${count} ${lang("records")} / ${lang("show_from_to", from, to)}
       </td>
     </tr>
index 38d307f..9598857 100755 (executable)
@@ -16,8 +16,8 @@
              <input type="hidden" name="id" value="${id}">
              <input type="hidden" name="okurl" value="${okurl}">
              <input type="hidden" name="cancelurl" value="${cancelurl}">
-             <input type="submit" name="cancel" value="${lang("cancel")}">
-             <input type="submit" name="confirm" value="${lang("delete")}"><br>
+             <input type="submit" class="majorbutton" name="cancel" value="${lang("cancel")}">
+             <input type="submit" class="majorbutton" name="confirm" value="${lang("delete")}"><br>
              <br>
             <b><span class="text-alert">${lang("confirm.text")}</span></b>
         </p>
diff --git a/templates/admin/confirm.tmpl b/templates/admin/confirm.tmpl
deleted file mode 100755 (executable)
index 1479f84..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<html>
-  <head>
-        <title>${config["Mir.Name"]} | ${lang("confirm.htmltitle")}</title>
-        <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
-  </head>
-
-  <body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-    <center>
-      <include "head.tmpl">
-        <form method="post" action="${config.docRoot}/admin/confirm.do">
-          <table><tr><td>
-            <p class="box-head" align="center"><b>${lang("confirm.really_delete")}</b></p>
-            <p class="box" align="center">
-             <input type="hidden" name="id" value="${request.id}">
-             <input type="hidden" name="order" value="${request.order}">
-             <input type="hidden" name="limit" value="${request.limit}">
-             <input type="hidden" name="offset" value="${request.offset}">
-             <input type="hidden" name="okurl" value="${request.okurl}">
-             <input type="hidden" name="cancelurl" value="${request.cancelurl}">
-             <input type="submit" name="cancel" value="${lang("cancel")}">
-             <input type="submit" name="confirm" value="${lang("delete")}"><br>
-             <br>
-            <b><span class="text-alert">${lang("confirm.text")}</span></b>
-        </p>
-      </td></tr></table>
-       </form>
-      </center>
-    <include "foot.template">
-  </body>
-</html>
index 665ae7b..dfe72e5 100755 (executable)
@@ -9,6 +9,58 @@
 <include "FUNCTIONS.template">
 <include "head.template">
 
+<if new=="0">
+  <table width="100%" cellspacing="0" cellpadding="5">
+      <tr>
+        <td align="left" valign="top">
+            <call showGETButton(
+              "module=Comment&do=articlecomments&articleid="+article.id+"&returnurl="+utility.encodeURI(thisurl),
+              lang("content.comments"))>
+              
+            <list article.previews as p>              
+              <call showGETButton(
+                "module=Content&do=showPreview&preview="+p+"&id="+article.id+"&returnurl="+utility.encodeURI(thisurl),
+                lang("content.preview."+p))>
+            </list>
+        </td>
+        <td align="right" valign="top">
+          <if article.is_locked=="1" && article.lockinguser>
+            ${lang("content.lockedby", article.lockinguser.login)}
+          </if>
+
+          <if mayLock=="1">
+            <form method="post" action="${config.actionRoot}">
+              <input type="hidden" name="module" value="Content">
+              <input type="hidden" name="id" value="${utility.encodeHTML(article.id)}">
+              <input type="hidden" name="returnurl" value="${utility.encodeURI(thisurl)}">
+              <input type="hidden" name="do" value="lock">
+              <input type="submit" class="majorbutton" name="lock" value="${lang("content.lock")}">
+            </form>
+          </if>
+          <if mayUnlock=="1">
+            <form method="post" action="${config.actionRoot}">
+              <input type="hidden" name="module" value="Content">
+              <input type="hidden" name="id" value="${utility.encodeHTML(article.id)}">
+              <input type="hidden" name="returnurl" value="${utility.encodeURI(thisurl)}">
+              <input type="hidden" name="do" value="unlock">
+              <input type="submit" class="majorbutton" name="unlock" value="${lang("content.unlock")}">
+            </form>
+          </if>
+          <if mayForceLock=="1">
+            <form method="post" action="${config.actionRoot}">
+              <input type="hidden" name="module" value="Content">
+              <input type="hidden" name="id" value="${utility.encodeHTML(article.id)}">
+              <input type="hidden" name="returnurl" value="${utility.encodeURI(thisurl)}">
+              <input type="hidden" name="do" value="forcelock">
+              <input type="submit" class="majorbutton" name="fotcelock" value="${lang("content.forcelock")}">
+            </form>
+          </if>
+        </td>
+      </tr>
+  </table>
+</if>
+
+<if mayEdit=="1">
 <form method="post" action="${config.actionRoot}">
   <input type="hidden" name="module" value="Content">
   <input type="hidden" name="id" value="${utility.encodeHTML(article.id)}">
   <else>
     <input type="hidden" name="do" value="update">
   </if>
+</if>  
 
 <table width="100%" cellspacing="0" cellpadding="5">
   <tr>
     <td align="left" valign="top">
       <if new=="0">
-        <call showButton(
-          "module=Comment&do=articlecomments&articleid="+article.id+"&returnurl="+utility.encodeURI(thisurl),
-          lang("content.comments"))>
-        <call showAbsoluteLinkButton(
-          article.publicurl,
-          lang("preview"))>
         <list article.operations as op>
-          <call showButton(
+          <call showPOSTButton(
             "module=Localizer&do=articleoperation&operation="+op+"&articleid="+article.id+"&returnurl="+utility.encodeURI(thisurl), 
             lang("content.operation."+op))>
         </list>
       </if>
-      
     </td>
     <td align="right" valign="top">
       ${lang("content.published")} :
-      <input type="checkbox" name="is_published" value="1"<if article.is_published!="0" && article.is_published!=""> checked</if>>
-      <if new=="1">
-        <input type="submit" name="save" value="${lang("insert")}">
+      <if mayEdit=="1">
+        <input type="checkbox" name="is_published" value="1"<if article.is_published!="0" && article.is_published!=""> checked</if>>
+        <if new=="1">
+          <input type="submit" class="majorbutton" name="save" value="${lang("insert")}">
+        <else>
+          <input type="submit" class="majorbutton" name="save" value="${lang("save")}">
+        </if>
       <else>
-        <input type="submit" name="save" value="${lang("save")}">
+        <if article.is_published!="0" && article.is_published!="">${lang("yes")}<else>${lang("no")}</if>
       </if>
     </td>
   </tr>
 </table>
 <table width="100%" cellspacing="3" cellpadding="2">
   <tr>
-    <td align="right" class="table-left">
+    <td align="right" class="table-left" width="30%">
       id # :
     </td>
     <td class="listrow2">
     </td>
   </tr>
   
+<if new=="0">
+  <comment>changedate, creationdate aren't available for new articles</comment>
   <tr>
     <td align="right" class="table-left">
       ${lang("content.lastchange_date")}:
       ${lang("content.create_date")}:
     </td>
     <td class="listrow2">
-      ${utility.encodeHTML(article.creationdate.format(config["Mir.DefaultDateTimeFormat"]))}<br>${lang("edit")}:
-      <input type="text" size="10" maxlength="16" name="webdb_create" value=""> &nbsp; <span class="small">(yyyy-mm-dd [HH:mm])</span>
+      ${utility.encodeHTML(article.creationdate.format(config["Mir.DefaultDateTimeFormat"]))}
+      <if mayEdit=="1">
+        <br>${lang("edit")}:
+        <input type="text" size="10" maxlength="16" name="webdb_create" value=""> &nbsp; <span class="small">(yyyy-mm-dd [HH:mm])</span>
+      </if>
     </td>
   </tr>
+</if>  
 
-  <call PulldownTableRow (lang("content.articletype"), "to_article_type", articletypes, "id", "name", article.to_article_type, "articletypes.")>
-  <call PulldownTableRow (lang("content.language"), "to_language", languages, "id", "name", article.to_language, "")>
+  <call _PulldownTableRow (lang("content.articletype"), "to_article_type", articletypes, "id", "name", article.to_article_type, "articletypes.", mayEdit)>
+  <call _PulldownTableRow (lang("content.language"), "to_language", languages, "id", "name", article.to_language, "", mayEdit)>
   
-  <tr>
-    <td align="right" valign="top" class="table-left">
-      ${lang("content.topic")}:
-    </td>
-    <td class="listrow2" >
-      <if config["Mir.Localizer.Admin.TopicListFlavor"]!="0">
-      <table border=0 cellpadding="2" cellspacing="0">
-        <tr> 
-          <assign col=config["Mir.Localizer.Admin.TopicListColumns"]>
-          <list topics as t>
-            <if col=="0">
-        </tr>
-        <tr>
-          <assign col=config["Mir.Localizer.Admin.TopicListColumns"]>
+  <list topics as r>
+    <tr>
+      <td align="right" valign="top" class="table-left">
+        ${lang(r.key)}:
+      </td>
+      <td class="listrow2">
+        <if mayEdit=="1">
+          <if r.listtype=="1">
+            <table border=0 cellpadding="2" cellspacing="0">
+              <tr> 
+                <assign col=r.listparameter>
+                <list r.items as t>
+                  <if col=="0">
+              </tr>
+              <tr>
+                <assign col=r.listparameter>
+                  </if>
+                <td title="${utility.encodeHTML(t.description)}">
+                  <input type="checkbox" name="to_topic" value="${t.id}" <list article.to_topics as to><if (t.id == to["id"])>checked</if></list>>
+                  <span class="small"> ${t.title}</span>
+                </td>
+                <assign col=utility.increment(col, "-1")>
+                </list>
+                  <if col!="0">
+                    <td colspan="${col}">
+                      &nbsp;
+                    </td>
+                  </if>
+              </tr>
+            </table>
+          <else>
+            <if r.listtype=="0">
+              <select name="to_topic" size="r.listparameter" multiple>
+                       <list r.items as t>
+                         <option value="${t.id}" <list article.to_topics as to><if (t.id == to["id"])>selected</if></list>>${t.title}</option>
+                </list>
+              </select>
+            <else>
+              <select name="to_topic" size="1">
+                       <list r.items as t>
+                         <option value="${t.id}" <list article.to_topics as to><if (t.id == to["id"])>selected</if></list>>${t.title}</option>
+                </list>
+              </select>
             </if>
-          <td title="${utility.encodeHTML(t.description)}">
-            <input type="checkbox" name="to_topic" value="${t.id}" <list article.to_topics as to><if (t.id == to["id"])>checked</if></list>>
-            <span class="small"> ${t.title}</span>
-          </td>
-          <assign col=utility.increment(col, "-1")>
+          </if>
+        <else>
+               <list r.items as t>
+                 <list article.to_topics as to><if (t.id == to["id"])>${t.title} <br/> </if></list>
           </list>
-            <if col!="0">
-              <td colspan="${col}">
-                &nbsp;
-              </td>
-            </if>
-        </tr>
-      </table>
-      <else>
-      <select name="to_topic" size="7" multiple>
-               <list topics as t>
-                 <option value="${t.id}" <list article.to_topics as to><if (t.id == to["id"])>selected</if></list>>${t.title}</option>
-        </list>
-      </select>
-      </if>
-    </td>
-  </tr>
+        </if>
+      </td>
+    </tr>
+  </list>
   
-  <call TextInputTableRow      (lang("content.title"), 40, 255, "title", article.title)>
-  <call TextInputTableRowLight (lang("content.subtitle"), 40, 255, "subtitle", article.subtitle)>
-  <call TextInputTableRowLight (lang("content.edittitle"), 40, 255, "edittitle", article.edittitle)>
-  <comment>
-    <call TextInputTableRowLight ("", 20, 20, "subtitle", article.edittitle)>
-  </comment>
-  <call TextInputTableRowLight (lang("content.location"), 40, 255, "source", article.source)>
-  <call TextInputTableRow      (lang("content.creator"), 40, 80, "creator", article.creator)>
-  <call TextInputTableRowLight (lang("content.creator.email"), 40, 80, "creator_email", article.creator_email)>
-  <call TextInputTableRowLight (lang("content.creator.url"), 40, 255, "creator_main_url", article.creator_main_url)>
-  <call TextInputTableRowLight (lang("content.creator.address"), 20, 80, "creator_address", article.creator_address)>
-  <call TextInputTableRowLight (lang("content.creator.telephone"), 20, 20, "creator_phone", article.creator_phone)>
-  <call CheckboxTableRow       (lang("content.html"), "is_html", article.is_html )>
-  <call TextAreaTableRow       (lang("content.abstract"), "", 70, 15, "description", article.description)>
-  <call TextAreaTableRow       (lang("content.content"), "", 70, 20, "content_data", article.content_data)>
-  <call TextAreaTableRow       (lang("content.comment"), lang("content.internal"), 70, 6, "comment", article.comment)>
+  
+  <call _TextInputTableRow      (lang("content.title"), 40, 255, "title", article.title, mayEdit)>
+  <call _TextInputTableRowLight (lang("content.subtitle"), 40, 255, "subtitle", article.subtitle, mayEdit)>
+  <call _TextInputTableRowLight (lang("content.edittitle"), 40, 255, "edittitle", article.edittitle, mayEdit)>
+  <call _TextInputTableRowLight (lang("content.location"), 40, 255, "source", article.source, mayEdit)>
+  <call _TextInputTableRow      (lang("content.creator"), 40, 80, "creator", article.creator, mayEdit)>
+  <call _TextInputTableRowLight (lang("content.creator.email"), 40, 80, "creator_email", article.creator_email, mayEdit)>
+  <call _TextInputTableRowLight (lang("content.creator.url"), 40, 255, "creator_main_url", article.creator_main_url, mayEdit)>
+  <call _TextInputTableRowLight (lang("content.creator.address"), 20, 80, "creator_address", article.creator_address, mayEdit)>
+  <call _TextInputTableRowLight (lang("content.creator.telephone"), 20, 20, "creator_phone", article.creator_phone, mayEdit)>
+  <call _CheckboxTableRow       (lang("content.html"), "is_html", article.is_html, mayEdit)>
+  <call _TextAreaTableRow       (lang("content.abstract"), "", 70, 15, "description", article.description, mayEdit)>
+  <call _TextAreaTableRow       (lang("content.content"), "", 70, 20, "content_data", article.content_data, mayEdit)>
+  <call _TextAreaTableRow       (lang("content.comment"), lang("content.internal"), 70, 6, "comment", article.comment, mayEdit)>
+  <call _TextAreaTableRow       (lang("content.keywords"), "", 70, 4, "keywords", article.keywords, mayEdit)>
 
-  <tr>
-    <td colspan="2" align="right" valign="top">
-      <if new=="1">
-        <input type="submit" name="save" value="${lang("insert")}">
-      <else>
-        <input type="submit" name="save" value="${lang("save")}">
-      </if>
-    </td>
-  </tr>
+  <if mayEdit=="1">
+    <tr>
+      <td colspan="2" align="right" valign="top">
+        <if new=="1">
+          <input type="submit" class="majorbutton" name="save" value="${lang("insert")}">
+        <else>
+          <input type="submit" class="majorbutton" name="save" value="${lang("save")}">
+        </if>
+      </td>
+    </tr>
+  </if>    
 </table>
   
 <if new=="0">
-
-<table width="90%" cellspacing="0" cellpadding="0">
-
-<tr>
-<td align="left" valign="top">
-
-<table cellspacing="3" cellpadding="2">
-  <tr>
-    <td class="table-head" colspan="2">
-      ${lang("content.family")}
-    </td>
-  </tr>
-    
+  <table width="90%" cellspacing="0" cellpadding="0">
+  
   <tr>
-    <td align=right valign=top class="table-left">
-      ${lang("content.parent")}:
-    </td>
-    <td align="left" valign="top" class="listrow2">
-      <if article.parent>
-        <b>${utility.encodeHTML(article.parent.title)}</b><br>
-        <a href="${config.actionRoot}?module=Content&do=edit&id=${article.parent.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.viewparent")}</a> |
-        <a href="${config.actionRoot}?module=Content&do=clearparent&id=${article.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.clearparent")}</a> |
-      </if>    
-        &nbsp;<a href="${config.actionRoot}?module=Content&do=selectparent&id=${article.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.selectparent")}</a>
-    </td>
-  </tr>
+    <td align="left" valign="top">
     
-  <tr>
-    <td align=right valign=top class="table-left">
-      ${lang("content.children")}:
-    </td>
-    <td align="left" valign="top" class="listrow2">
-      <a href="${config.actionRoot}?module=Content&do=listchildren&article_id=${article.id}">${lang("content.viewchildren")}</a>
+    <table cellspacing="3" cellpadding="2">
+      <tr>
+        <td class="table-head" colspan="2">
+          ${lang("content.family")}
+        </td>
+      </tr>
+        
+      <tr>
+        <td align=right valign=top class="table-left">
+          ${lang("content.parent")}:
+        </td>
+        <td align="left" valign="top" class="listrow2">
+          <if article.parent>
+            <b>${utility.encodeHTML(article.parent.title)}</b><br>
+            <a href="${config.actionRoot}?module=Content&do=edit&id=${article.parent.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.viewparent")}</a> |
+            <a href="${config.actionRoot}?module=Content&do=clearparent&id=${article.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.clearparent")}</a> |
+          </if>
+          <if mayEdit=="1">
+            &nbsp;<a href="${config.actionRoot}?module=Content&do=selectparent&id=${article.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.selectparent")}</a>
+          </if>
+        </td>
+      </tr>
+        
+      <tr>
+        <td align=right valign=top class="table-left">
+          ${lang("content.children")}:
+        </td>
+        <td align="left" valign="top" class="listrow2">
+          <a href="${config.actionRoot}?module=Content&do=listchildren&article_id=${article.id}">${lang("content.viewchildren")}</a>
+        </td>
+      </tr>
+    </table>
+  </td>
+    <td align="right" valign="top">
+      <call showArticleAttachments(article, mayEdit, thisurl)>
     </td>
   </tr>
 </table>
 
-</td>
-<td align="right" valign="top">
-<call showArticleAttachments(article)>
-</td>
-</tr>
-</table>
-
 </if>          
-
-</form>
+<if mayEdit=="1">
+  </form>
+</if>  
 
   <include "foot.template">
 </body>
diff --git a/templates/admin/content.tmpl b/templates/admin/content.tmpl
deleted file mode 100755 (executable)
index 07cbcd9..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-<html>
-<head>
-  <title>${lang("content.htmltitle")}</title>
-  <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css"
-</head>
-
-<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-
-<include "FUNCTIONS.tmpl">
-<include "head.tmpl">
-
-<if request.new && request.new=="1">
-  <assign action="contentSave.do">
-  <assign new=request.new>
-<else>
-  <assign action="requestSave.do">
-  <assign new="0">
-</if>
-<assign thisurl="contentSave.do?id="+utility.encodeHTML(request.article.id) >
-
-<form method="post" action="${config.docRoot}/admin/contentSave.do">
-  <input type="hidden" name="id" value="${utility.encodeHTML(request.article.id)}">
-  <input type="hidden" name="returnurl" value="${utility.encodeHTML(request.returnurl)}">
-  <input type="hidden" name="new" value="${new}">
-
-<table width="100%" cellspacing="0" cellpadding="5">
-  <tr>
-    <td align="left" valign="top">
-      <if new=="0">
-        <call showButton(
-          "module=Comment&do=articlecomments&articleid="+request.article.id+"&returnurl="+utility.encodeURI(thisurl),
-          lang("content.comments"))>
-        <call showAbsoluteLinkButton(
-          request.article.publicurl,
-          lang("preview"))>
-        <list request.article.operations as op>
-          <call showButton(
-            "module=Localizer&do=articleoperation&operation="+op+"&articleid="+request.article.id+"&returnurl="+utility.encodeURI(thisurl), 
-            lang("content.operation."+op))>
-        </list>
-      </if>
-      
-    </td>
-    <td align="right" valign="top">
-      ${lang("content.published")} :
-      <input type="checkbox" name="is_published" value="1"<if request.article.published!="0" && request.article.published!=""> checked</if>>
-      <if new=="1">
-        <input type="submit" name="save" value="${lang("insert")}">
-      <else>
-        <input type="submit" name="save" value="${lang("save")}">
-      </if>
-    </td>
-  </tr>
-</table>
-<table width="100%" cellspacing="3" cellpadding="2">
-  <tr>
-    <td align="right" class="table-left">
-      id # :
-    </td>
-    <td class="listrow2">
-      ${request.article.id}
-    </td>
-  </tr>
-  
-  <tr>
-    <td align="right" class="table-left">
-      ${lang("content.lastchange_date")}:
-    </td>
-    <td class="listrow2">
-      ${utility.encodeHTML(request.article.webdbLastchange.format(config["Mir.DefaultDateTimeFormat"]))}<br>
-    </td>
-  </tr>
-
-  <tr>
-    <td align="right" valign="top" class="table-left">
-      ${lang("content.webdbCreate")}:
-    </td>
-    <td class="listrow2">
-      ${utility.encodeHTML(request.article.webdbCreate.format(config["Mir.DefaultDateTimeFormat"]))}<br>${lang("edit")}:
-      <input type="text" size="10" maxlength="16" name="date" value=""> &nbsp; <span class="small">(yyyy-mm-dd [HH:mm])</span>
-    </td>
-  </tr>
-
-  <call PulldownTableRow (lang("content.articletype"), "to_article_type", application.articletypes, "id", "name", request.article.articleType.id, "articletypes.")>
-  <call PulldownTableRow (lang("content.language"), "to_language", application.languages, "id", "name", request.article.language.id, "")>
-  
-  <tr>
-    <td align="right" valign="top" class="table-left">
-      ${lang("content.topic")}:
-    </td>
-    <td class="listrow2" >
-      <if config["Mir.Localizer.Admin.TopicListFlavor"]!="0">
-      <table border=0 cellpadding="2" cellspacing="0">
-        <tr> 
-          <assign col=config["Mir.Localizer.Admin.TopicListColumns"]>
-          <list application.topics as t>
-            <if col=="0">
-        </tr>
-        <tr>
-          <assign col=config["Mir.Localizer.Admin.TopicListColumns"]>
-            </if>
-          <td title="${utility.encodeHTML(t.description)}">
-            <input type="checkbox" name="to_topic" value="${t.id}" <list request.article.topicsAsList as to><if (t.id == to["id"])>checked</if></list>>
-            <span class="small"> ${t.title}</span>
-          </td>
-          <assign col=utility.increment(col, "-1")>
-          </list>
-            <if col!="0">
-              <td colspan="${col}">
-                &nbsp;
-              </td>
-            </if>
-        </tr>
-      </table>
-      <else>
-      <select name="to_topic" size="7" multiple>
-               <list topics as t>
-                 <option value="${t.id}" <list request.article.topics as to><if (t.id == to["id"])>selected</if></list>>${t.title}</option>
-        </list>
-      </select>
-      </if>
-    </td>
-  </tr>
-  
-  <call TextInputTableRow      (lang("content.title"), 40, 255, "title", request.article.title)>
-  <call TextInputTableRowLight (lang("content.subtitle"), 40, 255, "subtitle", request.article.subtitle)>
-  <call TextInputTableRowLight (lang("content.edittitle"), 40, 255, "edittitle", request.article.edittitle)>
-  <comment>
-    <call TextInputTableRowLight ("", 20, 20, "subtitle", request.article.edittitle)>
-  </comment>
-  <call TextInputTableRowLight (lang("content.location"), 40, 255, "source", request.article.source)>
-  <call TextInputTableRow      (lang("content.creator"), 40, 80, "creator", request.article.creator)>
-  <call TextInputTableRowLight (lang("content.creator.email"), 40, 80, "creator_email", request.article.creatorEmail)>
-  <call TextInputTableRowLight (lang("content.creator.url"), 40, 255, "creator_main_url", request.article.creatorMainUrl)>
-  <call TextInputTableRowLight (lang("content.creator.address"), 20, 80, "creator_address", request.article.creatorAddress)>
-  <call TextInputTableRowLight (lang("content.creator.telephone"), 20, 20, "creator_phone", request.article.creatorPhone)>
-  <call CheckboxTableRow       (lang("content.html"), "is_html", request.article.html )>
-  <call TextAreaTableRow       (lang("content.abstract"), "", 70, 15, "description", request.article.description)>
-  <call TextAreaTableRow       (lang("content.content"), "", 70, 20, "content_data", request.article.contentData)>
-  <call TextAreaTableRow       (lang("content.comment"), lang("content.internal"), 70, 6, "comment", request.article.comment)>
-
-  <tr>
-    <td colspan="2" align="right" valign="top">
-      <if new=="1">
-        <input type="submit" name="save" value="${lang("insert")}">
-      <else>
-        <input type="submit" name="save" value="${lang("save")}">
-      </if>
-    </td>
-  </tr>
-</table>
-  
-<if new=="0">
-
-<table width="90%" cellspacing="0" cellpadding="0">
-
-<tr>
-<td align="left" valign="top">
-
-<table cellspacing="3" cellpadding="2">
-  <tr>
-    <td class="table-head" colspan="2">
-      ${lang("content.family")}
-    </td>
-  </tr>
-    
-  <tr>
-    <td align=right valign=top class="table-left">
-      ${lang("content.parent")}:
-    </td>
-    <td align="left" valign="top" class="listrow2">
-      <if request.article.parentContent>
-        <b>${utility.encodeHTML(request.article.parentContent.title)}</b><br>
-        <a href="${config.docRoot}?module=Content&do=edit&id=${request.article.parentContent.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.viewparent")}</a> |
-        <a href="${config.docRoot}?module=Content&do=clearparent&id=${request.article.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.clearparent")}</a> |
-      </if>    
-        &nbsp;<a href="${config.docRoot}?module=Content&do=selectparent&id=${request.article.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.selectparent")}</a>
-    </td>
-  </tr>
-    
-  <tr>
-    <td align=right valign=top class="table-left">
-      ${lang("content.children")}:
-    </td>
-    <td align="left" valign="top" class="listrow2">
-      <a href="${config.docRoot}?module=Content&do=listchildren&article_id=${request.article.id}">${lang("content.viewchildren")}</a>
-    </td>
-  </tr>
-</table>
-
-</td>
-<td align="right" valign="top">
-<call showArticleAttachments(request.article)>
-</td>
-</tr>
-</table>
-
-</if>          
-
-</form>
-
-  <include "foot.tmpl">
-</body>
-</html>
index e580010..b89e0aa 100755 (executable)
@@ -2,7 +2,7 @@
   if selectarticleurl is set, this list is used to select an article
 </comment>
 
-<if selectarticleurl!="">
+<if selectarticleurl && selectarticleurl!="">
   <assign showsearch="1">
   <assign showactions="0">
 <else>
@@ -33,7 +33,7 @@
       <input type="hidden" name="do" value="articleoperationbatch">
       <input type="hidden" name="returnurl" value="${utility.encodeHTML(thisurl)}">
       <p class="box">
-        <input type="submit" name="save" value="${lang("save")}"> &nbsp; (${lang("commentlist.activate")})
+        <input type="submit" class="majorbutton" name="save" value="${lang("save")}"> &nbsp; (${lang("commentlist.activate")})
       </p>
   </if>    
 </if>
@@ -68,8 +68,8 @@
           <if entry.is_published!="0">Pub.<else>-</if> <if entry.is_html!="0">HTML<else>-</if>
       </td>
       <td>
-        ${lang("articletypes." + entry.article_type.name)} <b>${entry.title}</b> (${entry.id})<br>
-        ${lang("by")} <i>${utility.encodeHTML(entry.creator)}</i><br>
+        ${lang("articletypes." + entry.article_type.name)} <b>${utility.prettyEncodeHTML(entry.title)}</b> (${entry.id})<br>
+        ${lang("by")} <i>${utility.prettyEncodeHTML(entry.creator)}</i><br>
         <if showactions=="1">
           <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="0">
             <list entry.operations as op>
@@ -94,7 +94,7 @@
           </if>
           <if entry.operations> | </if>
           <a href="${config.actionRoot}?module=Content&do=edit&id=${entry.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("edit")}</a> |
-          <a href="${entry.publicurl}">${lang("preview")}</a> |
+         <comment> <a href="${entry.publicurl}">${lang("preview")}</a> |</comment>
           <a href="${config.actionRoot}?module=Comment&do=articlecomments&articleid=${entry.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("contentlist.comments")}</a> (${entry.commentcount})
         <else>
           <span class="text">
         </if>
       </td>
       <td width="25%"  <if grey=="1">class="listrow3"<else>class="listrow4"</if> valign="top">
-        <span class="small">${entry.comment}&nbsp;</span>
+        <span class="small">${utility.prettyEncodeHTML(entry.comment)}&nbsp;</span>
       </td>
       <td valign="top" class="listcommand">
         <if showactions=="1">
diff --git a/templates/admin/contentlist.tmpl b/templates/admin/contentlist.tmpl
deleted file mode 100755 (executable)
index 05d0bf5..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-<comment>
-  if selectarticleurl is set, this list is used to select an article
-</comment>
-
-<if request.selectarticleurl && request.selectarticleurl !="">
-  <assign showsearch="1">
-  <assign showactions="0">
-<else>
-  <assign showactions="1">
-  <assign showsearch="0">
-</if>
-
-
-<assign showactions="1">
-<assign showsearch="0">
-<assign thisurl="contentList.do">
-
-
-<html>
-<head>
-  <title>${config["Mir.Name"]} | ${lang("contentlist.htmltitle")} </title>
-  <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
-</head>
-
-<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-<include "FUNCTIONS.tmpl">
-<include "head.tmpl">
-
-<if showsearch=="1">
-  <call ContentSearch ("layouted")>
-</if>
-
-<if request.articles>
-
-<if showactions=="1">
-  <if config["Mir.Localizer.Admin.ListOperationsFlavor"]!="0">
-    <form method="post" action="${config.docRoot}">
-      <input type="hidden" name="module" value="Localizer">
-      <input type="hidden" name="do" value="articleoperationbatch">
-      <input type="hidden" name="returnurl" value="${utility.encodeHTML(thisurl)}">
-      <p class="box">
-        <input type="submit" name="save" value="${lang("save")}"> &nbsp; (${lang("commentlist.activate")})
-      </p>
-  </if>    
-</if>
-
-<call showPrevNextLinks(prevurl, nexturl, "right")>
-
-<table border="0" width="100%" cellspacing="3" cellpadding="2">
-  <tr>
-    <td class="table-head" valign="top">
-      <span class="small">    
-      ${lang("content.creationdate")}<br>
-      ${lang("content.modificationdate")}<br>
-      ${lang("content.status")}
-      </span>
-    </td>
-    <td class="table-head" valign="top">
-      ${lang("content.type")} - ${lang("content.title")} (id # )<br>
-      ${lang("content.creator")} 
-    </td>
-    <td class="table-head" valign="top">
-      ${lang("content.comment")}
-    </td>
-    <td class="table-head" valign="top">&nbsp;</td>
-  </tr>
-
-<assign grey="0">
-  <list request.articles as entry>
-    <tr <if grey=="1"><assign grey="0">class="listrow1"<else>class="listrow2"<assign grey="1"></if>>
-      <td class="x-small">
-          ${entry.webdbCreate.format(config["Mir.DefaultDateTimeFormat"])}<br>
-          ${entry.webdbLastchange.format(config["Mir.DefaultDateTimeFormat"])}<br>
-          <if entry.published!="0">Pub.<else>-</if> <if entry.html!="0">HTML<else>-</if>
-      </td>
-      <td>
-        ${lang("articletypes." + entry.articleType.name)} <b>${entry.title}</b> (${entry.id})<br>
-        ${lang("by")} <i>${utility.encodeHTML(entry.creator)}</i><br>
-        <if showactions=="1">
-          <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="0">
-            <list entry.operations as op>
-              [ <a href="${config.docRoot}?module=Localizer&do=articleoperation&operation=${op}&articleid=${entry.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("content.operation."+op)}</a> ]
-            </list>
-          </if>
-        <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="1">
-          <list entry.operations as op>
-            [ <input type="checkbox" name="operation" value="${entry.id};${op}"> ${lang("content.operation."+op)} ]
-          </list>
-        </if>
-          <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="2">
-            <if entry.operations>
-              <br>
-              <select name="operation">
-                <option value="" selected>&nbsp;</option>
-                <list entry.operations as op>
-                  <option value="${entry.id};${op}">${lang("content.operation."+op)}</option>
-                </list>
-              </select>
-            </if>
-          </if>
-          <if entry.operations> | </if>
-          <a href="${config.docRoot}/admin/contentEdit.do?id=${entry.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("edit")}</a> |
-          <a href="${entry.publicurl}">${lang("preview")}</a> |
-          <a href="${config.docRoot}?module=Comment&do=articlecomments&articleid=${entry.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("contentlist.comments")}</a> (${entry.commentsSize})
-        <else>
-          <span class="text">
-          <a href="${config.docRoot}?${request.selectarticleurl}&id=${entry.id}">${lang("contentlist.select")}</a>
-        </if>
-      </td>
-      <td width="25%"  <if grey=="1">class="listrow3"<else>class="listrow4"</if> valign="top">
-        <span class="small">${entry.comment}&nbsp;</span>
-      </td>
-      <td valign="top" class="listcommand">
-        <if showactions=="1">
-          <if config["Mir.Localizer.Admin.AllowDeleteArticle"]=="1">
-            <a href="${config.docRoot}?module=Content&do=delete&id=${entry.id}&okurl=${utility.encodeURI(thisurl)}&cancelurl=${utility.encodeURI(thisurl)}">[${lang("delete")}]</a>
-          </if>
-        </if>
-      </td>
-  </tr>
-</list>
-  <tr>
-    <td colspan="4" class="table-foot">
-      ${count} ${lang("records")} / ${lang("show_from_to", from, to)}
-    </td>
-  </tr>
-</table>
-
-<if showactions=="1">
-  <if config["Mir.Localizer.Admin.ListOperationsFlavor"]!="0">
-    <p class="box">
-      <input class="majorbutton" type="submit" name="save" value="${lang("save")}"> &nbsp; ( ${lang("commentlist.activate")})
-    </p>
-  </form> 
-  </if>  
-</if>
-
-<call showPrevNextLinks(prevurl, nexturl, "right")>
-
-<else>
-<p align="center" class="box">${lang("no_matches_found")}</p>
-</if>
-
-<include "foot.tmpl">
-</body>
-</html>
index 28d8c33..181bb28 100755 (executable)
   <input type="hidden" name="entry" value="${entry}">
   <input type="hidden" name="subdirectory" value="${subdirectory}">
   <input type="hidden" name="do" value="update">
-  <input type="submit" name="save" value="${lang("save")}"> &nbsp;
-  <input type="reset" value="${lang("reset")}">
+  <input type="submit" class="majorbutton" name="save" value="${lang("save")}"> &nbsp;
+  <input type="reset" class="majorbutton" value="${lang("reset")}">
   <br><br>  
   <textarea cols="120" rows="40" name="text" wrap=virtual>${utility.encodeHTML(text)}</textarea>
   <br><br>
-  <input type="submit" name="save" value="${lang("save")}"> &nbsp;
+  <input type="submit" class="majorbutton" name="save" value="${lang("save")}"> &nbsp;
   <input type="reset" value="${lang("reset")}">
 </form>
 <br>
diff --git a/templates/admin/foot.tmpl b/templates/admin/foot.tmpl
deleted file mode 100755 (executable)
index d67fe76..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<hr>  
-<table width="100%" cellspacing="0">
-  <tbody>
-  <tr>
-    <td align="left" class="table-head">
-      <a href="#top"><span class="table-head"> ${lang("foot.top")}</span></a>
-      <if returnurl>
-        <a href="${config.actionRoot}?${returnurl}"><span class="table-head"> | &nbsp;&nbsp;${lang("back")} [ &lt; ]</span></a>&nbsp;&nbsp;
-      </if>
-    </td>
-    <td align="right" class="table-head">
-      <a href="mailto:${config["Mir.Contact-email.address"]}"><span class="table-head">${config["Mir.Shortname"]}</span></a> - ${config["Mir.Version"]}
-    </td>
-  </tr>
-</tbody>
-</table>
-
-
-  
-  
-  
-
-
index 0c942f7..54a269f 100755 (executable)
   </tr>
 </table>
 <hr>
+<if loggedinusers>
+  <table cellpadding="3" cellspacing="0" width="100%">
+    <tr >
+      <td class="bg-neutral small" align="left">
+        <b>${lang("system.loggedin")}
+        <list loggedinusers as u>
+          ${u.name} (${u.count})
+        </list>
+        </b>
+      </td>
+      <td class="bg-neutral small" align="right">
+        <b>${lang("system.status")}
+        ${systemstatus}
+        </b>
+      </td>
+    </tr>
+  </table>
+<hr>
+</if>
diff --git a/templates/admin/head.tmpl b/templates/admin/head.tmpl
deleted file mode 100755 (executable)
index 344dc0d..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<a name="top"></a>
-
-<table class="table-head" width="100%" cellspacing="0" cellpadding="0">
-  <tr>
-    <td><img src="${config.docRoot}/img/logo_small.gif" border="0" align="left"></td>
-    <td>
-      ${config["Mir.Name"]} &nbsp; | &nbsp; ${config.now.format(config["Mir.DefaultDateTimeFormat"])} 
-    </td>
-    <td class="table-head" align="right">
-      <a href="${utility.encodeLink(config.docRoot+"/admin/changePassword.do?id="+session.user.id+"&amp;returnurl=")}"><span class="table-head">${lang("head.changepassword")}</span></a> &nbsp; | &nbsp;
-      <if request.returnurl>
-        <a href="${utility.encodeLink(config.docRoot+request.returnurl)}"><span class="table-head">[ &lt; ] ${lang("back")}</span></a> &nbsp; | &nbsp;
-      </if> 
-      <a href="${utility.encodeLink(config.docRoot+"/admin/index.do")}"><span class="table-head">${lang("head.start")}</span></a> &nbsp; | &nbsp;
-      <a href="${utility.encodeLink(config.docRoot+"/admin/logoff.do")}"><span class="table-head">${lang("head.logout")}
-      <if session.user> <i>${session.user.login}</i> </if>
-      </span></a>
-    </td>
-  </tr>
-</table>
-<hr>
index 18ffebe..7a8edd9 100755 (executable)
@@ -8,16 +8,13 @@
   <tr>
     <td align="right" valign="top">
       <a href="JavaScript:openWin('${config.actionRoot}?module=${module}&do=getMedia&id=${uploadedmedia.id}')">
-        <img src="${config.actionRoot}?module=${module}&do=getIcon&id=${uploadedmedia.id}" border=0>
+        <img src="${config.actionRoot}?module=${module}&do=getThumbnail&id=${uploadedmedia.id}" border=0>
       </a>&nbsp;&nbsp;
     </td>
     <td valign="bottom" class="small">
-      ${lang("media.created")}: ${uploadedmedia.webdb_create}
-      <if uploadedmedia.webdb_lastchange>/ ${lang("media.changed")} ${uploadedmedia.webdb_lastchange}</if><br>
-      <if uploadedmedia.is_published=="1">${lang("media.published")}: ${uploadedmedia.publish_date} / ${uploadedmedia.publish_server}${uploadedmedia.publish_path}<br></if>
-      ${lang("media.format")}: ${uploadedmedia.mimetype} / ${uploadedmedia.media_descr}<br>
-      ${lang("media.size")}: ${uploadedmedia.human_readable_size}<br>
-      ${lang("media.rights")}: <b>${uploadedmedia.rightsHashdata[to_rights]["name"]}</b><br>
+      ${lang("media.created")}: ${uploadedmedia.creationdate.format(config["Mir.DefaultDateTimeFormat"])} 
+      ${lang("media.urls")}: ${uploadedmedia.publish_server}${uploadedmedia.publish_path}<br>
+      ${lang("media.format")}: ${uploadedmedia.info.mediaType}<br>
     </td>
   </tr>
 </if>
diff --git a/templates/admin/index.tmpl b/templates/admin/index.tmpl
deleted file mode 100755 (executable)
index ff09e29..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-<html>
-  <head>
-    <title>${config["Mir.Name"]} | ${lang("start.htmltitle")}</title>
-    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css"
-  </head>
-
-<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-
-  <include "FUNCTIONS.template">
-  <include "head.tmpl">
-
-<table border="0" width="100%">
-  <tr>
-    <td valign="top" width="40%">
-    <!-- ###### left column ###### -->
-    <p class="box-head"><b>${lang("start.administer.title")}</b></p>
-    <p class="box"> 
-      <list administeroperations as a>
-          <a href="${config.docRoot}/admin/${a.url}">${lang("start.administer."+a.name)}</a><br>
-      </list>
-    </p>
-
-    <p class="box-head"><b>${lang("start.articles.title")}</b></p>  
-    <p class="box">
-      <list request.articletypes as a>
-          <a href="${config.docRoot}/admin/contentList.do?articletype=${a.id}">&gt; ${lang("start.allarticlesoftype", lang("articletypes."+a.name))}</a><br>
-      </list>
-      <br>  
-      <a href="${config.docRoot}?module=Content&do=list&where=${utility.encodeURI("is_published='f'")}&order=${utility.encodeURI("webdb_create desc")}" >&gt; ${lang("start.content.not_published")}</a><br>
-      <a href="${config.docRoot}?module=Content&do=list&where=${utility.encodeURI("id in (select content_id from content_x_media, media where media.id=media_id)")}&order=${utility.encodeURI("webdb_create desc")}">&gt; ${lang("start.content.with_media")}</a><br>
-      <a href="${config.docRoot}?module=Content&do=list&where=&order=${utility.encodeURI("webdb_lastchange desc")}">&gt; ${lang("start.content.last_changes")}</a><br>
-      <a href="${config.docRoot}?module=Content&do=list&where=${utility.encodeURI("not (comment is null or comment like '')")}&order=${utility.encodeURI("webdb_create desc")}">&gt; ${lang("start.content.with_comments")}</a><br>
-      <br>
-      <a href="${config.docRoot}?module=Content&do=list&where=&order=${utility.encodeURI("webdb_create desc")}">&gt; ${lang("start.content.all")}</a><br>
-    </p>
-    <p class="box-head"><b>${lang("start.comments.title")}</b></p>  
-    <p class="box">
-      <list commentstatuses as a>
-          <a href="${config.docRoot}?module=Comment&do=list&where=to_comment_status%3D${a.id}&order=webdb_create%20desc">&gt; ${lang("start.allcommentswithstatus", lang("commentstatus."+a.name))}</a><br>
-      </list>
-    </p>
-
-
-    <p class="box-head"><b>${lang("start.extra.title")}</b></p>   
-    <p class="box"> 
-      <a href="${config.docRoot}?module=Hidden&do=list">&gt; ${lang("start.content.hidden")}</a>
-      <list fileeditentries as e>
-        <br>
-          <a href="${config.docRoot}?module=FileEdit&do=list&entry=${e}">&gt; ${lang("start.fileedit."+e+".title")}</a>
-      </list>
-    </p>
-</td>
-
-<!-- ###### end left column ###### -->
-
-<td width="2%">&nbsp;</td>
-<!-- ###### Spacer-column ###### -->
-
-<comment> Middle column </comment>
-      
-    <td valign="top" width="30%">
-    
-    <p class="box-head"><b>${lang("start.addandedit.title")}</b></p>
-    <div class="box">
-      <a href="${config.docRoot}/admin/contentAdd.do?returnurl=index.do">&gt; ${lang("start.content.new")}</a>
-      <br>
-      
-      <a href="${config.docRoot}?module=Breaking&do=list">&gt; ${lang("start.breaking.title")}</a>&nbsp;
-      <a href="${config.docRoot}?module=Breaking&do=add">[+]</a>
-      <form>
-        <input type="hidden" name="module" value="Content">
-        <input type="hidden" name="do" value="edit">
-        ${lang("start.content.open_by_id")}: 
-        <input type="text" name="id" value="" size="7">
-        <input type="submit" value=" &gt; ">
-      </form>
-      <form>
-        <input type="hidden" name="module" value="Comment">
-        <input type="hidden" name="do" value="edit">
-        ${lang("start.comment.open_by_id")}: 
-        <input type="text" name="id" value="" size="7">
-        <input type="submit" value=" &gt; ">
-      </form>
-      
-      
-    </div>
-    
-    <p class="box-head"><b>${lang("start.media.title")}</b></p> 
-    <div class="box">
-      
-      <a href="${config.docRoot}?module=Images&do=list">&gt; ${lang("start.images.title")}</a>&nbsp;
-      <a href="${config.docRoot}?module=Images&do=add">[+]</a><br>
-
-      <a href="${config.docRoot}?module=Audio&do=list">&gt; ${lang("start.audio.title")}</a>&nbsp;
-      <a href="${config.docRoot}?module=Audio&do=add">[+]</a><br>
-
-      
-      <a href="${config.docRoot}?module=Video&do=list">&gt; ${lang("start.video.title")}</a>&nbsp;
-      <a href="${config.docRoot}?module=Video&do=add">[+]</a><br>
-
-      
-      <a href="${config.docRoot}?module=OtherMedia&do=list">&gt; ${lang("start.other_media.title")}</a>&nbsp;
-      <a href="${config.docRoot}?module=OtherMedia&do=add" >[+]</a><br>
-
-      <br>
-      <a href="${config.docRoot}?module=Mediafolder&do=list">&gt; ${lang("start.mediafolder.title")}</a>&nbsp;
-      <a href="${config.docRoot}?module=Mediafolder&do=add">[+]</a><br>
-    </div>
-    
-    
-    
-    <p class="box-head"><b>${lang("start.producers.title")}</b></p>
-    <p class="box">
-      <a href="${config.docRoot}?module=Producer&do=produceAllNew">&gt; ${lang("start.producers.produceAllNew")}</a><br>
-      <a href="${config.docRoot}?module=Producer&do=showProducerQueueStatus">&gt; ${lang("start.producers.advanced")}</a>
-    </p>
-    
-    <p class="box bg-neutral">
-      <a href="${utility.encodeLink(config.docRoot+"/admin/superusermenu.shtml")}">${lang("start.superusermenu")}</a>   
-    </p>
-
-  </td>
-
-    <td width="2%">&nbsp;</td>
-
-<comment> RIGHT COLUMN </comment>
-
-  <td valign="top" width="26%" rowspan="2">
-
-  <comment>internal messageboard</comment>
-
-
-    <p class="box-head"><b>${lang("start.messageboard.title")}</b></p>
-    <div class="box-bg">
-      <span class="small">
-        <a href="${config.docRoot}/admin/messageAdd.do?returnurl=index.do">[ + ${lang("add")}]</a> 
-        <a href="${config.docRoot}/admin/messageList.do?returnurl=index.do">[${lang("edit")}]</a>
-      </span>
-      <if request.messages>
-        <list request.messages as m>
-          <p class="x-small">
-            <if m.title><b>${m.title}</b><br></if>
-            ${m.description}<br>
-            <span class="x-small">
-              <if m.creator><i>by: ${m.creator}</i> / </if>${m.webdbCreate.format(config["Mir.DefaultDateTimeFormat"])}}<br>
-            </span>
-          </p>
-        </list>
-      <else>
-        <p><i>${lang("start.messageboard.no_messages")}</i>
-      </if></span>
-    </div>
-  </td>
-
-  </tr>
-  
-  <comment> BOTTOM ROW FOR SEARCH </comment>
-  <tr>
-    <td colspan="3" valign="top">
-      <p class="box-head"><b>${lang("start.search.title")}</b></p>
-      <div class="box">
-        <call ContentSearch ("")>
-      </div>
-
-<comment>      
-      <!-- HELP -DEMO -->
-      <p class="box">
-        <b>HELP-Demo:</b><br>
-        popup small-link: <call Help ("../help/content_datum.html", "1", "" )>&nbsp;&nbsp;  popup big-link: <call Help ("../help/content_datum.html", "1", "1" )><br><br>
-        newwin small-link: <call Help ("../help/content_datum.html", "", "" )>&nbsp;&nbsp; newwin big-link: <call Help ("../help/content_datum.html", "", "1" )>
-      </p>
-</comment>      
-      
-    </td>
-  </tr>
-  
-</table>
-
-  <include "foot.template">
-
-  </body>
-</html>
index b9dc81e..0fc7541 100755 (executable)
@@ -32,7 +32,7 @@
   <div class="box">
     
     
-      <form method="post" action="${config.docRoot}/admin/logon.do">
+      <form method="post" action="${config.actionRoot}">
         
     <input type="hidden" name="module" value="login">
 
@@ -58,7 +58,7 @@
       </tr>  
     <tr>
       <td colspan="2" align="right">
-        <input type="submit" value="${lang("login.submit")}">
+        <input type="submit" class="majorbutton" value="${lang("login.submit")}">
       </td>
     </tr>
     </tbody>
diff --git a/templates/admin/logon.tmpl b/templates/admin/logon.tmpl
deleted file mode 100755 (executable)
index d223ccf..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-  <head>
-    <title>${config["Mir.Name"]} | ${lang("login.htmltitle")}</title>
-    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
-    <script language="JavaScript">
-      function placeFocus() {
-        document.forms[0].elements[1].focus();
-      }
-    </script>
-  </head>
-  <body onLoad="placeFocus()" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-    
-  <include "head_nonavi.template">
-
-<center>
-      <p>
-          ${lang("login.info", 
-                 "<a href=\"mailto:" + config["Mir.Contact-email.address"] +
-                 "\">" + 
-                 config["Mir.Contact-email.name"] + 
-                 "</a>"
-                 )
-           }
-      </p>
-      
-    <hr>
-<div style="width:300px;">
-
-  <div class="box-head"><b>${lang("login.title")}</b></div>
-  
-  <div class="box">
-    
-    
-      <form method="post" action="${utility.encodeLink("logon.do")}">
-        
-    <input type="hidden" name="module" value="login">
-
-    <table cellpadding="4">
-    <tbody>
-      <tr>
-      <td align="right">${lang("login.name")}:</td>
-      <td align="left"><input type="text" name="login" size="15"></td>
-      </tr>
-      <tr>
-      <td align="right">${lang("login.password")}:</td>
-      <td align="left"><input type="password" name="password" size="15"></td>
-      </tr>
-      <tr>
-      <td align="right">${lang("login.language")}:</td>
-      <td align="left">  
-        <select name="language">
-        <list application.languages as l>
-          <option value="${l.code}" <if l.code==application.defaultlanguage>selected</if> >${l.name}</option>
-        </list>
-        </select>
-      </td>
-      </tr>  
-    <tr>
-      <td colspan="2" align="right">
-        <input type="submit" value="${lang("login.submit")}">
-      </td>
-    </tr>
-    </tbody>
-    </table>                
-
-      </form>
-  </div>
-</div>
-<br>
-</center>
-    
-    <include "foot.template">
-  
-  </body>
-</html>
-
index 62787b7..5399c91 100755 (executable)
@@ -6,16 +6,31 @@
 
 <body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
     <include "FUNCTIONS.template">
+    <include "LISTFUNCTIONS.template">
     <include "head.template">
     
-    <call showAddOrBack("1", module, "Admin", "superusermenu")>
+    <call showAddOrBack("1", module, "Admin", "start")>
 
     <if entities>
       <call showPrevNextLinks(prevurl, nexturl, "left")>
-      <call EntityTable(entities, ["name", "place","comment"], 
-         [ lang("mediafolder.name"), 
-           lang("mediafolder.location"),
-           lang("mediafolder.comment")], from, to, count, "1", "1", module)>
+      <call ListStart()>\r
+      <call ListHead([
+             lang("mediafolder.name"), 
+             lang("mediafolder.location"),
+             lang("mediafolder.comment"), ])>
+  
+      <list entities as e>    
+          <call ExtendedListEntry([
+            utility.prettyEncodeHTML(e.name), 
+            utility.prettyEncodeHTML(e.place), 
+            utility.prettyEncodeHTML(e.comment)], 
+            ["module="+module+"&id="+e.id+"&do=edit", "module="+module+"&id="+e.id+"&do=delete", 
+              "module=Images&do=search&searchmediafolder="+e.id], 
+            [lang("edit"), lang("delete"), lang("list")])
+          >
+      </list>\r
+      <call ListFoot(count, from, to)>\r
+      <call ListEnd()>\r
       <call showPrevNextLinks(prevurl, nexturl, "left")>
       <call showAddOrBack("1", module, "Admin", "start")>
     <else>
diff --git a/templates/admin/mediatype.template b/templates/admin/mediatype.template
new file mode 100755 (executable)
index 0000000..839b119
--- /dev/null
@@ -0,0 +1,42 @@
+<html>
+  <head>
+    <title>${config["Mir.Name"]} | ${lang("mediatype.htmltitle")}</title>
+    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
+<head>
+<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
+    <include "FUNCTIONS.template">
+    <include "head.template">
+  
+      <if new=="1">
+        <assign method="insert">
+      <else>
+        <assign method="update">
+      </if>
+      
+      <call EditStart(
+         ["module", "id", "do"],
+         [module, entity.id, method])>
+         
+        <call EditReadonlyTextNormal(lang("mediatype.id"), entity.id)>
+        <call EditTextNormal(lang("mediatype.name"), 40, 255, "name", entity.name)>
+       <call EditTextNormal(lang("mediatype.mimetype"), 40, 255, "mime_type", entity.mime_type)>
+       <call EditTextNormal(lang("mediatype.classname"), 40, 255, "classname", entity.classname)>
+       <call EditTextNormal(lang("mediatype.tablename"), 40, 255, "tablename", entity.tablename)>
+      
+        <if new=="1">
+          <call EditSubmitButtonNormal(lang("insert"), "save")>
+        <else>
+          <call EditSubmitButtonNormal(lang("save"), "save")>
+        </if> 
+
+      <call EditEnd()>
+      
+      <if returnurl>
+        <call showBack(returnurl)>
+      <else>
+        <call showBack("module="+module+"&amp;do=list")>
+      </if>
+
+    <include "foot.template">
+</body>
+</html>
diff --git a/templates/admin/mediatypelist.template b/templates/admin/mediatypelist.template
new file mode 100755 (executable)
index 0000000..2a9996d
--- /dev/null
@@ -0,0 +1,26 @@
+<html>
+  <head>
+    <title>${config["Mir.Name"]} | ${lang("mediatypelist.htmltitle")}</title>
+    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
+  </head>
+  <body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
+    
+    <include "FUNCTIONS.template">
+    <include "head.template">
+    
+    <call showAddOrBack("1", module, "Admin", "superusermenu")>
+
+    <if entities>
+      <call showPrevNextLinks(prevurl, nexturl, "left")>
+      <call EntityTable(entities, ["id","name", "mime_type", "classname"], [lang("mediatype.id"), lang("mediatype.name"), lang("mediatype.mimetype"), lang("mediatype.classname")], from, to, count, "1", "1", module)>
+      <call showPrevNextLinks(prevurl, nexturl, "left")>
+      <call showAddOrBack("1", module, "Admin", "superusermenu")>
+    <else>
+      <P align="center">${lang("no_matches_found")}</p>
+    </if>
+
+    <include "foot.template">
+  </body>
+</html>
+
+
diff --git a/templates/admin/message.tmpl b/templates/admin/message.tmpl
deleted file mode 100755 (executable)
index 5cd7577..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<html>
-  <head>
-    <title>${config["Mir.Name"]} | ${lang("message.htmltitle")}</title>
-    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
-  <head>
-
-  <body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-    <include "FUNCTIONS.tmpl">
-    <include "head.tmpl">
-  
-      <if request.new && request.new=="1">
-        <assign action="messageSave.do">
-        <assign new=request.new>
-      <else>
-        <assign action="messageSave.do">
-        <assign new="0">
-      </if>
-      
-      
-      <call EditStart(action,["id", "offset", "new"], [request.id, request.offset, request.new])>
-         
-        <call EditReadonlyTextNormal(lang("message.id"), request.message.id)>
-        <call EditReadonlyTextNormal(lang("message.date"), request.message.webdbCreate.format(config["Mir.DefaultDateTimeFormat"]))>
-        <call EditTextNormal(lang("message.title"), 30, 30, "title", request.message.title)>
-        <call EditTextNormal(lang("message.creator"), 30, 30, "creator", request.message.creator)>
-
-        <call EditTextAreaNormal(lang("message.text"), "", "50", "5", "description", request.message.description)>
-      
-        <if request.new=="1">
-          <call EditSubmitButtonNormal(lang("insert"), "save")>
-        <else>
-          <call EditSubmitButtonNormal(lang("save"), "save")>
-        </if> 
-
-      <call EditEnd()>
-      
-      <if returnurl>
-        <call showBack(returnurl)>
-      <else>
-        <call showBack("messageList.do")>
-      </if>
-
-    <include "foot.tmpl">
-  </body>
-</html>
index 037cb20..c658d41 100755 (executable)
@@ -4,15 +4,13 @@
   <tr>
     <td align="right" valign="top">
       <a href="${config.actionRoot}?module=${module}&do=getMedia&id=${uploadedmedia.id}">
-      <img src="/img/${uploadedmedia.big_icon}" border=0></a>&nbsp;&nbsp;
+      <img src="${config.docRoot}/img/${uploadedmedia.info.bigIcon}" border=0></a>&nbsp;&nbsp;
     </td>
     <td valign="bottom" class="small">
-      ${lang("media.created")}: ${uploadedmedia.webdb_create}
-      <if uploadedmedia.webdb_lastchange>/ ${lang("media.changed")} ${uploadedmedia.webdb_lastchange}</if><br>
-      <if uploadedmedia.is_published=="1">${lang("media.published")}: ${uploadedmedia.publish_date} / ${uploadedmedia.publish_server}${uploadedmedia.publish_path}<br></if>
-      ${lang("media.format")}: ${uploadedmedia.mimetype} / ${uploadedmedia.media_descr}<br>
+      ${lang("media.created")}: ${uploadedmedia.creationdate.format(config["Mir.DefaultDateTimeFormat"])} 
+      ${lang("media.urls")}: ${uploadedmedia.publish_server}${uploadedmedia.publish_path}<br>
+      ${lang("media.format")}: ${uploadedmedia.info.mediaType}<br>
       ${lang("media.size")}: ${uploadedmedia.human_readable_size}<br>
-      ${lang("media.rights")}: <b>${uploadedmedia.rightsHashdata[to_rights]["name"]}</b><br>
     </td>
   </tr>
 </if>
index aa24a48..9cb10ce 100755 (executable)
     <list p.verbs as v>
     <tr <if grey=="1">class="listrow2"<else>class="listrow2"</if>>
       <td width="25"></td>
-      <if v.name=="all">
-        <td class="small text-alert">${v.name} [!]</td>
-      <else>
-        <td class="small">${v.name}</td>
-      </if>
+      <td class="small">${v.name}</td>
       <td class="small">${v.description}</td>
-      <td class="small"><a href="${config.actionRoot}?module=Producer&do=enqueue&producer=${utility.encodeURI(p.name)}&verb=${utility.encodeURI(v.name)}">${lang("producer.verb.enqueue")}</a>&nbsp;</td>
+     
+      <td class="small"><form style="margin: 0px; border: 0px; padding: 0px" method="post" action="${config.actionRoot}?module=Producer&do=enqueue&producer=${utility.encodeURI(p.name)}&verb=${utility.encodeURI(v.name)}"><input class="listbutton" type="submit" value="${lang("producer.verb.enqueue")}"></form></div>
+      </td>
     </tr>
     <if grey=="1"><assign grey="0"><else><assign grey="1"></if>
     </list>
     </tr>
   </if>
   <tr>
-    <td colspan="5" class="table-foot" align="left">
-      <br>
-      <input class="minorbutton" type="submit" value="${lang("producer.jobqueue.canceljobs")}">
-    </td>
+    <td colspan="5" class="table-foot" align="right">
+      <br><input class="minorbutton" name="cancelsome" type="submit" value="${lang("producer.jobqueue.canceljobs")}">
+      <br><input class="minorbutton" name="cancelall" type="submit" value="${lang("producer.jobqueue.cancelalljobs")}"></td>
   </tr>
 </table>
 </form>
index fd89391..145ef36 100755 (executable)
@@ -11,7 +11,7 @@
 
 <table border="0" width="100%">
   <tr>
-    <td valign="top" width="40%">
+    <td valign="top" >
     <!-- ###### left column ###### -->
     <p class="box-head"><b>${lang("start.administer.title")}</b></p>
     <p class="box"> 
@@ -27,7 +27,6 @@
       </list>
       <br>  
       <a href="${config.actionRoot}?module=Content&do=list&where=${utility.encodeURI("is_published='f'")}&order=${utility.encodeURI("webdb_create desc")}" >&gt; ${lang("start.content.not_published")}</a><br>
-      <a href="${config.actionRoot}?module=Content&do=list&where=${utility.encodeURI("id in (select content_id from content_x_media, media where media.id=media_id)")}&order=${utility.encodeURI("webdb_create desc")}">&gt; ${lang("start.content.with_media")}</a><br>
       <a href="${config.actionRoot}?module=Content&do=list&where=&order=${utility.encodeURI("webdb_lastchange desc")}">&gt; ${lang("start.content.last_changes")}</a><br>
       <a href="${config.actionRoot}?module=Content&do=list&where=${utility.encodeURI("not (comment is null or comment like '')")}&order=${utility.encodeURI("webdb_create desc")}">&gt; ${lang("start.content.with_comments")}</a><br>
       <br>
@@ -58,7 +57,7 @@
 
 <comment> Middle column </comment>
       
-    <td valign="top" width="30%">
+    <td valign="top" >
     
     <p class="box-head"><b>${lang("start.addandedit.title")}</b></p>
     <div class="box">
         <input type="hidden" name="do" value="edit">
         ${lang("start.content.open_by_id")}: 
         <input type="text" name="id" value="" size="7">
-        <input type="submit" value=" &gt; ">
+        <input class="majorbutton" type="submit" value=" &gt; ">
       </form>
       <form>
         <input type="hidden" name="module" value="Comment">
         <input type="hidden" name="do" value="edit">
         ${lang("start.comment.open_by_id")}: 
         <input type="text" name="id" value="" size="7">
-        <input type="submit" value=" &gt; ">
+        <input class="majorbutton" type="submit" value=" &gt; ">
       </form>
       
       
     <div class="box">
       
       <a href="${config.actionRoot}?module=Images&do=list">&gt; ${lang("start.images.title")}</a>&nbsp;
-      <a href="${config.actionRoot}?module=Images&do=add">[+]</a><br>
-
+      <a href="${config.actionRoot}?module=Images&do=add">[+]</a>
+      <form>
+        <input type="hidden" name="module" value="Images">
+        <input type="hidden" name="do" value="edit">
+        ${lang("start.images.open_by_id")}: 
+        <input type="text" name="id" value="" size="7">
+        <input class="majorbutton" type="submit" value=" &gt; ">
+      </form>
       <a href="${config.actionRoot}?module=Audio&do=list">&gt; ${lang("start.audio.title")}</a>&nbsp;
       <a href="${config.actionRoot}?module=Audio&do=add">[+]</a><br>
 
     
     
     <p class="box-head"><b>${lang("start.producers.title")}</b></p>
-    <p class="box">
-      <a href="${config.actionRoot}?module=Producer&do=produceAllNew">&gt; ${lang("start.producers.produceAllNew")}</a><br>
+    <div class="box">
+      <list recipes as s>
+        <form style="margin: 0px; border: 0px; padding: 0px" method="post" action="${config.actionRoot}">
+           <input type="hidden" name="module" value="Producer">
+           <input type="hidden" name="do" value="producerecipe">
+           <input type="hidden" name="recipe" value="${utility.encodeHTML(s)}">
+           <input class="majorbutton" type="submit" value="${lang("start.producers.recipe."+s)}">
+        </form>
+      </list>
+
       <a href="${config.actionRoot}?module=Producer&do=showProducerQueueStatus">&gt; ${lang("start.producers.advanced")}</a>
-    </p>
+    </div>
     
     <p class="box bg-neutral">
       <a href="${config.actionRoot}?module=Admin&do=superusermenu">${lang("start.superusermenu")}</a>   
 
 <comment> RIGHT COLUMN </comment>
 
-  <td valign="top" width="26%" rowspan="2">
+  <td valign="top" rowspan="2">
 
   <comment>internal messageboard</comment>
 
     <td colspan="3" valign="top">
       <p class="box-head"><b>${lang("start.search.title")}</b></p>
       <div class="box">
-        <call ContentSearch ("")>
+        <call ContentSearch("")>
       </div>
 
 <comment>      
index 2e627f1..e690901 100755 (executable)
     <p class="box">
     &gt; <a href="${config.actionRoot}?module=Topics&do=list">${lang("superusermenu.topics")}</a><br>
     &gt; <a href="${config.actionRoot}?module=ArticleType&do=list">${lang("superusermenu.articletypes")}</a><br>
+    &gt; <a href="${config.actionRoot}?module=MediaType&do=list">${lang("superusermenu.mediatypes")}</a><br>
     &gt; <a href="${config.actionRoot}?module=CommentStatus&do=list">${lang("superusermenu.comment_statuses")}</a><br>
     &gt; <a href="${config.actionRoot}?module=Users&do=list">${lang("superusermenu.users")}</a><br>
     &gt; <a href="${config.actionRoot}?module=Language&do=list">${lang("superusermenu.languages")}</a><br>
     &gt; <a href="${config.actionRoot}?module=Abuse">${lang("superusermenu.abuse")}</a><br>
+    &gt; <a href="${config.actionRoot}?module=Admin&amp;do=reloadconfiguration">${lang("superusermenu.reload")}</a><br>
     </p>
     </td>
       <td>&nbsp;  </td>
diff --git a/templates/admin/superusermenu.tmpl b/templates/admin/superusermenu.tmpl
deleted file mode 100755 (executable)
index 74d7d6d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<html>
-<head>
-  <title>${config["Mir.Name"]} | ${lang("superusermenu.htmltitle")}</title>
-  <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
-</head>
-
-<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-
-<include "head.template">
-
-<table width="95%">
-  <tbody>
-    <tr>
-    <td width="30%">  
-    <p class="box-head"><b>${lang("superusermenu.manage")}:</b></p>
-    <p class="box">
-    &gt; <a href="${utility.encodeLink(config.docRoot+"/admin/topicList.do")}">${lang("superusermenu.topics")}</a><br>
-    &gt; <a href="${config.actionRoot}?module=ArticleType&do=list">${lang("superusermenu.articletypes")}</a><br>
-    &gt; <a href="${config.actionRoot}?module=CommentStatus&do=list">${lang("superusermenu.comment_statuses")}</a><br>
-    &gt; <a href="${config.actionRoot}?module=Users&do=list">${lang("superusermenu.users")}</a><br>
-    &gt; <a href="${config.actionRoot}?module=Language&do=list">${lang("superusermenu.languages")}</a><br>
-    &gt; <a href="${config.actionRoot}?module=Abuse">${lang("superusermenu.abuse")}</a><br>
-    </p>
-    </td>
-      <td>&nbsp;  </td>
-      <td>&nbsp;  </td>
-    </tr>
-  </tbody>
-</table>
-<p><a class="link-box" href="${config.actionRoot}">[&lt;&lt;&lt;] ${lang("head.start")}</a></p>
-
-<include "foot.template">
-
-</body>
-</html>
-
diff --git a/templates/admin/topic.tmpl b/templates/admin/topic.tmpl
deleted file mode 100755 (executable)
index 179a838..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-  <head>
-    <title>${config["Mir.Name"]} | ${lang("topic.htmltitle")}</title>
-    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
-  <head>
-
-  <body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-    <include "FUNCTIONS.tmpl">
-    <include "head.tmpl">
-  
-      <if request.new && request.new=="1">
-        <assign action="topicSave.do">
-        <assign new=request.new>
-      <else>
-        <assign action="topicSave.do">
-        <assign new="0">
-      </if>
-      
-      <call EditStart(
-         action,
-         ["id", "new"],
-         [request.topic.id, request.new])>
-         
-        <call EditReadonlyTextNormal(lang("topic.id"), request.topic.id)>
-        <call EditPullDown(lang("topic.parenttopic"), "parentTopic", request.topics, "id", "title", request.topic.parentTopic.id, "","","")>
-        <call EditTextNormal(lang("topic.title"), 40, 255, "title", request.topic.title)>
-        <call EditTextAreaNormal(lang("topic.description"), "", 40, 3, "description", request.topic.description)>
-        <call EditTextNormal(lang("topic.filename"), 20, 255, "filename", request.topic.filename)>
-        <call EditTextNormal(lang("topic.main_url"), 40, 255, "mainUrl", request.topic.mainUrl)>
-        <call EditTextNormal(lang("topic.archive_url"), 40, 255, "archivUrl", request.topic.archivUrl)>
-        
-        
-      
-        <if new=="1">
-          <call EditSubmitButtonNormal(lang("insert"), "save")>
-        <else>
-          <call EditSubmitButtonNormal(lang("save"), "save")>
-        </if> 
-
-      <call EditEnd()>
-      
-      <if returnurl>
-        <call showBack(returnurl)>
-      <else>
-        <call showBack("topicList.do")>
-      </if>
-
-    <include "foot.tmpl">
-  </body>
-</html>
diff --git a/templates/admin/topiclist.tmpl b/templates/admin/topiclist.tmpl
deleted file mode 100755 (executable)
index da1a72f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<html>
-  <head>
-    <title>${config["Mir.Name"]} | ${lang("topiclist.htmltitle")}</title>
-    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
-  </head>
-
-  <body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
-
-    <include "FUNCTIONS.tmpl">
-    <include "head.tmpl">
-    
-    <call showAddOrBack("1", "topicAdd.do", "Admin", "superusermenu")>
-
-    <if request.topics>
-      <assign baselisturl = "topicList.do?offset=">
-      <call showPrevNextLinks(baselisturl+request.lastoffset, baselisturl+request.nextoffset, "left")>
-      <call EntityTable(request.topics, [
-           "title", 
-           "filename", 
-           "mainUrl", 
-           "archivUrl",
-           "description"], 
-           [ lang("topic.title"), 
-             lang("topic.filename"), 
-             lang("topic.main_url"), 
-             lang("topic.archive_url"), 
-             lang("topic.description")], 
-          request.offset, request.nextoffset, "", "topicDelete.do", "topicEdit.do", "topicList.do")>
-      <call showPrevNextLinks(baselisturl+request.lastoffset, baselisturl+request.nextoffset, "left")>
-      <call showAddOrBack("1", module, "Admin", "superusermenu")>
-    <else>
-      <P align="center">${lang("no_matches_found")}</p>
-    </if>
-
-    <include "foot.tmpl">
-  </body>
-</html>
-
-
index 72d0f8a..4780fbd 100755 (executable)
@@ -24,7 +24,7 @@
               <b>${lang("media.nr_of_media")} :</b><br>
             </td>
             <td class="listrow2">
-              <input type="text" size="3" name="nrmedia" value="${nrmedia}">&nbsp;&nbsp;<input type="submit" value="${lang("media.nr_of_media.submit")}">
+              <input type="text" size="3" name="nrmedia" value="${nrmedia}">&nbsp;&nbsp;<input type="submit" class="majorbutton" value="${lang("media.nr_of_media.submit")}">
             </td>
           </tr>
         </table>
       <input type="hidden" name="id" value="${uploadedmedia.id}">
     
       <table border="0">
-    
+      
+        <if new!="1">
+          <tr>
+            <td align="left" valign="top">
+              <call showButton(
+                "module="+module+"&do=showcomments&id="+uploadedmedia.id+"&returnurl="+utility.encodeURI(thisurl),
+                lang("media.comments"))> &nbsp;
+              <call showButton(
+                "module="+module+"&do=showarticles&id="+uploadedmedia.id+"&returnurl="+utility.encodeURI(thisurl),
+                lang("media.articles"))>
+              <br>
+              <br>
+            </td>
+          </tr>
+        </if>
+
+
         <include edittemplate>
       
         <tr><td colspan="2" class="x-small">&nbsp;</td></tr>
         <tr>
           <td colspan="2" align="right" class="table-foot">
             <if new=="1">
-              <input type="submit" name="save" value="${lang("insert")}">
+              <input type="submit" class="majorbutton" name="save" value="${lang("insert")}">
             <else>
               ${lang("media.is_published")} <input type="checkbox" name="is_published" value="1"<if uploadedmedia.is_published!="0" && uploadedmedia.is_published!=""> checked</if>>
-              &nbsp;&nbsp;<input type="submit" name="save" value="${lang("save")}">
+              &nbsp;&nbsp;<input type="submit" class="majorbutton" name="save" value="${lang("save")}">
             </if> 
           </td>
         </tr>
index ddef833..399a7da 100755 (executable)
@@ -9,51 +9,61 @@
   <include "FUNCTIONS.template">
   <include "head.template">
 
-<form action="${config.actionRoot}" method="post">
-  <input type="hidden" name="module" value="Users">
-  <input type="hidden" name="id" value="${user.id}">
-  <if passwordonly=="1">
-      <input type="hidden" name="do" value="updatepassword">
-  <else>
-    <if new=="1">
-      <input type="hidden" name="do" value="insert">
-    <else>
-      <input type="hidden" name="do" value="update">
-    </if>
-  </if>
+      <if passwordonly=="1">
+        <assign method="updatepassword">
+      <else>
+        <if new=="1">
+          <assign method="insert">
+        <else>
+          <assign method="update">
+        </if>
+      </if>
+
+      <call EditStart(
+         ["module", "id", "do"],
+         ["Users", user.id, method])>
+         
 
-  <table border="0">
     <if passwordonly=="1">
-      <call ReadonlyTextTableRow(lang("user.login"), user.login)>
-      <call PasswordTextInputTableRow (lang("user.oldpassword"), 40, 40, "oldpassword", "")>
+      <call EditReadonlyTextNormal(lang("user.login"), user.login)>
+      <call EditPasswordNormal(lang("user.oldpassword"), 40, 40, "oldpassword", "")>
     <else>
-      <call TextInputTableRow (lang("user.login"), 40, 40, "login", user.login)>
-      <call PasswordTextInputTableRow (lang("user.ownpassword"), 40, 40, "oldpassword", "")>
+      <if new!="1">
+        <call EditReadonlyTextNormal(lang("user.creationdate"), user.creationdate.formatted[config["Mir.DefaultDateTimeFormat"]])>
+        <call EditReadonlyTextNormal(lang("user.lastlogindate"), user.lastlogindate.formatted[config["Mir.DefaultDateTimeFormat"]])>
+      </if>
+      <call EditTextNormal (lang("user.login"), 40, 16, "login", user.login)>
+      <call EditPasswordNormal (lang("user.ownpassword"), 40, 40, "oldpassword", "")>
     </if>
-    <call PasswordTextInputTableRow (lang("user.password"), 40, 40, "newpassword", "")>
-    <call PasswordTextInputTableRow (lang("user.password2"), 40, 40, "newpassword2", "")>
+    <call EditPasswordNormal(lang("user.password"), 40, 40, "newpassword", "")>
+    <call EditPasswordNormal(lang("user.password2"), 40, 40, "newpassword2", "")>
+    
     <if passwordonly=="1">
-      <call ReadonlyTextTableRow(lang("user.admin"), user.is_admin)>
+      <call EditReadonlyTextNormal(lang("user.admin"), user.is_admin)>
     <else>
-      <call CheckboxTableRow(lang("user.admin"), "is_admin", user.is_admin)>
+      <call EditCheckboxNormal(lang("user.admin"), "is_admin", user.is_admin)>
+      <call EditCheckboxNormal(lang("user.is_disabled"), "is_disabled", user.is_disabled)>
+      <call EditTextNormal (lang("user.email"), 40, 255, "email", user.email)>
+      <call EditTextAreaNormal(lang("user.comment"), "", 40, 10, "comment", user.comment)>
+      <call EditTextAreaNormal(lang("user.profile"), "", 40, 10, "profile", user.profile)>
     </if>
-    <tr>
-    <td colspan="2" align="right" class="table-foot"> 
-      <span class="witetext">
-      <if new=="1">
-        <input type="submit" name="save" value="${lang("insert")}">
-      <else>
-        <input type="submit" name="save" value="${lang("save")}">
-      </if> 
-      </span>
-    </td>
-    </tr>
-  </table>
-</form>
-  <if passwordonly>
-    <call showBack("")>
+
+    <if new=="1">
+      <call EditSubmitButtonNormal(lang("insert"), "save")>
+    <else>
+      <call EditSubmitButtonNormal(lang("save"), "save")>
+    </if> 
+
+    <call EditEnd()>
+  
+  <if returnurl>
+    <call showBack(returnurl)>
   <else>
-    <call showBack("module=Users&amp;do=list")>
+    <if passwordonly>
+      <call showBack("")>
+    <else>
+      <call showBack("module=Users&amp;do=list")>
+    </if>
   </if>
 
   <include "foot.template">
index 4409c36..3b7bc0c 100755 (executable)
@@ -1,37 +1,19 @@
 <html>
-<head>
-<title>${lang("usererror.htmltitle")}</title>
-</head>
-<body>
-<include "templates/admin/head_nonavi.template">
-<table width="100%" border="0" align="center">
-  <tr bgcolor="#006600">
-    <td>
-      <div align="center"><h2><font color="Pink">${lang("usererror.title")}</font></h2>
-      </div>
-    </td>
-  </tr>
-  <tr>
-    <td>
-      <p>${lang("usererror.text")}
-    </td>
-  </tr>
-  <tr>
-    <td>
-      <p>
-      <p align="center"><font size="5" color="Red"><b> ${data.errorstring}</b></font>
-            <p>
-      <p> 
-    </td>
-  </tr>
-  <tr>
-    <td>
-      <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="-1">${lang("usererror.what_to_do")}
-      </a></font>
-      <p>
-    </td>
-  </tr>
-</table>
-<include "foot.template">
-</body>
+  <head>
+    <title>${config["Mir.Name"]} | ${lang("error.htmltitle")}</title>
+    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
+  </head>
+  <body>
+    <include "head.template">
+
+    <table width="70%" align="center"><tr><td>
+
+      <p class="box-head" align="center"><font size="+2"><b>${lang("usererror.title")}</b></font></p>
+      <p align="center" class="bg-neutral"><br><font color="red">${date.format(config["Mir.DefaultDateTimeFormat"])} -- ${errorstring}</font><br><br></p>
+      <p align="center">${lang("usererror.what_to_do")}</p>
+
+    </td></tr></table>
+
+    <include "foot.template">
+  </body>
 </html>
index c97ebfb..4aaee22 100755 (executable)
@@ -7,17 +7,61 @@
   <body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
         
     <include "FUNCTIONS.template">
+    <include "LISTFUNCTIONS.template">
     <include "head.template">
     
-    <call showAddOrBack(mayAddUsers, "Users", "Admin", "superusermenu")>
-
-    <if users>
-      <call showPrevNextLinks(prevurl, nexturl, "left")>
-      <call EntityTable(users, ["login","is_admin"], [lang("user.login"), lang("user.admin")], from, to, count, mayDeleteUsers, mayEditUsers, "Users")>
-      <call showPrevNextLinks(prevurl, nexturl, "left")>
+    <if mayEditUsers=="1">
       <call showAddOrBack(mayAddUsers, "Users", "Admin", "superusermenu")>
+
+      <if users>
+        <call showPrevNextLinks(prevurl, nexturl, "left")>
+        
+        
+    
+       
+    <call ListStart()>
+       <call ListHead([
+          lang("user.login"), 
+          lang("user.admin"), 
+          lang("user.is_disabled"), 
+          lang("user.creationdate"), 
+          lang("user.lastlogindate"), 
+          lang("user.comment"), 
+          lang("user.email")])>\r
+    <list users as u>    
+        <call ListEntry([
+          u.login,
+          u.is_admin,
+          u.is_disabled,
+          u.creationdate.format(config["Mir.DefaultDateTimeFormat"], config["Mir.DefaultTimezone"]),
+          u.lastlogindate.format(config["Mir.DefaultDateTimeFormat"], config["Mir.DefaultTimezone"]),
+          utility.prettyEncodeHTML(u.comment),
+          u.email],
+          "module=Users&id="+u.id, 
+          ["&do=delete&okurl="+utility.encodeURI(thisurl)+"&cancelurl="+utility.encodeURI(thisurl), "&do=edit"], 
+          [lang("delete"), lang("edit")])>
+    </list>\r
+    <call ListEnd()>\r
+
+        <call showPrevNextLinks(prevurl, nexturl, "left")>
+        <call showAddOrBack(mayAddUsers, "Users", "Admin", "superusermenu")>
+      <else>
+        <P align="center">${lang("no_matches_found")}</p>
+      </if>
     <else>
-      <P align="center">${lang("no_matches_found")}</p>
+      <if users>
+        <call showPrevNextLinks(prevurl, nexturl, "left")>
+        
+          <call EntityTable(users, 
+               ["login"], 
+               [lang("user.login")], 
+               from, to, count, mayDeleteUsers, mayEditUsers, "Users")>
+        
+        <call showPrevNextLinks(prevurl, nexturl, "left")>
+        <call showAddOrBack(mayAddUsers, "Users", "Admin", "superusermenu")>
+      <else>
+        <P align="center">${lang("no_matches_found")}</p>
+      </if>
     </if>
 
     <include "foot.template">
index 037cb20..c658d41 100755 (executable)
@@ -4,15 +4,13 @@
   <tr>
     <td align="right" valign="top">
       <a href="${config.actionRoot}?module=${module}&do=getMedia&id=${uploadedmedia.id}">
-      <img src="/img/${uploadedmedia.big_icon}" border=0></a>&nbsp;&nbsp;
+      <img src="${config.docRoot}/img/${uploadedmedia.info.bigIcon}" border=0></a>&nbsp;&nbsp;
     </td>
     <td valign="bottom" class="small">
-      ${lang("media.created")}: ${uploadedmedia.webdb_create}
-      <if uploadedmedia.webdb_lastchange>/ ${lang("media.changed")} ${uploadedmedia.webdb_lastchange}</if><br>
-      <if uploadedmedia.is_published=="1">${lang("media.published")}: ${uploadedmedia.publish_date} / ${uploadedmedia.publish_server}${uploadedmedia.publish_path}<br></if>
-      ${lang("media.format")}: ${uploadedmedia.mimetype} / ${uploadedmedia.media_descr}<br>
+      ${lang("media.created")}: ${uploadedmedia.creationdate.format(config["Mir.DefaultDateTimeFormat"])} 
+      ${lang("media.urls")}: ${uploadedmedia.publish_server}${uploadedmedia.publish_path}<br>
+      ${lang("media.format")}: ${uploadedmedia.info.mediaType}<br>
       ${lang("media.size")}: ${uploadedmedia.human_readable_size}<br>
-      ${lang("media.rights")}: <b>${uploadedmedia.rightsHashdata[to_rights]["name"]}</b><br>
     </td>
   </tr>
 </if>