- multiple "producer" shortcuts possible
authorzapata <zapata>
Wed, 24 Sep 2003 02:08:04 +0000 (02:08 +0000)
committerzapata <zapata>
Wed, 24 Sep 2003 02:08:04 +0000 (02:08 +0000)
- some fixes here and there

13 files changed:
bundles/admin_en.properties
source/default.properties
source/mircoders/localizer/MirProducerLocalizer.java
source/mircoders/localizer/basic/MirBasicProducerLocalizer.java
source/mircoders/servlet/ServletModuleAdmin.java
source/mircoders/servlet/ServletModuleContent.java
source/mircoders/servlet/ServletModuleProducer.java
source/tool/BundleTool.java
templates/admin/FUNCTIONS_media.template
templates/admin/mediafolderlist.template
templates/admin/producerqueue.template
templates/admin/start_admin.template
web/style/admin.css

index cdff95a..f136cba 100755 (executable)
@@ -1,6 +1,6 @@
 ########## admin ##########
 # language: english
-# $Id: admin_en.properties,v 1.48.2.13 2003/09/19 23:34:14 zapata Exp $
+# $Id: admin_en.properties,v 1.48.2.14 2003/09/24 02:08:04 zapata Exp $
 
 languagename=English
 
@@ -312,6 +312,8 @@ start.allcommentswithstatus={0}
 
 start.producers.title=GENERATE MANUALLY
 start.producers.produceAllNew=generate all new
+start.producers.recipe.allnew=generate all new
+
 start.producers.advanced=advanced page (use with care!)
 
 start.administer.title=ADMINISTER
@@ -524,4 +526,4 @@ user.error.incorrectpassword= Incorrect password
 
 ########## infomessages ##########
 infomessage.htmltitle = Information
-infomessage.produceAllNewAddedToQueue = Your request has been added to the queue.
+infomessage.recipeAddedToQueue = Your request has been added to the queue.
index 4b8708a..f7d3a0b 100755 (executable)
@@ -143,15 +143,10 @@ Mir.Localizer.OpenPosting.ContentProducers= media.new;articles.changed;startpage
 Mir.Localizer.OpenPosting.CommentProducers= articles.changed;synchronization.run
 
 # Which producers need to be called after the "produce all new" link is clicked from admin
-Mir.Localizer.Producer.AllNewProducers= media.new;articles.changed;startpage.run;synchronization.run
+Mir.Localizer.Producer.ProducerRecipes= 
+  allnew = media.new;articles.changed;startpage.run;synchronization.run
 
 
-#note that you can't make pdf's without making fo's
-#this is actually now set in producers.xml
-#but these summarize what is said in there for the benefit of OpenMir
-GenerateFO=yes
-GeneratePDF=yes
-
 #use rsync to mirror the website to a remote-host
 Rsync=no
 Rsync.Script.Path=/var/www/bin/rsync-copy
index 7090d48..b389f8f 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 mircoders.localizer;
@@ -36,5 +36,7 @@ import mir.producer.ProducerFactory;
 public interface MirProducerLocalizer {
   public List factories() throws MirLocalizerExc, MirLocalizerFailure;
   public ProducerFactory getFactoryForName(String aName);
-  public void produceAllNew();
+
+  public List getRecipeNames() throws MirLocalizerExc, MirLocalizerFailure;
+  public void produceRecipe(String aName) throws MirLocalizerExc, MirLocalizerFailure;
 }
