session-tracking over get-param, if browser does not allow cookies.
authoridfx <idfx>
Mon, 10 Sep 2001 15:31:15 +0000 (15:31 +0000)
committeridfx <idfx>
Mon, 10 Sep 2001 15:31:15 +0000 (15:31 +0000)
source/Mir.java
source/mir/misc/HTMLTemplateProcessor.java
source/mir/servlet/AbstractServlet.java
source/mir/servlet/ServletModule.java
source/mircoders/servlet/ServletModuleLinksImcs.java
templates-dist/de/login.template
templates-dist/de/start_admin.template
templates-dist/en/login.template

index 3778913..72432f0 100755 (executable)
@@ -30,6 +30,7 @@ public class Mir extends AbstractServlet
   private static ModuleUsers usersModule=null;
   private static ModuleMessage messageModule=null;
   private static boolean confed=false;
+  public HttpSession session;
 
 
   public void doGet(HttpServletRequest req, HttpServletResponse res)
@@ -51,15 +52,14 @@ public class Mir extends AbstractServlet
       confed = getConfig(req);
     }
 
-               HttpSession session = req.getSession(true);
-                       
+    session = req.getSession(true);
+      
     if (req.getServerPort() == 443) http="https"; else http="http";
     res.setContentType("text/html");
     String moduleName = req.getParameter("module");
-    
 
     if(session.getAttribute("Language")==null){
-      setLanguage(req,getAcceptLanguage(req));
+      setLanguage(session,getAcceptLanguage(req));
     }
 
     // Authentifizierung
@@ -78,38 +78,42 @@ public class Mir extends AbstractServlet
         // login successful
 
         //if accept-language!=selected language change language
-        if(!getLanguage(req).equals(lang)){
-          setLanguage(req,lang);
+        if(!getLanguage(req,session).equals(lang)){
+          setLanguage(session,lang);
         }
 
         theLog.printInfo("--login: successful! setting uid: " + userEntity.getId());
         session.setAttribute("login.uid", userEntity);
         theLog.printDebugInfo("--login: trying to retrieve login.target");
         String target = (String)session.getAttribute("login.target");
+        
         if (target != null) {
           theLog.printDebugInfo("Redirect: "+target);
           int serverPort = req.getServerPort();
           String redirect = "";
+          String redirectString ="";
+          
+          
           if(serverPort==80){
-            redirect = "<html><head><meta http-equiv=refresh content=\0421;URL="
-                    + res.encodeURL(http +"://" + req.getServerName() + target)
-                    + "\"></head><body>going " + target + "</body></html>";
+            redirect=res.encodeURL(http + "://" + req.getServerName() + target);
+            redirectString = "<html><head><meta http-equiv=refresh content=\"1;URL="
+                    + redirect
+                    + "\"></head><body>going <a href=\"" + redirect + "\">Mir</a></body></html>";
           } else {
-            redirect = "<html><head><meta http-equiv=refresh content=\0421;URL="
-                    + res.encodeURL(http +"://" + req.getServerName() +":"+ serverPort + target)
-                    + "\"></head><body>going " + target + "</body></html>";
+            redirect=res.encodeURL(http + "://" + req.getServerName() + ":" +req.getServerPort() + target);
+            redirectString = "<html><head><meta http-equiv=refresh content=\"1;URL="
+                    + redirect
+                    + "\"></head><body>going <a href=\"" + redirect + "\">Mir</a></body></html>";
           }
-          //res.getWriter().println(redirect);
-                                       
-                                       res.encodeRedirectURL(http + "://" + req.getServerName()
-                                                                                                                                       + ":" +req.getServerPort() + target);
-                                       
+          res.getWriter().println(redirectString);
+          
+          
+          //res.sendRedirect(redirect);
+          
         } else {
-                                       theLog.printDebugInfo("testurl: "+res.encodeURL(""));
-                                       theLog.printDebugInfo("querystring: "+req.getQueryString());
           // redirecting to default target
-          //theLog.printDebugInfo("--login: no target - redirecting to default");
-          _sendStartPage(res,req, res.getWriter(),userEntity);
+          theLog.printDebugInfo("--login: no target - redirecting to default");
+          _sendStartPage(res,req,res.getWriter(),userEntity);
         }
         return;
       } // if login succesful
@@ -136,6 +140,7 @@ public class Mir extends AbstractServlet
 
     // Bei blossem Serveltaufruf redirect auf Standardstarttemplate
     if (moduleName == null || moduleName.equals("")) {
+      theLog.printDebugInfo("no module: redirect to standardpage");
       _sendStartPage(res,req, res.getWriter(),userEntity);
       return;
     }
