indy.nl updates
authorzapata <zapata>
Sat, 6 Jul 2002 11:34:58 +0000 (11:34 +0000)
committerzapata <zapata>
Sat, 6 Jul 2002 11:34:58 +0000 (11:34 +0000)
source/OpenMir.java
source/mirlocal/indymedia.nl/IndyNLDataModelLocalizer.java
source/mirlocal/indymedia.nl/IndyNLOpenPostingLocalizer.java
source/mirlocal/indymedia.nl/IndyNLProducerAssistantLocalizer.java
source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java

index b855083..2683ef1 100755 (executable)
@@ -25,7 +25,7 @@ import mircoders.storage.*;
 
 
 public class OpenMir extends AbstractServlet {
-  
+
   //private static boolean                confed=false;
   private static String lang;
   public HttpSession session;
@@ -49,9 +49,17 @@ public class OpenMir extends AbstractServlet {
     session = req.getSession();
 
     if(session.getAttribute("Language")==null){
-      setLanguage(session,getAcceptLanguage(req));
+      if (req.getParameter("language")!=null) {
+        setLanguage(session, req.getParameter("language"));
+      }
+      else {
+        setLanguage(session, getAcceptLanguage(req));
+      }
     }
 
+    if (req.getParameter("language")!=null)
+      setLocale(session, new Locale(req.getParameter("language"), "") );
+
     res.setContentType("text/html");
     try {
       ServletModuleDispatch.dispatch(ServletModuleOpenIndy.getInstance(),req,res);
@@ -69,14 +77,14 @@ public class OpenMir extends AbstractServlet {
   }
 
   private void handleUserError(HttpServletRequest req, HttpServletResponse res,
-                                                                                                                        PrintWriter out, String errorString) {
+                               PrintWriter out, String errorString) {
     try {
       theLog.printError(errorString);
       SimpleHash modelRoot = new SimpleHash();
       modelRoot.put("errorstring", new SimpleScalar(errorString));
       modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
       HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.UserErrorTemplate"),
-                                                                                                                                               modelRoot, out, req.getLocale() );
+                                    modelRoot, out, req.getLocale() );
       out.close();
     }
     catch (Exception e) {
@@ -92,9 +100,9 @@ public class OpenMir extends AbstractServlet {
       SimpleHash modelRoot = new SimpleHash();
       modelRoot.put("errorstring", new SimpleScalar(errorString));
       modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(
-                                                                                                                                                                                        new GregorianCalendar())));
+                                               new GregorianCalendar())));
       HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.ErrorTemplate"),