index a54ba00..7515714 100755 (executable)
-/*
- * Copyright (C) 2001, 2002 The Mir-coders group
- *
- * This file is part of Mir.
- *
- * Mir is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Mir is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Mir; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with  any library licensed under the Apache Software License, 
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library 
- * (or with modified versions of the above that use the same license as the above), 
- * and distribute linked combinations including the two.  You must obey the 
- * GNU General Public License in all respects for all of the code used other than 
- * the above mentioned libraries.  If you modify this file, you may extend this 
- * exception to your version of the file, but you are not obligated to do so.  
- * If you do not wish to do so, delete this exception statement from your version.
- */
-package mircoders.localizer.basic;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import mir.entity.adapter.EntityAdapterModel;
-import mir.generator.Generator;
-import mir.generator.WriterEngine;
-import mir.log.LoggerWrapper;
-import mir.producer.ProducerFactory;
-import mir.producer.reader.DefaultProducerNodeBuilders;
-import mir.producer.reader.ProducerConfigReader;
-import mir.producer.reader.ProducerNodeBuilderLibrary;
-import mir.util.FileMonitor;
-import mircoders.global.MirGlobal;
-import mircoders.global.ProducerEngine;
-import mircoders.localizer.MirLocalizerExc;
-import mircoders.localizer.MirLocalizerFailure;
-import mircoders.localizer.MirProducerLocalizer;
-import mircoders.producer.reader.SupplementalProducerNodeBuilders;
-
-public class MirBasicProducerLocalizer implements MirProducerLocalizer {
-  private List producerFactories;
-  private Map nameToFactory;
-  private List allNewProducerTasks;
-
-  protected FileMonitor fileMonitor;
-  protected EntityAdapterModel model;
-  protected Generator.GeneratorLibrary generatorLibrary;
-  protected WriterEngine writerEngine;
-
-  protected LoggerWrapper logger;
-
-  public MirBasicProducerLocalizer() {
-    try {
-      logger = new LoggerWrapper("Localizer.Basic.Producer");
-
-      String allNewProducers = MirGlobal.config().getString("Mir.Localizer.Producer.AllNewProducers");
-      allNewProducerTasks = ProducerEngine.ProducerTask.parseProducerTaskList(allNewProducers);
-
-      producerFactories = new Vector();
-      model = MirGlobal.localizer().dataModel().adapterModel();
-      generatorLibrary = MirGlobal.localizer().generators().makeProducerGeneratorLibrary();
-      writerEngine = MirGlobal.localizer().generators().makeWriterEngine();
-      nameToFactory = new HashMap();
-    }
-    catch (Throwable t) {
-      logger.error("MirBasicProducerLocalizer(): Exception "+t.getMessage());
-      model = new EntityAdapterModel();
-    }
-  }
-
-  public List factories() throws MirLocalizerExc {
-    if (fileMonitor==null || producerFactories == null || fileMonitor.hasChanged()) {
-      try {
-        List newProducers = new Vector();
-        FileMonitor newFileMonitor = new FileMonitor();
-        setupFactories(newProducers, newFileMonitor);
-
-        producerFactories = newProducers;
-        fileMonitor = newFileMonitor;
-        logger.info("MirBasicProducerLocalizer.factories(): successfully setup factories");
-
-        nameToFactory.clear();
-        Iterator i = producerFactories.iterator();
-        while (i.hasNext()) {
-          ProducerFactory factory = (ProducerFactory) i.next();
-          nameToFactory.put(factory.getName(), factory);
-        }
-      }
-      catch (Throwable t) {
-        logger.error("MirBasicProducerLocalizer.factories(): Unable to setup factories: "+t.getMessage());
-        t.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE));
-      }
-    }
-
-    return producerFactories;
-  };
-
-  protected void setupProducerNodeBuilderLibrary(ProducerNodeBuilderLibrary aLibrary) throws MirLocalizerFailure {
-    try {
-      DefaultProducerNodeBuilders.registerBuilders(
-          aLibrary, model, generatorLibrary, writerEngine,
-          MirGlobal.config().getString("Home"), MirGlobal.config().getString("Producer.StorageRoot"));
-      SupplementalProducerNodeBuilders.registerBuilders(aLibrary, model);
-    }
-    catch (Throwable t) {
-      throw new MirLocalizerFailure(t.getMessage(), t);
-    }
-  }
-
-  protected void setupFactories(List aFactories, FileMonitor aFileMonitor) throws MirLocalizerExc, MirLocalizerFailure {
-    ProducerConfigReader reader;
-    ProducerNodeBuilderLibrary library = new ProducerNodeBuilderLibrary();
-    setupProducerNodeBuilderLibrary(library);
-    List usedFiles = new Vector();
-    Iterator i;
-
-    aFileMonitor.clear();
-    reader = new ProducerConfigReader();
-    reader.parseFile(MirGlobal.config().getString("Home") + File.separatorChar + MirGlobal.config().getString("Mir.Localizer.ProducerConfigFile"), library, aFactories, usedFiles);
-
-    i = usedFiles.iterator();
-    while (i.hasNext())
-      aFileMonitor.addFile((File) i.next());
-  }
-
-  public void produceAllNew() {
-    MirGlobal.producerEngine().addTasks(allNewProducerTasks);
-  };
-
-  public ProducerFactory getFactoryForName(String aName) {
-    try {
-      factories();
-    }
-    catch (Throwable t) {
-    }
-
-    return (ProducerFactory) nameToFactory.get(aName);
-  }
-}
+/*\r
+ * Copyright (C) 2001, 2002 The Mir-coders group\r
+ *\r
+ * This file is part of Mir.\r
+ *\r
+ * Mir is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Mir is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Mir; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ *\r
+ * In addition, as a special exception, The Mir-coders gives permission to link\r
+ * the code of this program with  any library licensed under the Apache Software License,\r
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library\r
+ * (or with modified versions of the above that use the same license as the above),\r
+ * and distribute linked combinations including the two.  You must obey the\r
+ * GNU General Public License in all respects for all of the code used other than\r
+ * the above mentioned libraries.  If you modify this file, you may extend this\r
+ * exception to your version of the file, but you are not obligated to do so.\r
+ * If you do not wish to do so, delete this exception statement from your version.\r
+ */\r
+package mircoders.localizer.basic;\r
+\r
+import java.io.File;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Vector;\r
+\r
+import mir.entity.adapter.EntityAdapterModel;\r
+import mir.generator.Generator;\r
+import mir.generator.WriterEngine;\r
+import mir.log.LoggerWrapper;\r
+import mir.producer.ProducerFactory;\r
+import mir.producer.reader.DefaultProducerNodeBuilders;\r
+import mir.producer.reader.ProducerConfigReader;\r
+import mir.producer.reader.ProducerNodeBuilderLibrary;\r
+import mir.util.*;\r
+import mircoders.global.MirGlobal;\r
+import mircoders.global.ProducerEngine;\r
+import mircoders.localizer.MirLocalizerExc;\r
+import mircoders.localizer.MirLocalizerFailure;\r
+import mircoders.localizer.MirProducerLocalizer;\r
+import mircoders.producer.reader.SupplementalProducerNodeBuilders;\r
+\r
+public class MirBasicProducerLocalizer implements MirProducerLocalizer {\r
+  private List producerFactories;\r
+  private Map nameToFactory;\r
+\r
+  private Map producerRecipes;\r
+  private List producerRecipeNames;\r
+\r
+  protected FileMonitor fileMonitor;\r
+  protected EntityAdapterModel model;\r
+  protected Generator.GeneratorLibrary generatorLibrary;\r
+  protected WriterEngine writerEngine;\r
+\r
+  protected LoggerWrapper logger;\r
+\r
+  public MirBasicProducerLocalizer() {\r
+    try {\r
+      logger = new LoggerWrapper("Localizer.Basic.Producer");\r
+\r
+      producerRecipes = new HashMap();\r
+      producerRecipeNames = new Vector();\r
+\r
+      String[] recipes = MirGlobal.config().getStringArray("Mir.Localizer.Producer.ProducerRecipes");\r
+      for (int i = 0; i<recipes.length; i++) {\r
+        try {\r
+          List parts = StringRoutines.separateString(recipes[i], "=");\r
+          if (parts.size() == 2) {\r
+            producerRecipes.put(parts.get(0), ProducerEngine.ProducerTask.parseProducerTaskList( (String) parts.get(1)));\r
+            producerRecipeNames.add(parts.get(0));\r
+          }\r
+          else {\r
+            throw new Exception("'=' expected");\r
+          }\r
+        }\r
+        catch (Throwable t) {\r
+          logger.error("Error while processing producer recipe '" + recipes[i] + "': " + t.toString());\r
+        }\r
+      }\r
+\r
+      // for backward compatibility:\r
+      String allNewProducers = MirGlobal.config().getString("Mir.Localizer.Producer.AllNewProducers");\r
+      if (allNewProducers!=null && allNewProducers.length()>0) {\r
+        producerRecipes.put("allnew", ProducerEngine.ProducerTask.parseProducerTaskList(allNewProducers));\r
+        producerRecipeNames.add("allnew");\r
+      }\r
+\r
+      producerFactories = new Vector();\r
+      model = MirGlobal.localizer().dataModel().adapterModel();\r
+      generatorLibrary = MirGlobal.localizer().generators().makeProducerGeneratorLibrary();\r
+      writerEngine = MirGlobal.localizer().generators().makeWriterEngine();\r
+      nameToFactory = new HashMap();\r
+    }\r
+    catch (Throwable t) {\r
+      logger.error("MirBasicProducerLocalizer(): Exception "+t.getMessage());\r
+      model = new EntityAdapterModel();\r
+    }\r
+  }\r
+\r
+  public List getRecipeNames() throws MirLocalizerExc, MirLocalizerFailure {\r
+    return producerRecipeNames;\r
+  }\r
+\r
+  public void produceRecipe(String aName) throws MirLocalizerExc, MirLocalizerFailure {\r
+    if (producerRecipes.containsKey(aName))\r
+      MirGlobal.producerEngine().addTasks((List) producerRecipes.get(aName));\r
+    else\r
+      throw new MirLocalizerExc("Unknown recipe name: " + aName);\r
+  }\r
+\r
+  public List factories() throws MirLocalizerExc {\r
+    if (fileMonitor==null || producerFactories == null || fileMonitor.hasChanged()) {\r
+      try {\r
+        List newProducers = new Vector();\r
+        FileMonitor newFileMonitor = new FileMonitor();\r
+        setupFactories(newProducers, newFileMonitor);\r
+\r
+        producerFactories = newProducers;\r
+        fileMonitor = newFileMonitor;\r
+        logger.info("MirBasicProducerLocalizer.factories(): successfully setup factories");\r
+\r
+        nameToFactory.clear();\r
+        Iterator i = producerFactories.iterator();\r
+        while (i.hasNext()) {\r
+          ProducerFactory factory = (ProducerFactory) i.next();\r
+          nameToFactory.put(factory.getName(), factory);\r
+        }\r
+      }\r
+      catch (Throwable t) {\r
+        logger.error("MirBasicProducerLocalizer.factories(): Unable to setup factories: "+t.getMessage());\r
+        t.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE));\r
+      }\r
+    }\r
+\r
+    return producerFactories;\r
+  };\r
+\r
+  protected void setupProducerNodeBuilderLibrary(ProducerNodeBuilderLibrary aLibrary) throws MirLocalizerFailure {\r
+    try {\r
+      DefaultProducerNodeBuilders.registerBuilders(\r
+          aLibrary, model, generatorLibrary, writerEngine,\r
+          MirGlobal.config().getString("Home"), MirGlobal.config().getString("Producer.StorageRoot"));\r
+      SupplementalProducerNodeBuilders.registerBuilders(aLibrary, model);\r
+    }\r
+    catch (Throwable t) {\r
+      throw new MirLocalizerFailure(t.getMessage(), t);\r
+    }\r
+  }\r
+\r
+  protected void setupFactories(List aFactories, FileMonitor aFileMonitor) throws MirLocalizerExc, MirLocalizerFailure {\r
+    ProducerConfigReader reader;\r
+    ProducerNodeBuilderLibrary library = new ProducerNodeBuilderLibrary();\r
+    setupProducerNodeBuilderLibrary(library);\r
+    List usedFiles = new Vector();\r
+    Iterator i;\r
+\r
+    aFileMonitor.clear();\r
+    reader = new ProducerConfigReader();\r
+    reader.parseFile(MirGlobal.config().getString("Home") + File.separatorChar + MirGlobal.config().getString("Mir.Localizer.ProducerConfigFile"), library, aFactories, usedFiles);\r
+\r
+    i = usedFiles.iterator();\r
+    while (i.hasNext())\r
+      aFileMonitor.addFile((File) i.next());\r
+  }\r
+\r
+  public ProducerFactory getFactoryForName(String aName) {\r
+    try {\r
+      factories();\r
+    }\r
+    catch (Throwable t) {\r
+    }\r
+\r
+    return (ProducerFactory) nameToFactory.get(aName);\r
+  }\r
+}\r
index ec85a08..db2cdf1 100755 (executable)
@@ -91,6 +91,7 @@ public class ServletModuleAdmin extends ServletModule
       mergeData.put("searcharticletype", null);\r
       mergeData.put("searchorder", null);\r
       mergeData.put("selectarticleurl", null);\r