@@ -194,12 +199,16 @@ public class Mir extends AbstractServlet
   // Redirect-methods
   private void _sendLoginPage(HttpServletResponse res,HttpServletRequest req, PrintWriter out) {
     String loginTemplate = "login.template";
+    String sessionUrl=res.encodeURL("");
+    //session = req.getSession(true);
     try {
       theLog.printDebugInfo("login: "+lang);
       if(lang==null){
         lang=getAcceptLanguage(req);
       }
-      HTMLTemplateProcessor.process(res,lang+"/"+loginTemplate, new SimpleHash(), out);
+      SimpleHash mergeData = new SimpleHash();
+      mergeData.put("session",sessionUrl);
+      HTMLTemplateProcessor.process(res,lang+"/"+loginTemplate, mergeData, out);
     } catch(HTMLParseException e) {
       handleError(res, out, "fehler in logintemplate.");
     }
@@ -207,16 +216,15 @@ public class Mir extends AbstractServlet
 
   private void _sendStartPage(HttpServletResponse res, HttpServletRequest req,PrintWriter out, EntityUsers userEntity) {
     String startTemplate = "start_admin.template";
-               String sessionUrl=res.encodeURL("");
-               theLog.printDebugInfo("testurl: "+sessionUrl);
+    String sessionUrl=res.encodeURL("");
     try {
       // merge with logged in user and messages
       SimpleHash mergeData = new SimpleHash();
-                       mergeData.put("session",sessionUrl);
+      mergeData.put("session",sessionUrl);
       mergeData.put("login_user", HTMLTemplateProcessor.makeSimpleHash(userEntity));
       if (messageModule == null) messageModule = new ModuleMessage(DatabaseMessages.getInstance());
       mergeData.put("messages", HTMLTemplateProcessor.makeSimpleList(messageModule.getByWhereClause(null, "webdb_create desc",0,10)));
-      HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+startTemplate, mergeData,out);
+      HTMLTemplateProcessor.process(res,getLanguage(req,session)+"/"+startTemplate, mergeData,out);
     }
     catch(Exception e) {
       handleError( res,out, "error while trying to send startpage. " + e.toString());
index 1a61330..195adee 100755 (executable)
@@ -21,319 +21,321 @@ import javax.servlet.http.*;
 public final class HTMLTemplateProcessor {
 
     public static String                templateDir;
-               private static FileTemplateCache    templateCache;
-               private static Logfile                theLog;
-               private static String                 docRoot;
-               private static String                 actionRoot;
-               private static String                 productionHost;
-               private static String               audioHost;
-               private static String               videoHost;
-               private static String               imageHost;
-               private static String                             openAction;
+    private static FileTemplateCache    templateCache;
+    private static Logfile              theLog;
+    private static String               docRoot;
+    private static String               actionRoot;
+    private static String               productionHost;
+    private static String               audioHost;
+    private static String               videoHost;
+    private static String               imageHost;
+    private static String               openAction;
     protected static String producerDocRoot = Configuration.getProperty("Producer.DocRoot");
-       protected static String producerStorageRoot = Configuration.getProperty("Producer.StorageRoot");
+    protected static String producerStorageRoot = Configuration.getProperty("Producer.StorageRoot");
 
 
-               //
-               // Initialisierung
+    //
+    // Initialisierung
 
-               static {
+    static {
       templateDir = Configuration.getProperty("Home") + Configuration.getProperty("HTMLTemplateProcessor.Dir");
-                       templateCache = new FileTemplateCache(templateDir);
-                       templateCache.setLoadingPolicy(templateCache.LOAD_ON_DEMAND);
-                       //templateCache.startAutoUpdate();
-                       theLog = Logfile.getInstance(Configuration.getProperty("Home") + Configuration.getProperty("HTMLTemplateProcessor.Logfile"));
-                       docRoot = Configuration.getProperty("HTMLTemplateProcessor.DocRoot");
-                       actionRoot = Configuration.getProperty("HTMLTemplateProcessor.ActionRoot");
-                       openAction = Configuration.getProperty("Producer.OpenAction");
-                       productionHost = Configuration.getProperty("Producer.ProductionHost");
-                       videoHost = Configuration.getProperty("Producer.VideoHost");
-                       audioHost = Configuration.getProperty("Producer.AudioHost");
-                       imageHost = Configuration.getProperty("Producer.Image.Host");
+      templateCache = new FileTemplateCache(templateDir);
+      templateCache.setLoadingPolicy(templateCache.LOAD_ON_DEMAND);
+      //templateCache.startAutoUpdate();
+      theLog = Logfile.getInstance(Configuration.getProperty("Home") + Configuration.getProperty("HTMLTemplateProcessor.Logfile"));
+      docRoot = Configuration.getProperty("HTMLTemplateProcessor.DocRoot");
+      actionRoot = Configuration.getProperty("HTMLTemplateProcessor.ActionRoot");
+      openAction = Configuration.getProperty("Producer.OpenAction");
+      productionHost = Configuration.getProperty("Producer.ProductionHost");
+      videoHost = Configuration.getProperty("Producer.VideoHost");
+      audioHost = Configuration.getProperty("Producer.AudioHost");
+      imageHost = Configuration.getProperty("Producer.Image.Host");
       producerDocRoot = Configuration.getProperty("Producer.DocRoot");
       producerStorageRoot = Configuration.getProperty("Producer.StorageRoot");
 
 
-               }
+    }
+
+  /**
+   * Privater Konstruktor, um versehentliche Instantiierung zu verhindern
+   */
+  private HTMLTemplateProcessor () {
+  }
+
+
+    //
+    //  process-Methoden zum Mischen verschiedener Datenstrukturen mit HTML-Templates
+
+
+  /**
+   * Wandelt <code>anEntity</code> in freemarker-Struktur um, mischt die Daten mit
+   * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
+   * <code>out</code>
+   *
+   * @param templateFilename
+   * @param anEntity
+   * @param out
+   * @exception HTMLParseException
+   */
+
+    public static void process(String templateFilename, Entity anEntity, PrintWriter out)
+      throws HTMLParseException {
+        if (anEntity == null)  throw new HTMLParseException("Entity leer!");
+        else process(templateFilename, anEntity, out);
+    }
+
+
+      /**
+   * Wandelt Liste mit Entities <code>entList</code> in freemarker-Struktur um, mischt die Daten mit
+   * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
+   * <code>out</code>
+   *
+   * @param templateFilename
+   * @param entList
+   * @param out
+   * @exception HTMLParseException
+   */
+    public static void process(HttpServletResponse res,String templateFilename, EntityList entList, PrintWriter out)
+      throws HTMLParseException {
+      process(res, templateFilename,  entList,  (String)null, (TemplateModelRoot)null,  out);
+    }
+
+  /**
+   * Wandelt Entitylist in freemarker-Struktur um, fügt <code>additionalModel</code>
+   * unter dem Namen <code>additionalModelName</code> ein und mischt die Daten mit
+   * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
+   * <code>out</code>
+   *
+   * @param templateFilename
+   * @param entList
+   * @param additionalModelName
+   * @param additionalModel
+   * @param out
+   * @exception HTMLParseException
+   */
+    public static void process(HttpServletResponse res,String templateFilename, EntityList entList, String additionalModelName,
+             TemplateModelRoot additionalModel, PrintWriter out)
+      throws HTMLParseException {
+
+      SimpleHash modelRoot = new SimpleHash();
+
+      if (entList == null) {
+         //theLog.printInfo("Keine Daten! Suche erfolglos.");
+         process(null,templateFilename, modelRoot, out);
+      } else {
+        try {
+          modelRoot = makeSimpleHashWithEntitylistInfos(entList);
+          //
+          // Hilfskruecke um mal ein Popup mit reinzunhemen ..
+          if (additionalModelName != null && additionalModel != null)
+              modelRoot.put(additionalModelName, additionalModel);
+
+          process(res,templateFilename, modelRoot, out);
+        } catch (StorageObjectException e) {
+          throw new HTMLParseException(e.toString());
+        }
+      }
+    }
+
+  /**
+   * Wandelt HashMap <code>mergeData</code> in freemarker-Struktur und mischt diese mit
+   * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
+   * <code>out</code>
+   *
+   * @param templateFilename
+   * @param mergeData
+   * @param out
+   * @exception HTMLParseException
+   */
+    public static void process(HttpServletResponse res,String templateFilename, HashMap mergeData, PrintWriter out)
+      throws HTMLParseException {
+      process(res,templateFilename, makeSimpleHash(mergeData), out);
+    }
+
+  /**
+   * Gibt Template <code>templateFilename</code> an den PrintWriter
+   * <code>out</code>
+   *
+   * @param templateFilename
+   * @param mergeData
+   * @param out
+   * @exception HTMLParseException
+   */
+    public static void process(String templateFilename, PrintWriter out)
+      throws HTMLParseException {
+      process(null,templateFilename, (TemplateModelRoot)null, out);
+    }
+
 
   /**
-        * Privater Konstruktor, um versehentliche Instantiierung zu verhindern
-        */
-       private HTMLTemplateProcessor () {
-       }
-
-
-               //
-               //  process-Methoden zum Mischen verschiedener Datenstrukturen mit HTML-Templates
-
-
-       /**
-        * Wandelt <code>anEntity</code> in freemarker-Struktur um, mischt die Daten mit
-        * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
-        * <code>out</code>
-        *
-        * @param templateFilename
-        * @param anEntity
-        * @param out
-        * @exception HTMLParseException
-        */
-
-               public static void process(String templateFilename, Entity anEntity, PrintWriter out)
-                       throws HTMLParseException {
-                               if (anEntity == null)  throw new HTMLParseException("Entity leer!");
-                               else process(templateFilename, anEntity, out);
-               }
-
-
-       /**
-        * Wandelt Liste mit Entities <code>entList</code> in freemarker-Struktur um, mischt die Daten mit
-        * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
-        * <code>out</code>
-        *
-        * @param templateFilename
-        * @param entList
-        * @param out
-        * @exception HTMLParseException
-        */
-               public static void process(HttpServletResponse res,String templateFilename, EntityList entList, PrintWriter out)
-                       throws HTMLParseException {
-                       process(res, templateFilename,  entList,  (String)null, (TemplateModelRoot)null,  out);
-               }
-
-       /**
-        * Wandelt Entitylist in freemarker-Struktur um, fügt <code>additionalModel</code>
-        * unter dem Namen <code>additionalModelName</code> ein und mischt die Daten mit
-        * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
-        * <code>out</code>
-        *
-        * @param templateFilename
-        * @param entList
-        * @param additionalModelName
-        * @param additionalModel
-        * @param out
-        * @exception HTMLParseException
-        */
-               public static void process(HttpServletResponse res,String templateFilename, EntityList entList, String additionalModelName,
-                                                TemplateModelRoot additionalModel, PrintWriter out)
-                       throws HTMLParseException {
-
-                       SimpleHash modelRoot = new SimpleHash();
-
-                       if (entList == null) {
-                                //theLog.printInfo("Keine Daten! Suche erfolglos.");
-                                process(null,templateFilename, modelRoot, out);
-                       } else {
-                               try {
-                                       modelRoot = makeSimpleHashWithEntitylistInfos(entList);
-                                       //
-                                       // Hilfskruecke um mal ein Popup mit reinzunhemen ..
-                                       if (additionalModelName != null && additionalModel != null)
-                                                       modelRoot.put(additionalModelName, additionalModel);
-
-                                       process(res,templateFilename, modelRoot, out);
-                               } catch (StorageObjectException e) {
-                                       throw new HTMLParseException(e.toString());
-                               }
-                       }
-               }
-
-       /**
-        * Wandelt HashMap <code>mergeData</code> in freemarker-Struktur und mischt diese mit
-        * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
-        * <code>out</code>
-        *
-        * @param templateFilename
-        * @param mergeData
-        * @param out
-        * @exception HTMLParseException
-        */
-               public static void process(HttpServletResponse res,String templateFilename, HashMap mergeData, PrintWriter out)
-                       throws HTMLParseException {
-                       process(res,templateFilename, makeSimpleHash(mergeData), out);
-               }
-
-       /**
-        * Gibt Template <code>templateFilename</code> an den PrintWriter
-        * <code>out</code>
-        *
-        * @param templateFilename
-        * @param mergeData
-        * @param out
-        * @exception HTMLParseException
-        */
-               public static void process(String templateFilename, PrintWriter out)
-                       throws HTMLParseException {
-                       process(null,templateFilename, (TemplateModelRoot)null, out);
-               }
-
-
-       /**
-        * Mischt die freemarker-Struktur <code>tmr</code> mit
-        * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
-        * <code>out</code>
-        *
-        * @param templateFilename
-        * @param mergeData
-        * @param out
-        * @exception HTMLParseException
-        */
-               public static void process(HttpServletResponse res,String templateFilename, TemplateModelRoot tmr, PrintWriter out)
-                       throws HTMLParseException {
-                       if (out==null) throw new HTMLParseException("KEIN OUTPUTSTREAM");
-                       Template tmpl = getTemplateFor(templateFilename);
-                       if (tmpl == null) throw new HTMLParseException("KEIN TEMPLATE: " + templateFilename);
-                       if (tmr==null) tmr = new SimpleHash();
-                       String session=null;
-                       if (res!=null) {
-                               session=res.encodeURL("");
-                       }
+   * Mischt die freemarker-Struktur <code>tmr</code> mit
+   * Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
+   * <code>out</code>
+   *
+   * @param templateFilename
+   * @param mergeData
+   * @param out
+   * @exception HTMLParseException
+   */
+    public static void process(HttpServletResponse res,String templateFilename, TemplateModelRoot tmr, PrintWriter out)
+      throws HTMLParseException {
+      if (out==null) throw new HTMLParseException("KEIN OUTPUTSTREAM");
+      Template tmpl = getTemplateFor(templateFilename);
+      if (tmpl == null) throw new HTMLParseException("KEIN TEMPLATE: " + templateFilename);
+      if (tmr==null) tmr = new SimpleHash();
+      
+      String session=null;
+      if (res!=null) {
+        session=res.encodeURL("");
+      }
 
       // put standard configuration into tempalteRootmodel
-                       SimpleHash configHash = new SimpleHash();
-                       configHash.put("docroot", new SimpleScalar(producerDocRoot));
-                       configHash.put("storageroot", new SimpleScalar(producerStorageRoot));
-                       configHash.put("productionhost", new SimpleScalar(productionHost));
-                       configHash.put("openaction", new SimpleScalar(openAction));
+      SimpleHash configHash = new SimpleHash();
+      configHash.put("docroot", new SimpleScalar(producerDocRoot));
+      configHash.put("storageroot", new SimpleScalar(producerStorageRoot));
+      configHash.put("productionhost", new SimpleScalar(productionHost));
+      configHash.put("openaction", new SimpleScalar(openAction));
+      configHash.put("actionRootLogin",new SimpleScalar(actionRoot));
 
 
       tmr.put("docRoot", new SimpleScalar(docRoot));
-                       tmr.put("now", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
-                       tmr.put("actionRoot", new SimpleScalar(actionRoot+session));
-                       tmr.put("openAction", new SimpleScalar(openAction));
-                       tmr.put("productionHost", new SimpleScalar(productionHost));
-                       tmr.put("videoHost", new SimpleScalar(videoHost));
-                       tmr.put("audioHost", new SimpleScalar(audioHost));
-                       tmr.put("imageHost", new SimpleScalar(imageHost));
+      tmr.put("now", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
+      tmr.put("actionRoot", new SimpleScalar(actionRoot+session));
+      tmr.put("openAction", new SimpleScalar(openAction));
+      tmr.put("productionHost", new SimpleScalar(productionHost));
+      tmr.put("videoHost", new SimpleScalar(videoHost));
+      tmr.put("audioHost", new SimpleScalar(audioHost));
+      tmr.put("imageHost", new SimpleScalar(imageHost));
 
       tmr.put("config", configHash);
-                       tmpl.process(tmr, out);
+      tmpl.process(tmr, out);
+
+    }
+
+
+  /**
+   *   Wandelt eine Entity-Liste in eine SimpleList von SimpleHashes um.
+   *   @param aList ist eine Liste von Entity
+   *   @return eine freemarker.template.SimpleList von SimpleHashes.
+   */
+  public static SimpleList makeSimpleList(EntityList aList) throws StorageObjectException
+  {
+    SimpleList      simpleList = new SimpleList();
+    if (aList != null) {
+      for(int i=0;i<aList.size();i++){
+        simpleList.add(makeSimpleHash(aList.elementAt(i)));
+      }
+    }
+    return simpleList;
+  }
+
+  /**
+   *  Konvertiert ein EntityList in ein freemarker.template.SimpleHash-Modell. Im Hash
+   *  sind die einzelnen Entities ueber ihre id zu erreichen.
+   *  @param aList ist die EntityList
+   *  @return SimpleHash mit den entsprechenden freemarker Daten
+   *
+   */
+  public static SimpleHash makeSimpleHash(EntityList aList) throws StorageObjectException
+  {
+    SimpleHash      simpleHash = new SimpleHash();
+    Entity          currentEntity;
+
+    if (aList != null) {
+      for (int i=0;i<aList.size();i++) {
+         currentEntity = (Entity)aList.elementAt(i);
+         simpleHash.put(currentEntity.getId(), makeSimpleHash(currentEntity));
+      }
+    }
+    return simpleHash;
+  }
+
+  /**
+   *  Konvertiert ein Entity in ein freemarker.template.SimpleHash-Modell
+   *  @param entity ist die Entity
+   *  @return SimpleHash mit den entsprechenden freemarker Daten
+   *
+   */
+    public static SimpleHash makeSimpleHash(Entity entity) {
+      if (entity != null) {
+        return makeSimpleHash(entity.getValues());
+      }
+      else {
+        //theLog.printWarning("Entity ist <null>");
+        return null;
+      }
+    }
+
+  /**
+   *  Konvertiert ein Hashtable mit den keys und values als String
+   *  in ein freemarker.template.SimpleHash-Modell
+   *  @param mergeData der HashMap mit den String / String Daten
+   *  @return SimpleHash mit den entsprechenden freemarker Daten
+   *
+   */
+  public static SimpleHash makeSimpleHash(HashMap mergeData)
+  {
+    SimpleHash modelRoot = new SimpleHash();
+    String aField;
+    if (mergeData != null) {
+      Set set = mergeData.keySet();
+      Iterator it =  set.iterator();
+      for (int i=0; i<set.size();i++)  {
+        aField = (String)it.next();
+        modelRoot.put(aField, (String)mergeData.get(aField));
+      }
+    }
+    return modelRoot;
+  }
 
-               }
 
+  /**
+   * Wandelt EntityListe in SimpleHash um, und versieht die Liste mit StandardInfos,
+   * die aus EntityList kommen.
+   *
+   * @param entList
+   * @return SimpleHash mit Entity-Daten und ZusatzInfos.
+   * @exception StorageObjectException
+   */
+    public static SimpleHash makeSimpleHashWithEntitylistInfos(EntityList entList) throws StorageObjectException {
+      SimpleHash modelRoot = new SimpleHash();
+      if (entList!=null) {
+                modelRoot.put("contentlist", makeSimpleList(entList));
+                modelRoot.put("count", new SimpleScalar((new Integer(entList.getCount())).toString()));
+          if (entList.getWhere()!=null) {
+            modelRoot.put("where", new SimpleScalar(entList.getWhere()));
+            modelRoot.put("where_encoded", new SimpleScalar(URLEncoder.encode(entList.getWhere())));
+          }
+
+          if(entList.getOrder()!=null) {
+            modelRoot.put("order", new SimpleScalar(entList.getOrder()));
+            modelRoot.put("order_encoded", new SimpleScalar(URLEncoder.encode(entList.getOrder())));
+          }
+          modelRoot.put("from", new SimpleScalar((new Integer(entList.getFrom())).toString()));
+          modelRoot.put("to", new SimpleScalar((new Integer(entList.getTo())).toString()));
+
+          if (entList.hasNextBatch())
+            modelRoot.put("next", new SimpleScalar((new Integer(entList.getNextBatch())).toString()));
+          if (entList.hasPrevBatch())
+            modelRoot.put("prev", new SimpleScalar((new Integer(entList.getPrevBatch())).toString()));
+      }
+      return modelRoot;
+    }
 
   /**
-        *   Wandelt eine Entity-Liste in eine SimpleList von SimpleHashes um.
-        *   @param aList ist eine Liste von Entity
-        *   @return eine freemarker.template.SimpleList von SimpleHashes.
-        */
-       public static SimpleList makeSimpleList(EntityList aList) throws StorageObjectException
-       {
-               SimpleList      simpleList = new SimpleList();
-               if (aList != null) {
-                       for(int i=0;i<aList.size();i++){
-                               simpleList.add(makeSimpleHash(aList.elementAt(i)));
-                       }
-               }
-               return simpleList;
-       }
-
-       /**
-        *  Konvertiert ein EntityList in ein freemarker.template.SimpleHash-Modell. Im Hash
-        *  sind die einzelnen Entities ueber ihre id zu erreichen.
-        *  @param aList ist die EntityList
-        *  @return SimpleHash mit den entsprechenden freemarker Daten
-        *
-        */
-       public static SimpleHash makeSimpleHash(EntityList aList) throws StorageObjectException
-       {
-               SimpleHash      simpleHash = new SimpleHash();
-               Entity          currentEntity;
-
-               if (aList != null) {
-                       for (int i=0;i<aList.size();i++) {
-                                currentEntity = (Entity)aList.elementAt(i);
-                                simpleHash.put(currentEntity.getId(), makeSimpleHash(currentEntity));
-                       }
-               }
-               return simpleHash;
-       }
-
-       /**
-        *  Konvertiert ein Entity in ein freemarker.template.SimpleHash-Modell
-        *  @param entity ist die Entity
-        *  @return SimpleHash mit den entsprechenden freemarker Daten
-        *
-        */
-               public static SimpleHash makeSimpleHash(Entity entity) {
-                       if (entity != null) {
-                               return makeSimpleHash(entity.getValues());
-                       }
-                       else {
-                               //theLog.printWarning("Entity ist <null>");
-                               return null;
-                       }
-               }
-
-       /**
-        *  Konvertiert ein Hashtable mit den keys und values als String
-        *  in ein freemarker.template.SimpleHash-Modell
-        *  @param mergeData der HashMap mit den String / String Daten
-        *  @return SimpleHash mit den entsprechenden freemarker Daten
-        *
-        */
-       public static SimpleHash makeSimpleHash(HashMap mergeData)
-       {
-               SimpleHash modelRoot = new SimpleHash();
-               String aField;
-               if (mergeData != null) {
-                       Set set = mergeData.keySet();
-                       Iterator it =  set.iterator();
-                       for (int i=0; i<set.size();i++)  {
-                               aField = (String)it.next();
-                               modelRoot.put(aField, (String)mergeData.get(aField));
-                       }
-               }
-               return modelRoot;
-       }
-
-
-       /**
-        * Wandelt EntityListe in SimpleHash um, und versieht die Liste mit StandardInfos,
-        * die aus EntityList kommen.
-        *
-        * @param entList
-        * @return SimpleHash mit Entity-Daten und ZusatzInfos.
-        * @exception StorageObjectException
-        */
-               public static SimpleHash makeSimpleHashWithEntitylistInfos(EntityList entList) throws StorageObjectException {
-                       SimpleHash modelRoot = new SimpleHash();
-                       if (entList!=null) {
-                                                               modelRoot.put("contentlist", makeSimpleList(entList));
-                                                               modelRoot.put("count", new SimpleScalar((new Integer(entList.getCount())).toString()));
-                                       if (entList.getWhere()!=null) {
-                                               modelRoot.put("where", new SimpleScalar(entList.getWhere()));
-                                               modelRoot.put("where_encoded", new SimpleScalar(URLEncoder.encode(entList.getWhere())));
-                                       }
-
-                                       if(entList.getOrder()!=null) {
-                                               modelRoot.put("order", new SimpleScalar(entList.getOrder()));
-                                               modelRoot.put("order_encoded", new SimpleScalar(URLEncoder.encode(entList.getOrder())));
-                                       }
-                                       modelRoot.put("from", new SimpleScalar((new Integer(entList.getFrom())).toString()));
-                                       modelRoot.put("to", new SimpleScalar((new Integer(entList.getTo())).toString()));
-
-                                       if (entList.hasNextBatch())
-                                               modelRoot.put("next", new SimpleScalar((new Integer(entList.getNextBatch())).toString()));
-                                       if (entList.hasPrevBatch())
-                                               modelRoot.put("prev", new SimpleScalar((new Integer(entList.getPrevBatch())).toString()));
-                       }
-                       return modelRoot;
-               }
-
-       /**
-        * Private Methode, um für templateFilename das Template zu bekommen.
-        * @param templateFilename
-        * @return Template
-        * @exception HTMLParseException
-        */
-       private static Template getTemplateFor(String templateFilename) throws HTMLParseException
-               {
-                       if (templateFilename!=null) return templateCache.getTemplate(templateFilename);
-                       else {
-                               theLog.printError("CACHE (ERR): Unknown template: " + templateFilename);
-                               throw new HTMLParseException("Templatedatei: "+ templateFilename + " nicht gefunden!");
-                       }
-               }
+   * Private Methode, um für templateFilename das Template zu bekommen.
+   * @param templateFilename
+   * @return Template
+   * @exception HTMLParseException
+   */
+  private static Template getTemplateFor(String templateFilename) throws HTMLParseException
+    {
+      if (templateFilename!=null) return templateCache.getTemplate(templateFilename);
+      else {
+        theLog.printError("CACHE (ERR): Unknown template: " + templateFilename);
+        throw new HTMLParseException("Templatedatei: "+ templateFilename + " nicht gefunden!");
+      }
+    }
 
 
     public static void stopAutoUpdate(){
index a52e212..1a19445 100755 (executable)
@@ -27,31 +27,29 @@ public abstract class AbstractServlet extends HttpServlet {
    * get the configration
    */
   protected boolean getConfig(HttpServletRequest req) {
-               Configuration.initConfig(getInitParameter("Config"));
-               theLog = Logfile.getInstance(Configuration.getProperty("Home") + Configuration.getProperty("Mir.Logfile"));
-               theLog.printInfo(super.getServletName() + " started.");
-               return true;
-       }
+    Configuration.initConfig(getInitParameter("Config"));
+    theLog = Logfile.getInstance(Configuration.getProperty("Home") + Configuration.getProperty("Mir.Logfile"));
+    theLog.printInfo(super.getServletName() + " started.");
+    return true;
+  }
 
   /**
    * Bind the language to the session
    */
-  protected void setLanguage(HttpServletRequest req, String language){
-    HttpSession session = req.getSession();
+  protected void setLanguage(HttpSession session, String language){
     session.setAttribute("Language",language);
   }
 
   /**
    * Get the session-binded language
    */
-  protected String getLanguage(HttpServletRequest req){
-    HttpSession session = req.getSession(true);
+  protected String getLanguage(HttpServletRequest req, HttpSession session){
     String lang = (String)session.getAttribute("Language");
     if(lang==null || lang==""){
       return getAcceptLanguage(req);
     } else {
-                       return lang;
-               }
+      return lang;
+    }
   }
 
   /**
index d276b78..9827329 100755 (executable)
@@ -46,7 +46,7 @@ public abstract class ServletModule {
    * get the session binded language
    */
   public String getLanguage(HttpServletRequest req){
-    HttpSession session = req.getSession(true);
+    HttpSession session = req.getSession(false);
     String language = (String)session.getAttribute("Language");
     if(language==null){
       language=Configuration.getProperty("StandardLanguage");
index 12e10ee..761d8fb 100755 (executable)
@@ -59,7 +59,7 @@ public class ServletModuleLinksImcs extends ServletModule
       modelRoot.put("contentlist",HTMLTemplateProcessor.makeSimpleList(theList));
 
       if (theList == null || theList.getCount() == 0 || theList.getCount()>1){
-        HTMLTemplateProcessor.process(getLanguage(req)+"/"+templateObjektString, modelRoot, res.getWriter());
+        HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateObjektString, modelRoot, res.getWriter());
 
       } else {
         deliver(req, res, modelRoot, templateObjektString);
index 3df3f20..63cc8ad 100755 (executable)
@@ -9,7 +9,7 @@
        </script>
 
   </head>
-  <body onLoad="placeFocus()">>
+  <body onLoad="placeFocus()">
        <include "head_nonavi.template">
     <center>
        <p><font face="Verdana, Arial, Helvetica, sans-serif" size="-1">Dieser Bereich steht nur authorisierten 
@@ -18,7 +18,7 @@
                Bitte meldet Euch bei der <a href="mailto:imc-germany@indymedia.org"><font color="#663399">Redaktionsliste</font></a>.
                </font></p>
        <hr>
-    <form method="post" action="${actionRoot}">
+    <form method="post" action="${config.actionRootLogin}">
        <input type="hidden" name="module" value="login">
                <table border="0" cellpadding="2" cellspacing="0" bgcolor="#006600">
                        <tr bgcolor="#663399">
index 25eff83..aea62da 100755 (executable)
@@ -15,7 +15,7 @@
                <b>OPENPOSTINGS</b></font>
 
         <p>
-               <a href="${actionRoot}${session}?module=Content&do=listop&order=webdb_create+desc">
+               <a href="${actionRoot}?module=Content&do=listop&order=webdb_create+desc">
                <img src="${docRoot}/img/pointgris.gif" border=0>bearbeiten</a>
 
                <p>
index 0476f11..8666cff 100755 (executable)
@@ -9,7 +9,7 @@
        <p><font face="Verdana, Arial, Helvetica, sans-serif" size="-1">some welcome text etc.\r
                </font></p>\r
        <hr>\r
-       <form method="post" action="${actionRoot}">\r
+       <form method="post" action="${config.actionRootLogin}">\r
        <input type="hidden" name="module" value="login">\r
                <table border="0" cellpadding="2" cellspacing="0" bgcolor="#006600">\r
                        <tr bgcolor="#663399">\r