-                                                                                                                                               modelRoot,out, req.getLocale());
+                                    modelRoot,out, req.getLocale());
       out.close();
     }
     catch (Exception e) {
index 983524a..5815fb4 100755 (executable)
@@ -10,8 +10,8 @@ public class IndyNLDataModelLocalizer extends MirBasicDataModelLocalizer {
     super.constructContentAdapterDefinition( anEntityAdapterDefinition );
 
     try {
-
-      anEntityAdapterDefinition.addCalculatedField("to_hiddencomments", new ContentToHiddenCommentsField());
+      anEntityAdapterDefinition.addCalculatedField("to_trashedcomments", new ContentToTrashedCommentsField());
+      anEntityAdapterDefinition.addCalculatedField("trashedcommentcount", new ContentTrashedCommentCountField());
       anEntityAdapterDefinition.addCalculatedField("commentcount", new ContentCommentCountField());
     }
     catch (Throwable t) {
@@ -20,11 +20,11 @@ public class IndyNLDataModelLocalizer extends MirBasicDataModelLocalizer {
   }
 
 
-  protected class ContentToHiddenCommentsField implements EntityAdapterDefinition.CalculatedField {
+  protected class ContentToTrashedCommentsField implements EntityAdapterDefinition.CalculatedField {
     public Object getValue(EntityAdapter anEntityAdapter) {
       try {
         return anEntityAdapter.getRelation(
-                    "to_media="+anEntityAdapter.get("id")+" and is_published='1'",
+                    "to_media="+anEntityAdapter.get("id")+" and is_published='0'",
                     "webdb_create",
                     "comment" );
       }
@@ -46,4 +46,17 @@ public class IndyNLDataModelLocalizer extends MirBasicDataModelLocalizer {
       }
     }
   }
+
+  protected class ContentTrashedCommentCountField implements EntityAdapterDefinition.CalculatedField {
+    public Object getValue(EntityAdapter anEntityAdapter) {
+      try {
+        return Integer.toString(
+            DatabaseComment.getInstance().getSize(
+                  "to_media="+anEntityAdapter.get("id")+" and is_published='0'"));
+      }
+      catch (Throwable t) {
+        throw new RuntimeException(t.getMessage());
+      }
+    }
+  }
 }
index 4c5fd18..537d7b1 100755 (executable)
@@ -7,11 +7,13 @@ import mircoders.localizer.basic.*;
 public class IndyNLOpenPostingLocalizer extends MirBasicOpenPostingLocalizer {
 
   public void afterContentPosting() {
-    super.afterContentPosting();
+    MirGlobal.producerEngine().addJob("media", "new");
+    MirGlobal.producerEngine().addJob("content", "new");
+    MirGlobal.producerEngine().addJob("startpage", "(default)");
+    MirGlobal.producerEngine().addJob("synchronization", "run");
   }
 
   public void afterCommentPosting() {
-    MirGlobal.producerEngine().addJob("startpage", "all");
     super.afterCommentPosting();
   }
 }
index ec22992..834a078 100755 (executable)
@@ -10,6 +10,7 @@ public class IndyNLProducerAssistantLocalizer extends MirBasicProducerAssistantL
     Map articleTypeMap = (Map) aValueSet.get("articletype");
     articleTypeMap.put("static", "5");
     articleTypeMap.put("promotednewswire", "6");
-    articleTypeMap.put("trashed", "7");
+    articleTypeMap.put("opentrashed", "7");
+    articleTypeMap.put("trashed", "8");
   };
 }
index 843381c..1d27eec 100755 (executable)
@@ -14,6 +14,26 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
     EntityEnumeratingProducerNode contentNode = null;
 
     try {
+      // trashed comments
+      contentNode =
+          new EntityEnumeratingProducerNode( "content", model, "content",
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/trashedcomments.template",
+                    "${config.storageRoot}/trashed/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.trashed.shtml"
+                )
+              )
+            )
+          );
+
+      contentNode.addVerb( "all", "is_published='1' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "" );
+      contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "" );
+
+      aProducerNode.addSubNode( contentNode );
+
+
+      // ordinary articles
       contentNode =
           new EntityEnumeratingProducerNode( "content", model, "content",
             new CompositeProducerNode( new ProducerNode[] {
@@ -21,7 +41,7 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                   "/producer/indymedia.nl/content.template",
                   "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
               ),
-              new EntityEnumeratingProducerNode( "language", model, "language", "", "",
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                     new CompositeProducerNode( new ProducerNode[] {
                       new GeneratingProducerNode(
@@ -34,32 +54,76 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                       )
                     } )
                 )
-              )
+              ),
+              new ContentMarkingProducerNode( "content" )
             } )
           );
 
-      contentNode.addVerb( "all", "is_published='1' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.static}", "" );
-      contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.static}", "" );
+      contentNode.addVerb( "all", "is_published='1' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and to_article_type<>${articletype.static}", "webdb_create desc, date desc" );
+      contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and to_article_type<>${articletype.static}", "webdb_create desc, date desc" );
 
       aProducerNode.addSubNode( contentNode );
 
+      // openly trashed articles
+      contentNode =
+          new EntityEnumeratingProducerNode( "content", model, "content",
+            new CompositeProducerNode( new ProducerNode[] {
+              new GeneratingProducerNode(
+                  "/producer/indymedia.nl/removed.template",
+                  "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
+              ),
+              new EntityEnumeratingProducerNode( "language", model, "language", "code = 'nl'", "",
+                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                    new CompositeProducerNode( new ProducerNode[] {
+                      new GeneratingProducerNode(
+                          "/producer/indymedia.nl/trashed.template",
+                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
+                      ),
+                      new FileDateSettingProducerNode(
+                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
+                          "content.date.date"
+                      ),
+                      new ContentMarkingProducerNode( "content" )
+                    } )
+                )
+              ),
+              new ContentMarkingProducerNode( "content" )
+            })
+          );
+      contentNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.opentrashed}", "" );
+      contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.opentrashed}", "" );
+
+      aProducerNode.addSubNode( contentNode );
 