+      mergeData.put("recipes", MirGlobal.localizer().producers().getRecipeNames());\r
 \r
       ServletHelper.generateResponse(aResponse.getWriter(), mergeData, startTemplate);\r
     }\r
index 63dd5a9..c9ef69f 100755 (executable)
@@ -61,7 +61,7 @@ import mircoders.storage.DatabaseContentToTopics;
  *  ServletModuleContent -\r
  *  deliver html for the article admin form.\r
  *\r
- * @version $Id: ServletModuleContent.java,v 1.52.2.10 2003/09/21 16:40:41 zapata Exp $\r
+ * @version $Id: ServletModuleContent.java,v 1.52.2.11 2003/09/24 02:08:04 zapata Exp $\r
  * @author rk, mir-coders\r
  *\r
  */\r
@@ -384,11 +384,6 @@ public class ServletModuleContent extends ServletModule
 \r
       responseData.put("topics", topicsList);\r
 \r
-/*\r
-      responseData.put("topics",\r
-          new EntityIteratorAdapter("", configuration.getString("Mir.Localizer.Admin.TopicListOrder"),\r
-          20, MirGlobal.localizer().dataModel().adapterModel(), "topic"));\r
-*/\r
       responseData.put("returnurl", requestParser.getParameter("returnurl"));\r
       responseData.put("thisurl", urlBuilder.getQuery());\r
 \r
