+ /**
+ * 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, TemplateModelRoot extra,
+ PrintWriter out, Locale locale)
+ throws HTMLParseException {
+ if (out==null) throw new HTMLParseException("no outputstream");
+ Template tmpl = getTemplateFor(templateFilename);
+ if (tmpl == null) throw new HTMLParseException("no template: " + templateFilename);
+ if (tmr==null) tmr = new SimpleHash();
+
+ /** @todo what is this for? (rk) */
+ String session="";
+ if (res!=null) {
+ session=res.encodeURL("");
+ }
+
+ // @todo wouldn't it be so much easier to just pass the whole damn config
+ // Hash here from Mirconfig... ??????? than we could access arbitrary config
+ // values in the templates. -mh
+ // put standard configuration into tempalteRootmodel
+ SimpleHash configHash = new SimpleHash();
+ configHash.put("defEncoding", new SimpleScalar(defEncoding));
+ configHash.put("producerDocRoot", 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));
+ configHash.put("docRoot", new SimpleScalar(docRoot));
+ configHash.put("now", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
+ configHash.put("actionRoot", new SimpleScalar(actionRoot+session));
+ configHash.put("videoHost", new SimpleScalar(videoHost));
+ configHash.put("audioHost", new SimpleScalar(audioHost));
+ configHash.put("imageHost", new SimpleScalar(imageHost));
+ configHash.put("imagePath", new SimpleScalar(imagePath));
+ configHash.put("mirVersion", new SimpleScalar(MirConfig.getProp("Mir.Version")));
+ // this conform to updated freemarker syntax
+ configHash.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );
+ configHash.put("generateFO", new SimpleScalar(generateFO));
+ configHash.put("generatePDF", new SimpleScalar(generatePDF));
+
+ SimpleHash outPutHash = new SimpleHash();
+
+ if(extra!=null){
+ outPutHash.put("extra",extra);
+ try{
+ while(((SimpleList)extra).hasNext()){
+ theLog.printDebugInfo(((SimpleList)extra).next().toString());
+ }
+ }catch(Exception e){}
+ }
+ outPutHash.put("data",tmr);
+ outPutHash.put("config", configHash);
+
+ MessageResources messages = MessageResources.getMessageResources("bundles.admin");
+ outPutHash.put("lang", new MessageMethodModel(locale, messages) );
+
+ outPutHash.put("encodeHTML", new EncodeHTMLMethodModel() );
+
+ tmpl.process(outPutHash,out);
+ }