+      // closedly trashed articles
       contentNode =
           new EntityEnumeratingProducerNode( "content", model, "content",
-            new EntityEnumeratingProducerNode( "language", model, "language", "", "",
-              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
-                  new CompositeProducerNode( new ProducerNode[] {
-                    new GeneratingProducerNode(
-                        "/producer/indymedia.nl/trashed.template",
-                        "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
-                    ),
-                    new FileDateSettingProducerNode(
-                        "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
-                        "content.date.date"
-                    )
-                  } )
-              )
-            )
+            new CompositeProducerNode( new ProducerNode[] {
+              new GeneratingProducerNode(
+                  "/producer/indymedia.nl/removed.template",
+                  "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
+              ),
+              new EntityEnumeratingProducerNode( "language", model, "language", "code = 'nl'", "",
+                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                    new CompositeProducerNode( new ProducerNode[] {
+                      new GeneratingProducerNode(
+                          "/producer/indymedia.nl/removed.template",
+                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
+                      ),
+                      new GeneratingProducerNode(
+                          "/producer/indymedia.nl/trashed.template",
+                          "${config.storageRoot}/trashed/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
+                      ),
+                      new FileDateSettingProducerNode(
+                          "${config.storageRoot}/trashed/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
+                          "content.date.date"
+                      ),
+                      new ContentMarkingProducerNode( "content" )
+                    } )
+                )
+              ),
+              new ContentMarkingProducerNode( "content" )
+            })
           );
       contentNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.trashed}", "" );
       contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.trashed}", "" );