index d8281ee..e1e7940 100755 (executable)
@@ -161,10 +161,11 @@ public class ServletModuleProducer extends ServletModule
     }\r
   }\r
 \r
-  public void produceAllNew(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+  public void producerecipe(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
     try {\r
-      MirGlobal.localizer().producers().produceAllNew();\r
-      showMessage(aRequest, aResponse, "produceAllNewAddedToQueue", "", "");\r
+      String recipe = aRequest.getParameter("recipe");\r
+      MirGlobal.localizer().producers().produceRecipe(recipe);\r
+      showMessage(aRequest, aResponse, "recipeAddedToQueue", recipe, "");\r
     }\r
     catch (Throwable t) {\r
       throw new ServletModuleFailure(t);\r
index e44345b..52e28f7 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.
  */
 
@@ -34,7 +34,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
-import java.util.Iterator;
+import java.util.*;
 
 import mir.util.ExceptionFunctions;
 import mir.util.PropertiesManipulator;
@@ -219,6 +219,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 +270,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 +301,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 39d73b4..af0c577 100755 (executable)
@@ -7,7 +7,7 @@
 
 <function MediaSearch (module)>
 
-<form method="post" action="${config.actionRoot}">
+<form method="GET" action="${config.actionRoot}">
 
 <input type="hidden" name="module" value="${module}">
 <input type="hidden" name="do" value="search">
index 3d7a30a..5399c91 100755 (executable)
@@ -6,38 +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 ListStart()>\r
-    <call ListHead([
-           lang("mediafolder.name"), 
-           lang("mediafolder.location"),
-           lang("mediafolder.comment"), ])>
-
-      <call EntityTable(entities, ["name", "place","comment"], 
-         [ ], from, to, count, "1", "1", module)>
-
-
-    <list entities as e>    
-        <call ExtendedListEntry([
-          utility.prettyEncodeHTML(e.name), 
-          utility.prettyEncodeHTML(e.place), 
-          utility.prettyEncodeHTML(e.comment)], 
-          ["module=Abuse&id="+f.id"&do=edit", "module=Abuse&id="+f.id"&do=delete"], 
-          [lang("edit"), lang("delete")])
-        >
-    </list>\r
-    <call ListEnd()>\r
-
-
       <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>
index 9466eec..9cb10ce 100755 (executable)
     <tr <if grey=="1">class="listrow2"<else>class="listrow2"</if>>
       <td width="25"></td>
       <td class="small">${v.name}</td>
-      <td class="small">${v.description}</td><td class="small"> <form 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> </td></tr>
+      <td class="small">${v.description}</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>
     
index 2931a85..bf84e04 100755 (executable)
     
     
     <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}?module=Producer&do=producerecipe&amp;recipe=${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>   
index a62a3fc..fb5d8ce 100755 (executable)
@@ -188,17 +188,23 @@ a:hover           {
 
 .majorbutton {
        background-color:#DDDDDD; 
+       font-size:0.9em;
        color: #990000;
        font-weight: bold;
   border: 1px solid #990000;
-  bevel: 2px solid #990000;
+       margin:2px;
+       padding:2px;
+       padding-left:8px;
+       padding-right:8px;
 }
 
 .minorbutton {
        background-color:#DDDDDD; 
        color: #990000;
-       font-size:1em;
+       font-size:0.9em;
+  border: 1px solid #990000;
        padding:2px;
+       margin:2px;
        padding-left:8px;
        padding-right:8px;
 //     border:1px solid #990000;  
@@ -209,7 +215,8 @@ a:hover             {
        color: #990000;
        font-size:0.9em;
        margin: 0px;
-       padding:0px;
+  border: 1px solid #990000;
+       padding:2px;
 /*     
        padding-left:2px;
        padding-right:2px;