@@ -77,10 +141,9 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
       aProducerNode.addSubNode(
             new EntityListProducerNode("newswire", model, "content",
                     "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 40, 0,
-              new EntityListProducerNode("languages", model, "language",
-                            "", "code", 10, 0,
+              new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
                     new CompositeProducerNode( new ProducerNode[] {
-                        new EntityEnumeratingProducerNode( "language", model, "language", "", "",
+                        new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                           new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                               new GeneratingProducerNode(
                                   "/producer/indymedia.nl/newswire.template",
@@ -91,25 +154,35 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                         new EntityListProducerNode("startspecials", model, "content",
                                 "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 10, 0,
                           new EntityListProducerNode("features", model, "content",
-                                  "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 20, 0,
+                                  "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 15, 0,
                             new EntityListProducerNode("breaking", model, "breakingNews",
                                       "", "webdb_create desc", 5, 0,
-                              new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
-                                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
-                                  new AssignmentProducerNode( "staticinclude", "1",
-                                    new EvaluatedAssignmentProducerNode( "topinclude", "/producer/indymedia.nl/top.template",
-                                    new EvaluatedAssignmentProducerNode( "bottominclude", "/producer/indymedia.nl/bottom.template",
-                                    new EvaluatedAssignmentProducerNode( "navinclude", "/producer/indymedia.nl/nav.template",
-                                    new EvaluatedAssignmentProducerNode( "newswireinclude", "/producer/indymedia.nl/newswire.template",
-                                    new EvaluatedAssignmentProducerNode( "featuresinclude", "/producer/indymedia.nl/features.template",
-                                      new GeneratingProducerNode(
-                                          "/producer/indymedia.nl/start.template",
-                                          "${config.storageRoot}/index.shtml"
-                                      )
-                                    )))))
+                              new CompositeProducerNode( new ProducerNode[] {
+                                new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+                                  new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                                    new GeneratingProducerNode(
+                                        "/producer/indymedia.nl/features.template",
+                                        "${config.storageRoot}/${language.code}/features.inc"
+                                    )
+                                  )
+                                ),
+                                new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
+                                  new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                                    new AssignmentProducerNode( "staticinclude", "1",
+                                      new EvaluatedAssignmentProducerNode( "topinclude", "/producer/indymedia.nl/top.template",
+                                      new EvaluatedAssignmentProducerNode( "bottominclude", "/producer/indymedia.nl/bottom.template",
+                                      new EvaluatedAssignmentProducerNode( "navinclude", "/producer/indymedia.nl/nav.template",
+                                      new EvaluatedAssignmentProducerNode( "newswireinclude", "/producer/indymedia.nl/newswire.template",
+                                      new EvaluatedAssignmentProducerNode( "featuresinclude", "/producer/indymedia.nl/features.template",
+                                        new GeneratingProducerNode(
+                                            "/producer/indymedia.nl/start.template",
+                                            "${config.storageRoot}/index.shtml"
+                                        )
+                                      )))))
+                                    )
                                   )
                                 )
-                              )
+                              )
                             )
                           )
                         )
@@ -129,10 +202,9 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
     try {
       topicPageNode =
         new EntityBatchingProducerNode( "articles", "batch", model, "content",
-              "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire}) and id in (select content_id from content_x_topic where topic_id = ${topic.id})", "date asc, webdb_create asc", 6, 5, 0,
-          new EntityListProducerNode("languages", model, "language",
-                  "", "code", 10, 0,
-            new EntityEnumeratingProducerNode( "language", model, "language", "", "",
+              "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire}) and id in (select content_id from content_x_topic where topic_id = ${topic.id})", "webdb_create asc, date asc", 20, 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                 new GeneratingProducerNode(
                     "/producer/indymedia.nl/topic.template",
@@ -141,9 +213,8 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
               )
             )
           ),
-          new EntityListProducerNode("languages", model, "language",
-                  "", "code", 10, 0,
-            new EntityEnumeratingProducerNode( "language", model, "language", "", "",
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                 new GeneratingProducerNode(
                     "/producer/indymedia.nl/topicnavigation.template",
@@ -174,9 +245,8 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
   protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
     try {
       aProducerNode.addSubNode(
-          new EntityListProducerNode("languages", model, "language",
-                  "", "code", 10, 0,
-              new EntityEnumeratingProducerNode( "language", model, "language", "", "",
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                   new CompositeProducerNode( new ProducerNode[] {
                     new GeneratingProducerNode(
@@ -200,8 +270,8 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                         "${config.storageRoot}/${language.code}/style2.css"
                     ),
                     new GeneratingProducerNode(
-                        "/producer/indymedia.nl/top.template",
-                        "${config.storageRoot}/${language.code}/top.inc"
+                        "/producer/indymedia.nl/trashtop.template",
+                        "${config.storageRoot}/${language.code}/trashtop.inc"
                     ),
                     new GeneratingProducerNode(
                         "/producer/indymedia.nl/articlepre.template",
@@ -253,6 +323,7 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
     EntityBatchingProducerNode batchingNode = null;
     EntityEnumeratingProducerNode enumeratingNode = null;
 
+/*
     try {
       node =
         new EntityListProducerNode("startspecials", model, "content",
@@ -261,9 +332,8 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                   "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 20, 0,
             new EntityListProducerNode("breaking", model, "breakingNews",
                       "", "webdb_create desc", 5, 0,
-              new EntityListProducerNode("languages", model, "language",
-                        "", "code", 10, 0,
-                new EntityEnumeratingProducerNode( "language", model, "language", "", "",
+              new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+                new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                       new GeneratingProducerNode(
                           "/producer/indymedia.nl/features.template",
@@ -280,17 +350,17 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
     catch (Throwable t) {
       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
     }
+*/
 
-
+/*
     try {
       node =
           new EntityListProducerNode("features", model, "content",
-                  "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
+                  "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 15, 0,
             new EntityListProducerNode("breaking", model, "breakingNews",
                       "", "webdb_create desc", 5, 0,
-              new EntityListProducerNode("languages", model, "language",
-                        "", "code", 10, 0,
-                new EntityEnumeratingProducerNode( "language", model, "language", "", "",
+              new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+                new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                       new GeneratingProducerNode(
                           "/producer/indymedia.nl/features.template",
@@ -306,14 +376,14 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
     catch (Throwable t) {
       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
     }
+*/
 
     try {
       batchingNode =
           new EntityBatchingProducerNode( "comments", "batch", model, "comments",
 
                 "", "id asc", 25, 15, 0,
-            new EntityListProducerNode("languages", model, "language",
-                    "", "code", 10, 0,
+            new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
               new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                   new GeneratingProducerNode(
@@ -323,9 +393,8 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                 )
               )
             ),
-            new EntityListProducerNode("languages", model, "language",
-                    "", "code", 10, 0,
-              new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
+            new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                   new GeneratingProducerNode(
                       "/producer/indymedia.nl/commentsindexnavigation.template",
@@ -357,7 +426,7 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
       enumeratingNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.static} and to_language=${language.id} and edittitle<>'' and not edittitle is null", "" );
 
       aFactoriesMap.put("staticarticles", new NodedProducerFactory(
-          new EntityEnumeratingProducerNode( "language", model, "language", "", "",
+          new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
             new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
               enumeratingNode
             )
@@ -372,25 +441,23 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
     try {
       batchingNode =
           new EntityBatchingProducerNode( "articles", "batch", model, "content",
-                "to_article_type=${articletype.trashed} or exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "date asc, webdb_create asc", 25, 15, 0,
-            new EntityListProducerNode("languages", model, "language",
-                    "", "code", 10, 0,
-              new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
+                "to_article_type=${articletype.trashed} or exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "webdb_create asc, date asc", 25, 15, 0,
+            new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                   new GeneratingProducerNode(
                       "/producer/indymedia.nl/trashbin.template",
-                      "${config.storageRoot}/${language.code}/trashbin/trashbin${batch.current.identifier}.shtml"
+                      "${config.storageRoot}/trashbin/${language.code}/trashbin${batch.current.identifier}.shtml"
                   )
                 )
               )
             ),
-            new EntityListProducerNode("languages", model, "language",
-                    "", "code", 10, 0,
-              new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
+            new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                   new GeneratingProducerNode(
                       "/producer/indymedia.nl/trashbinnavigation.template",
-                      "${config.storageRoot}/${language.code}/trashbin/trashbinnavigation.inc"
+                      "${config.storageRoot}/trashbin/${language.code}/trashbinnavigation.inc"
                   )
                 )
               )
@@ -405,6 +472,189 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
     }
 
-//${articletype.trashed}
+// archives
+
+    try {
+      batchingNode =
+        new EntityBatchingProducerNode( "articles", "batch", model, "content",
+              "is_published='1' and to_article_type = ${articletype.feature}", "webdb_create asc, date asc", 20, 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/feature.archive.template",
+                    "${config.storageRoot}/${language.code}/feature/feature${batch.current.identifier}.shtml"
+                )
+              )
+            )
+          ),
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/feature.archive.navigation.template",
+                    "${config.storageRoot}/${language.code}/feature/featurenavigation.inc"
+                )
+              )
+            )
+          )
+        );
+      batchingNode.addVerb("all", -1);
+      batchingNode.addVerb("new", 3);
+
+      aFactoriesMap.put("featurearchive", new NodedProducerFactory( batchingNode ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      batchingNode =
+        new EntityBatchingProducerNode( "articles", "batch", model, "content",
+              "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/newswire.archive.template",
+                    "${config.storageRoot}/${language.code}/newswire/newswire${batch.current.identifier}.shtml"
+                )
+              )
+            )
+          ),
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/newswire.archive.navigation.template",
+                    "${config.storageRoot}/${language.code}/newswire/newswirenavigation.inc"
+                )
+              )
+            )
+          )
+        );
+      batchingNode.addVerb("all", -1);
+      batchingNode.addVerb("new", 3);
+
+      aFactoriesMap.put("newswirearchive", new NodedProducerFactory( batchingNode ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      batchingNode =
+        new EntityBatchingProducerNode( "articles", "batch", model, "content",
+              "is_published='1' and to_article_type in (${articletype.openposting}, ${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/openposting.archive.template",
+                    "${config.storageRoot}/${language.code}/openposting/openposting${batch.current.identifier}.shtml"
+                )
+              )
+            )
+          ),
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/openposting.archive.navigation.template",
+                    "${config.storageRoot}/${language.code}/openposting/openpostingnavigation.inc"
+                )
+              )
+            )
+          )
+        );
+      batchingNode.addVerb("all", -1);
+      batchingNode.addVerb("new", 3);
+
+      aFactoriesMap.put("openpostingarchive", new NodedProducerFactory( batchingNode ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      node =
+        new EntityListProducerNode( "articles", model, "content",
+              "is_published='1' and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
+              "(select max(webdb_create) from comment where to_media=content.id and is_published='t') desc", 30, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/commentedarticles.template",
+                    "${config.storageRoot}/${language.code}/commentedarticles.shtml"
+                )
+              )
+            )
+          )
+        );
+      aFactoriesMap.put("commentedarticles", new NodedProducerFactory( node ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      node =
+        new EntityListProducerNode( "articles", model, "content",
+              "is_published='1' and to_article_type = ${articletype.opentrashed}", "webdb_create desc, date desc", 30, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/opentrashbin.template",
+                    "${config.storageRoot}/${language.code}/opentrashbin.shtml"
+                )
+              )
+            )
+          )
+        );
+      aFactoriesMap.put("opentrashbin", new NodedProducerFactory( node ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      node =
+        new EntityListProducerNode( "articles", model, "content",
+              "is_published='1' and length(source)>10 and id>5000 and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
+              "webdb_create desc, date desc", 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/featuressyndication.template",
+                    "${config.storageRoot}/features.1-0.rdf",
+                    "UTF-8"
+                )
+              )
+            )
+          )
+        );
+      aFactoriesMap.put("syndication", new NodedProducerFactory( node ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      node =
+          new EntityEnumeratingProducerNode( "content", model, "content", "to_article_type = ${articletype.opentrashed} and webdb_create<now()-interval '5 days'", "",
+            new ContentModifyingProducerNode(
+              "content",
+              "to_article_type",
+              "${articletype.trashed}"
+            )
+          );
+      aFactoriesMap.put("trashbinmover", new NodedProducerFactory( node ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
   }
 }