You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2007/03/20 14:07:47 UTC

svn commit: r520378 [1/2] - in /incubator/roller/branches/roller_4.0_newbackend: ./ apps/planet/src/java/org/apache/roller/planet/tasks/ apps/planet/src/java/org/apache/roller/planet/ui/core/ apps/planet/src/java/org/apache/roller/util/ docs/devguide/ ...

Author: snoopdave
Date: Tue Mar 20 06:07:41 2007
New Revision: 520378

URL: http://svn.apache.org/viewvc?view=rev&rev=520378
Log:
Merging latest from trunk

Added:
    incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/PlanetTask.java
      - copied unchanged from r520240, incubator/roller/trunk/apps/planet/src/java/org/apache/roller/planet/tasks/PlanetTask.java
    incubator/roller/branches/roller_4.0_newbackend/docs/devguide/
      - copied from r520240, incubator/roller/trunk/docs/devguide/
    incubator/roller/branches/roller_4.0_newbackend/docs/devguide/roller-dev-guide.odt
      - copied unchanged from r520240, incubator/roller/trunk/docs/devguide/roller-dev-guide.odt
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java
      - copied unchanged from r520240, incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java
      - copied unchanged from r520240, incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java
      - copied unchanged from r520240, incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java
    incubator/roller/branches/roller_4.0_newbackend/tools/spring-1.2/acegi-security-1.0.3.jar
      - copied unchanged from r520240, incubator/roller/trunk/tools/spring-1.2/acegi-security-1.0.3.jar
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/velocity/templates/feeds/weblog-search-atom.vm
      - copied unchanged from r520240, incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-search-atom.vm
    incubator/roller/branches/roller_4.0_newbackend/web/images/launch-link.png
      - copied unchanged from r520240, incubator/roller/trunk/web/images/launch-link.png
    incubator/roller/branches/roller_4.0_newbackend/web/images/lock.png
      - copied unchanged from r520240, incubator/roller/trunk/web/images/lock.png
    incubator/roller/branches/roller_4.0_newbackend/web/images/page_white.png
      - copied unchanged from r520240, incubator/roller/trunk/web/images/page_white.png
    incubator/roller/branches/roller_4.0_newbackend/web/images/page_white_delete.png
      - copied unchanged from r520240, incubator/roller/trunk/web/images/page_white_delete.png
    incubator/roller/branches/roller_4.0_newbackend/web/images/page_white_gear.png
      - copied unchanged from r520240, incubator/roller/trunk/web/images/page_white_gear.png
Removed:
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/formbeans/CommentFormEx.java
    incubator/roller/branches/roller_4.0_newbackend/tools/spring-1.2/acegi-security-1.0.1.jar
Modified:
    incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/GeneratePlanetTask.java
    incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/RefreshPlanetTask.java
    incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/TechnoratiRankingsTask.java
    incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/ui/core/PlanetContext.java
    incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/util/TaskRunner.java
    incubator/roller/branches/roller_4.0_newbackend/merges.txt
    incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/3xx-to-400-migration.vm
    incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/createdb.vm
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/business/search/operations/RebuildWebsiteIndexOperation.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/planet/tasks/SyncWebsitesTask.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/StaticTemplate.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/Template.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/ThemeTemplate.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/Renderer.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererFactory.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererManager.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RequestMapper.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/ConfigModel.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/FeedModel.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SiteModel.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/URLModel.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/package.html
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/PageServlet.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/package.html
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogCommentRequest.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogRequest.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogResourceRequest.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java
    incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/util/URLUtilities.java
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/ApplicationResources.properties
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/roller.properties
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/jsps/authoring/CommentManagement.jsp
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/jsps/authoring/edit-page.jsp
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/jsps/authoring/edit-pages.jsp
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/jsps/authoring/remove-page.jsp
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/jsps/tiles/footer.jsp
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/velocity/feeds.vm
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/velocity/templates/feeds/site-comments-atom.vm
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/velocity/templates/feeds/site-entries-atom.vm
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/velocity/templates/feeds/weblog-comments-atom.vm
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/velocity/templates/feeds/weblog-entries-atom.vm
    incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/velocity/weblog.vm
    incubator/roller/branches/roller_4.0_newbackend/web/roller-ui/logout-redirect.jsp
    incubator/roller/branches/roller_4.0_newbackend/web/roller-ui/theme/tan/colors.css

Modified: incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/GeneratePlanetTask.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/GeneratePlanetTask.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/GeneratePlanetTask.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/GeneratePlanetTask.java Tue Mar 20 06:07:41 2007
@@ -44,9 +44,11 @@
  * - Uses Velocity Texen to generate the static files
  * </pre>
  */
-public class GeneratePlanetTask implements Runnable {
+public class GeneratePlanetTask extends PlanetTask {
+    
     private static Log log = LogFactory.getLog(GeneratePlanetTask.class);
     
+    
     public void run() {
         try {            
             Planet planet = PlanetFactory.getPlanet();
@@ -113,5 +115,12 @@
         } catch (Exception e) {
             log.error("ERROR generating planet", e);
         }
-    }   
+    }
+    
+    public static void main(String[] args) throws Exception{
+        GeneratePlanetTask task = new GeneratePlanetTask();
+        task.initialize();
+        task.run();
+    }
+    
 }

Modified: incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/RefreshPlanetTask.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/RefreshPlanetTask.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/RefreshPlanetTask.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/RefreshPlanetTask.java Tue Mar 20 06:07:41 2007
@@ -33,9 +33,11 @@
  * - Calls Planet business layer to refresh entries
  * </pre>
  */
-public class RefreshPlanetTask implements Runnable {
+public class RefreshPlanetTask extends PlanetTask {
+    
     private static Log log = LogFactory.getLog(RefreshPlanetTask.class);
     
+    
     public void run() {
         try {            
             // Update all feeds in planet
@@ -52,8 +54,10 @@
     }
     
     
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Exception{
         RefreshPlanetTask task = new RefreshPlanetTask();
+        task.initialize();
         task.run();
     }
+    
 }

Modified: incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/TechnoratiRankingsTask.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/TechnoratiRankingsTask.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/TechnoratiRankingsTask.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/tasks/TechnoratiRankingsTask.java Tue Mar 20 06:07:41 2007
@@ -35,7 +35,7 @@
 /**
  * Rank each subscription by populating Technorati inbound blog and link counts.
  */
-public class TechnoratiRankingsTask implements Runnable {
+public class TechnoratiRankingsTask extends PlanetTask {
     
     private static Log log = LogFactory.getLog(TechnoratiRankingsTask.class);
     
@@ -131,6 +131,13 @@
         } catch (Exception e) {
             log.error("ERROR ranking subscriptions", e);
         }
+    }
+    
+    
+    public static void main(String[] args) throws Exception{
+        TechnoratiRankingsTask task = new TechnoratiRankingsTask();
+        task.initialize();
+        task.run();
     }
     
 }

Modified: incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/ui/core/PlanetContext.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/ui/core/PlanetContext.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/ui/core/PlanetContext.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/planet/ui/core/PlanetContext.java Tue Mar 20 06:07:41 2007
@@ -65,7 +65,7 @@
      */
     public void contextInitialized(ServletContextEvent sce) {
         
-        log.debug("Roller Planet Initializing ... ");
+        log.info("Roller Planet Initializing ... ");
         
         // keep a reverence to ServletContext object
         this.context = sce.getServletContext();
@@ -94,7 +94,7 @@
             throw new RuntimeException(t);
         }
         
-        log.debug("Roller Planet Initialization Complete");
+        log.info("Roller Planet Initialization Complete");
     }
     
     

Modified: incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/util/TaskRunner.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/util/TaskRunner.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/util/TaskRunner.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/apps/planet/src/java/org/apache/roller/util/TaskRunner.java Tue Mar 20 06:07:41 2007
@@ -18,7 +18,7 @@
 package org.apache.roller.util;
         
 import java.io.File;
-import org.apache.roller.util.StandaloneWebappClassLoader;
+import org.apache.roller.planet.tasks.PlanetTask;
 
 /**
  * Sets up classpath for Roller and runs a task. 
@@ -61,7 +61,8 @@
 
         // Go!
         Class taskClass = cl.loadClass(taskClassName);
-        Runnable task = (Runnable)taskClass.newInstance();
+        PlanetTask task = (PlanetTask) taskClass.newInstance();
+        task.initialize();
         task.run();
     }
 }

Modified: incubator/roller/branches/roller_4.0_newbackend/merges.txt
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/merges.txt?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/merges.txt (original)
+++ incubator/roller/branches/roller_4.0_newbackend/merges.txt Tue Mar 20 06:07:41 2007
@@ -3,6 +3,9 @@
 
 Temporary file to track merges from trunk into the roller_4.0_newbackend branch. 
 
+March 20, 2007: merging latest from trunk (including template editor changes)
+svn merge -r 517890:520240 https://svn.apache.org/repos/asf/incubator/roller/trunk
+
 March 14, 2007: merging latest from trunk
 svn merge -r 513798:517889 https://svn.apache.org/repos/asf/incubator/roller/trunk
 

Modified: incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/3xx-to-400-migration.vm
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/3xx-to-400-migration.vm?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/3xx-to-400-migration.vm (original)
+++ incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/3xx-to-400-migration.vm Tue Mar 20 06:07:41 2007
@@ -4,36 +4,7 @@
 DON'T RUN THIS, IT'S NOT A DATABASE CREATION SCRIPT!!!
 **#
 
-
--- id creation needed for JPA/Datamapper backend
-create table roller_id_table (
-    pk              int not null primary key,
-    value           int not null
-);
-insert into roller_id_table (pk, value) values (1, 0);
-
-
--- TODO: figure out where these Planet tables belong for 4.0 release
-
-create table planet_id_table (
-    pk              int not null primary key,
-    value           int not null
-);
-insert into planet_id_table (pk, value) values (1, 0);
-
-create table rag_properties (
-    name     varchar(255) not null primary key,
-    value    $TEXT_SQL_TYPE
-);
-
-create table rag_planet (
-    id              varchar(48) not null primary key,
-    name            varchar(255) not null,
-    handle          varchar(32) not null
-);
-create index ragp_handle_idx on rag_planet(handle); 
-
-alter table rag_group add column planet_id varchar(48);
+#addColumnNull("webpage" "outputtype" "varchar(48)")
 
 -- remove old id column of group subscription table
 alter table rag_group_subscription drop column id;

Modified: incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/createdb.vm
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/createdb.vm?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/createdb.vm (original)
+++ incubator/roller/branches/roller_4.0_newbackend/metadata/database/tmpls/createdb.vm Tue Mar 20 06:07:41 2007
@@ -83,7 +83,8 @@
     hidden          $db.BOOLEAN_SQL_TYPE_FALSE not null,
     navbar          $db.BOOLEAN_SQL_TYPE_FALSE not null,
     templatelang    varchar(20) not null,
-    decorator       varchar(255) default null
+    decorator       varchar(255) default null,
+    outputtype      varchar(48) default null
 );
 create index wp_name_idx on webpage( name$!db.INDEXSIZE );
 create index wp_link_idx on webpage( link$!db.INDEXSIZE );

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/business/search/operations/RebuildWebsiteIndexOperation.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/business/search/operations/RebuildWebsiteIndexOperation.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/business/search/operations/RebuildWebsiteIndexOperation.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/business/search/operations/RebuildWebsiteIndexOperation.java Tue Mar 20 06:07:41 2007
@@ -75,12 +75,14 @@
         // since this operation can be run on a separate thread we must treat
         // the weblog object passed in as a detached object which is proned to
         // lazy initialization problems, so requery for the object now
-        try {
-            UserManager uMgr = RollerFactory.getRoller().getUserManager();
-            this.website = uMgr.getWebsite(this.website.getId());
-        } catch (RollerException ex) {
-            mLogger.error("Error getting website object", ex);
-            return;
+        if(this.website != null) {
+            try {
+                UserManager uMgr = RollerFactory.getRoller().getUserManager();
+                this.website = uMgr.getWebsite(this.website.getId());
+            } catch (RollerException ex) {
+                mLogger.error("Error getting website object", ex);
+                return;
+            }
         }
         
         IndexReader reader = beginDeleting();

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/planet/tasks/SyncWebsitesTask.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/planet/tasks/SyncWebsitesTask.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/planet/tasks/SyncWebsitesTask.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/planet/tasks/SyncWebsitesTask.java Tue Mar 20 06:07:41 2007
@@ -155,7 +155,7 @@
                 WebsiteData weblog = (WebsiteData) websites.next();
                 
                 String siteUrl = URLUtilities.getWeblogURL(weblog, null, true);
-                String feedUrl = URLUtilities.getWeblogFeedURL(weblog, null, "entries", "rss", null, null, false, true);
+                String feedUrl = URLUtilities.getWeblogFeedURL(weblog, null, "entries", "rss", null, null, null, false, true);
                 
                 // add feed url to the "live" list
                 liveUserFeeds.add(feedUrl);

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/StaticTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/StaticTemplate.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/StaticTemplate.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/StaticTemplate.java Tue Mar 20 06:07:41 2007
@@ -40,6 +40,7 @@
     private String templateLanguage = null;
     private boolean hidden = false;
     private boolean navbar = false;
+    private String  outputContentType = null;
     
     
     public StaticTemplate() {}
@@ -132,5 +133,11 @@
         return navbar; 
     }
     
-    
+    public String getOutputContentType() {
+        return outputContentType;
+    }
+
+    public void setOutputContentType(String outputContentType) {
+        this.outputContentType = outputContentType;
+    }    
 }

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/Template.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/Template.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/Template.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/Template.java Tue Mar 20 06:07:41 2007
@@ -98,4 +98,9 @@
      */
     public Template getDecorator();
     
+    /**
+     * Content-type of output or null if none defined.
+     */
+    public String getOutputContentType();
+    
 }

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/ThemeTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/ThemeTemplate.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/ThemeTemplate.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/ThemeTemplate.java Tue Mar 20 06:07:41 2007
@@ -39,6 +39,7 @@
     private boolean hidden = false;
     private boolean navbar = false;
     private String decoratorName = null;
+    private String  outputContentType = null;
     
     private Theme myTheme = null;
     
@@ -150,6 +151,14 @@
 
     public void setDecoratorName(String decorator) {
         this.decoratorName = decorator;
+    }
+
+    public String getOutputContentType() {
+        return outputContentType;
+    }
+
+    public void setOutputContentType(String outputContentType) {
+        this.outputContentType = outputContentType;
     }
     
     public String toString() {

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.java Tue Mar 20 06:07:41 2007
@@ -30,7 +30,7 @@
 import org.apache.roller.util.UUIDGenerator;
 
 /**
- * Pojo that represents a single user defined template page.
+ * POJO that represents a single user defined template page.
  *
  * This template is different from the generic template because it also
  * contains a reference to the website it is part of.
@@ -40,8 +40,7 @@
  * @hibernate.class lazy="true" table="webpage"
  * @hibernate.cache usage="read-write"
  */
-public class WeblogTemplate 
-        implements Serializable, Template {
+public class WeblogTemplate implements Serializable, Template {
     
     public static final long serialVersionUID = -613737191638263428L;
     public static final String DEFAULT_PAGE = "Weblog";
@@ -50,15 +49,16 @@
     private static Set requiredTemplates = null;
     
     private String id = UUIDGenerator.generateUUID();
-    private String name = null;
-    private String description = null;
-    private String link = null;
-    private String contents = null;
-    private Date lastModified = null;
-    private String templateLanguage = null;
+    private String  name = null;
+    private String  description = null;
+    private String  link = null;
+    private String  contents = null;
+    private Date    lastModified = null;
+    private String  templateLanguage = null;
     private boolean hidden = false;
     private boolean navbar = false;
-    private String decoratorName = null;
+    private String  decoratorName = null;
+    private String  outputContentType = null;
     
     private WebsiteData weblog = null;
     
@@ -273,6 +273,20 @@
     /** @ejb:persistent-field */
     public void setDecoratorName(String decorator) {
         this.decoratorName = decorator;
+    }
+    
+    /** 
+     * Content-type rendered by template or null for auto-detection by link extension.
+     * @ejb:persistent-field
+     * @hibernate.property column="outputtype" non-null="false" unique="false"
+     */
+    public String getOutputContentType() {
+        return outputContentType;
+    }
+
+    /** @ejb:persistent-field */
+    public void setOutputContentType(String outputContentType) {
+        this.outputContentType = outputContentType;
     }
     
     

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java Tue Mar 20 06:07:41 2007
@@ -19,6 +19,7 @@
 package org.apache.roller.ui.authoring.struts.actions;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.ResourceBundle;
@@ -34,11 +35,13 @@
 import org.apache.roller.RollerPermissionsException;
 import org.apache.roller.business.RollerFactory;
 import org.apache.roller.business.UserManager;
+import org.apache.roller.config.RollerConfig;
 import org.apache.roller.pojos.UserData;
 import org.apache.roller.pojos.WeblogTemplate;
 import org.apache.roller.pojos.WebsiteData;
-import org.apache.roller.ui.authoring.struts.forms.WeblogTemplateForm;
+import org.apache.roller.ui.authoring.struts.formbeans.WeblogTemplateFormEx;
 import org.apache.roller.ui.core.BasePageModel;
+import org.apache.roller.ui.core.RollerContext;
 import org.apache.roller.ui.core.RollerRequest;
 import org.apache.roller.ui.core.RollerSession;
 import org.apache.roller.util.Utilities;
@@ -51,12 +54,13 @@
 import org.apache.struts.action.ActionMessage;
 import org.apache.struts.action.ActionMessages;
 import org.apache.struts.actions.DispatchAction;
+import org.apache.struts.util.LabelValueBean;
 
 
 /**
  * Handles actions for weblog template management.
  *
- * @struts.action name="weblogTemplateForm" path="/roller-ui/authoring/page"
+ * @struts.action name="weblogTemplateFormEx" path="/roller-ui/authoring/page"
  *  	scope="session" parameter="method"
  *
  * @struts.action-forward name="removePage.page" path=".remove-page"
@@ -79,15 +83,14 @@
             throws IOException, ServletException {
         
         ActionForward forward = mapping.findForward("editPages.page");
-        WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
+        WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
         try {
-            request.setAttribute("model", new BasePageModel(
-                    "pagesForm.title", request, response, mapping));
             RollerRequest rreq = RollerRequest.getRollerRequest(request);
             RollerSession rses = RollerSession.getRollerSession(request);
             WebsiteData website = rreq.getWebsite();
             if ( rses.isUserAuthorizedToAdmin(website) ) {
                 
+
                 UserManager mgr = RollerFactory.getRoller().getUserManager();
                 
                 // first off, check if template already exists
@@ -96,33 +99,35 @@
                     ActionErrors errors = new ActionErrors();
                     errors.add(null, new ActionError("pagesForm.error.alreadyExists", form.getName()));
                     saveErrors(request, errors);
-                    addModelObjects(request, response, mapping, website, null);
+                    request.setAttribute("model",
+                        new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, null));
                     return forward;
                 }
                 
-                WeblogTemplate data = new WeblogTemplate();
-                form.copyTo(data, request.getLocale());
-                data.setWebsite(website);
-                data.setLastModified( new Date() );
-                data.setDescription(data.getName());
-                data.setContents(bundle.getString("pageForm.newTemplateContent"));
-                validateLink( data );
+                WeblogTemplate page = new WeblogTemplate();
+                form.copyTo(page, request.getLocale());
+                page.setWebsite(website);
+                page.setLastModified( new Date() );
+                page.setDescription(page.getName());
+                page.setContents(bundle.getString("pageForm.newTemplateContent"));
+                
+                validateLink(page);
                 
                 // all templates start out as velocity templates
-                data.setTemplateLanguage("velocity");
+                page.setTemplateLanguage("velocity");
                 
                 // for now, all templates just use _decorator
-                if(!"_decorator".equals(data.getName())) {
-                    data.setDecoratorName("_decorator");
+                if(!"_decorator".equals(page.getName())) {
+                    page.setDecoratorName("_decorator");
                 }
                 
                 // save the page
-                mgr.savePage( data );
+                mgr.savePage( page );
                 
                 // if this person happened to create a Weblog template from
                 // scratch then make sure and set the defaultPageId
-                if(WeblogTemplate.DEFAULT_PAGE.equals(data.getName())) {
-                    website.setDefaultPageId(data.getId());
+                if(WeblogTemplate.DEFAULT_PAGE.equals(page.getName())) {
+                    website.setDefaultPageId(page.getId());
                     mgr.saveWebsite(website);
                 }
                 
@@ -132,12 +137,14 @@
                 ActionMessages uiMessages = new ActionMessages();
                 uiMessages.add(ActionMessages.GLOBAL_MESSAGE,
                         new ActionMessage("pagesForm.addNewPage.success",
-                        data.getName()));
+                        page.getName()));
                 saveMessages(request, uiMessages);
                 
                 actionForm.reset(mapping,request);
                 
-                addModelObjects(request, response, mapping, website, data);
+                request.setAttribute("model",
+                    new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, page));
+                
             } else {
                 forward = mapping.findForward("access-denied");
             }
@@ -160,19 +167,25 @@
         ActionForward forward = mapping.findForward("editPage.page");
         try {
             RollerRequest rreq = RollerRequest.getRollerRequest(request);
-            WeblogTemplate pd = (WeblogTemplate)rreq.getPage();
+            WeblogTemplate page = (WeblogTemplate)rreq.getPage();
             
             RollerSession rses = RollerSession.getRollerSession(request);
-            if ( rses.isUserAuthorizedToAdmin(pd.getWebsite()) ) {
-                BasePageModel pageModel = new BasePageModel(
-                        "pageForm.title", request, response, mapping);
-                pageModel.setWebsite(pd.getWebsite());
-                request.setAttribute("model", pageModel);
+            if ( rses.isUserAuthorizedToAdmin(page.getWebsite()) ) {
                 
-                WeblogTemplateForm pf = (WeblogTemplateForm)actionForm;
-                pf.copyFrom(pd, request.getLocale());
+                WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
+                form.copyFrom(page, request.getLocale());
                 
-                addModelObjects(request, response, mapping, pd.getWebsite(), pd);
+                // empty content-type indicates that page uses auto content-type detection
+                if (StringUtils.isEmpty(page.getOutputContentType())) {
+                    form.setAutoContentType(Boolean.TRUE);
+                } else {
+                    form.setAutoContentType(Boolean.FALSE);
+                    form.setManualContentType(page.getOutputContentType());
+                }
+                
+                request.setAttribute("model",
+                    new WeblogTemplateFormModel("pageForm.title", request, response, mapping, page));
+
             } else {
                 forward = mapping.findForward("access-denied");
             }
@@ -193,12 +206,10 @@
         
         ActionForward forward = mapping.findForward("editPages.page");
         try {
-            WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
+            WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
             RollerRequest rreq = RollerRequest.getRollerRequest(request);
             RollerSession rses = RollerSession.getRollerSession(request);
-            request.setAttribute("model", new BasePageModel(
-                    "pagesForm.title", request, response, mapping));
-            
+
             WebsiteData website = rreq.getWebsite();
             if (website == null && form.getId()!=null) {
                 UserManager mgr = RollerFactory.getRoller().getUserManager();
@@ -206,11 +217,13 @@
                 website = template.getWebsite();
             }
             
-            if ( rses.isUserAuthorizedToAdmin(website)) {
-                addModelObjects(request, response, mapping, website, null);
-            } else {
+            request.setAttribute("model", 
+                new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, null));
+            
+            if (!rses.isUserAuthorizedToAdmin(website)) {
                 forward = mapping.findForward("access-denied");
             }
+            
         } catch (Exception e) {
             log.error("ERROR in action",e);
             throw new ServletException(e);
@@ -227,14 +240,16 @@
             throws IOException, ServletException {
         
         ActionForward forward = mapping.findForward("editPages");
-        request.setAttribute("model", new BasePageModel(
-                "pagesForm.title", request, response, mapping));
         try {
             UserManager mgr = RollerFactory.getRoller().getUserManager();
-            WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
+            WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
             WeblogTemplate template = mgr.getPage(form.getId());
             WebsiteData website = template.getWebsite();
             
+            WeblogTemplateFormModel pageModel = 
+                new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, null);
+            request.setAttribute("model", pageModel);
+
             RollerSession rses = RollerSession.getRollerSession(request);
             if ( rses.isUserAuthorizedToAdmin(website) ) {
                 if(!template.isRequired()) {
@@ -250,8 +265,6 @@
                     throw new RollerException("Cannot remove required page");
                 }
                 
-                addModelObjects(
-                        request, response, mapping, template.getWebsite(), template);
                 actionForm.reset(mapping, request);
             } else {
                 forward = mapping.findForward("access-denied");
@@ -284,18 +297,13 @@
             WeblogTemplate page = (WeblogTemplate) rreq.getPage();
             WebsiteData website = page.getWebsite();
             if ( rses.isUserAuthorizedToAdmin(website) ) {
-                WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
+                WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
                 form.copyFrom(page, request.getLocale());
                 
-                addModelObjects(request, response, mapping, page.getWebsite(), page);
-                
-                BasePageModel pageModel = new BasePageModel(
-                        "editPages.title.removeOK", request, response, mapping);
-                pageModel.setWebsite(website);
+                WeblogTemplateFormModel pageModel = 
+                    new WeblogTemplateFormModel("editPages.title.removeOK", request, response, mapping, page);
                 request.setAttribute("model", pageModel);
                 
-                UserData ud = rses.getAuthenticatedUser();
-                request.setAttribute("user",ud);
             } else {
                 forward = mapping.findForward("access-denied");
             }
@@ -316,38 +324,46 @@
         
         ActionForward forward = mapping.findForward("editPage.page");
         try {
-            RollerRequest rreq = RollerRequest.getRollerRequest(request);
-            WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
-            UserManager mgr = RollerFactory.getRoller().getUserManager();
-            WeblogTemplate data = mgr.getPage(form.getId());
-            WebsiteData website = data.getWebsite();
+            WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
+
+            RollerRequest  rreq = RollerRequest.getRollerRequest(request);
+            UserManager    mgr = RollerFactory.getRoller().getUserManager();
+            WeblogTemplate page = mgr.getPage(form.getId());
+            WebsiteData    website = page.getWebsite();
+            
             
             RollerSession rses = RollerSession.getRollerSession(request);
             if (rses.isUserAuthorizedToAdmin(website)) {
-                form.copyTo(data, request.getLocale());
-                data.setLastModified( new Date() );
                 
-                validateLink( data );
+
+                form.copyTo(page, request.getLocale());
+                page.setLastModified( new Date() );                                
                 
-                mgr.savePage( data );
+                if (form.getAutoContentType() == null || !form.getAutoContentType().booleanValue()) { 
+                    page.setOutputContentType(form.getManualContentType());
+                } else {
+                    // empty content-type indicates that page uses auto content-type detection
+                    page.setOutputContentType(null);
+                }
+                
+                validateLink(page);
+
+                mgr.savePage( page );
                 RollerFactory.getRoller().flush();
                 
                 // set the (possibly) new link back into the Form bean
-                ((WeblogTemplateForm)actionForm).setLink( data.getLink() );
+                ((WeblogTemplateFormEx)actionForm).setLink( page.getLink() );
                 
                 ActionMessages uiMessages = new ActionMessages();
                 uiMessages.add(ActionMessages.GLOBAL_MESSAGE,
                         new ActionMessage("pageForm.save.success",
-                        data.getName()));
+                        page.getName()));
                 saveMessages(request, uiMessages);
                 
-                CacheManager.invalidate(data);
+                CacheManager.invalidate(page);
                 
-                addModelObjects(request, response, mapping, data.getWebsite(), data);
-                
-                BasePageModel pageModel = new BasePageModel(
-                        "pageForm.title", request, response, mapping);
-                pageModel.setWebsite(website);
+                WeblogTemplateFormModel pageModel = 
+                    new WeblogTemplateFormModel("pageForm.title", request, response, mapping, page);
                 request.setAttribute("model", pageModel);
                 
             } else {
@@ -377,21 +393,21 @@
      * characters that are web-safe), this is a much easier
      * test-and-correct.  Otherwise we would need a RegEx package.
      */
-    private void validateLink( WeblogTemplate data ) {
-        // if data.getLink() is null or empty
-        // use the title ( data.getName() )
-        if ( StringUtils.isEmpty( data.getLink() ) ) {
-            data.setLink( data.getName() );
+    private void validateLink( WeblogTemplate page ) {
+        // if page.getLink() is null or empty
+        // use the title ( page.getName() )
+        if ( StringUtils.isEmpty( page.getLink() ) ) {
+            page.setLink( page.getName() );
         }
         
         // if link contains any nonAlphanumeric, strip them
         // first we must remove any html, as this is
         // non-instructional markup.  Then do a straight
         // removeNonAlphanumeric.
-        if ( !StringUtils.isAlphanumeric( data.getLink() ) ) {
-            String link = Utilities.removeHTML( data.getLink() );
+        if ( !StringUtils.isAlphanumeric( page.getLink() ) ) {
+            String link = Utilities.removeHTML( page.getLink() );
             link = Utilities.removeNonAlphanumeric( link );
-            data.setLink( link );
+            page.setLink( link );
         }
     }
     
@@ -402,33 +418,88 @@
             HttpServletRequest  request,
             HttpServletResponse response)
             throws IOException, ServletException {
-        request.setAttribute("model", new BasePageModel(
-                "pagesForm.title", request, response, mapping));
-        return (mapping.findForward("editPages"));
+        try {
+            request.setAttribute("model", new WeblogTemplateFormModel(
+                    "pagesForm.title", request, response, mapping, null));
+            return (mapping.findForward("editPages"));
+        } catch (Exception e) {
+            log.error("ERROR in action",e);
+            throw new ServletException(e);
+        }
     }
     
-    
-    private void addModelObjects(
-            HttpServletRequest  request,
-            HttpServletResponse response,
-            ActionMapping mapping,
-            WebsiteData website,
-            WeblogTemplate page)
-            throws RollerException {
-        UserManager mgr = RollerFactory.getRoller().getUserManager();
-        RollerSession rses = RollerSession.getRollerSession(request);
-        RollerRequest rreq = RollerRequest.getRollerRequest(request);
-        
-        UserData user = rses.getAuthenticatedUser();
-        request.setAttribute("user", user);
-        
-        WebsiteData wd = rreq.getWebsite();
-        request.setAttribute("website", website);
-        
-        List pages = mgr.getPages(website);
-        request.setAttribute("pages", pages);
-        
-        if (page != null) request.setAttribute("page", page);
+    public class WeblogTemplateFormModel extends BasePageModel {
+        private UserData       user;
+        private WeblogTemplate page;
+        private List           pages;
+        private List           languages = new ArrayList();
+
+        public WeblogTemplateFormModel(
+                String titleKey,
+                HttpServletRequest request,
+                HttpServletResponse response,
+                ActionMapping mapping,
+                WeblogTemplate page) throws RollerException {
+
+            super(titleKey, request, response, mapping);
+
+            UserManager mgr = RollerFactory.getRoller().getUserManager();
+            RollerSession rses = RollerSession.getRollerSession(request);
+            RollerRequest rreq = RollerRequest.getRollerRequest(request);  
+            
+            if (page != null) {
+                this.setWebsite(page.getWebsite());
+            } else {
+                this.setWebsite(rreq.getWebsite());
+            }
+ 
+            this.setUser(rses.getAuthenticatedUser());        
+            this.setPages(mgr.getPages(getWebsite()));
+            this.setPage(page); 
+            
+            if (page != null) {
+                String langs = RollerConfig.getProperty("rendering.templateLanguages","velocity");
+                String[] langsArray = Utilities.stringToStringArray(langs, ",");
+                for (int i = 0; i < langsArray.length; i++) {
+                    getLanguages().add(new LabelValueBean(langsArray[i], langsArray[i]));
+                }
+            }
+        }
+
+        public UserData getUser() {
+            return user;
+        }
+
+        public void setUser(UserData user) {
+            this.user = user;
+        }
+
+        public WeblogTemplate getPage() {
+            return page;
+        }
+
+        public void setPage(WeblogTemplate page) {
+            this.page = page;
+        }
+
+        public List getPages() {
+            return pages;
+        }
+
+        public void setPages(List pages) {
+            this.pages = pages;
+        }
+
+        public List getLanguages() {
+            return languages;
+        }
+
+        public void setLanguages(List languages) {
+            this.languages = languages;
+        }
     }
-    
+
 }
+
+
+

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/Renderer.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/Renderer.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/Renderer.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/Renderer.java Tue Mar 20 06:07:41 2007
@@ -23,7 +23,7 @@
 
 
 /**
- * Interface representing a content renderer in Roller.
+ * Renders content to writer based on values in a map.
  */
 public interface Renderer {
     

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererFactory.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererFactory.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererFactory.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererFactory.java Tue Mar 20 06:07:41 2007
@@ -22,7 +22,7 @@
 
 
 /**
- * A factory for Renderer objects.
+ * Returns Renderer best suited to render a Template or null if available.
  *
  * Implementations of this interface are used to handle the actual lookup of
  * what Renderer object should be used to render a given resource.

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererManager.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererManager.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererManager.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RendererManager.java Tue Mar 20 06:07:41 2007
@@ -28,7 +28,7 @@
 
 
 /**
- * A governing class for Rollers rendering system.
+ * Returns Renderer for Template via configured RendererFactories. 
  * 
  * The purpose of the RendererManager is to provide a level of abstraction 
  * between classes that are rendering content and the implementations of the

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RequestMapper.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RequestMapper.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RequestMapper.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/RequestMapper.java Tue Mar 20 06:07:41 2007
@@ -8,7 +8,7 @@
 
 
 /**
- * Interface representing an object that maps requests.
+ * Interface for object that can handle requests, return true if handled.
  */
 public interface RequestMapper {
     

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java Tue Mar 20 06:07:41 2007
@@ -36,7 +36,7 @@
 
 
 /**
- * Roller's weblog request mapper.
+ * Handles rendering requests for Roller pages/feeds by routing to the appropriate Servlet.
  *
  * This request mapper is used to map all weblog specific urls of the form
  * /<weblog handle>/* to the appropriate servlet for handling the actual

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/ConfigModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/ConfigModel.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/ConfigModel.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/ConfigModel.java Tue Mar 20 06:07:41 2007
@@ -70,6 +70,10 @@
         return getProperty("users.registration.url");
     }
     
+    public boolean getFeedHistoryEnabled() {
+        return getBooleanProperty("site.newsfeeds.history.enabled");
+    }
+    
     public int getFeedSize() {
         return getIntProperty("site.newsfeeds.defaultEntries");
     }

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/FeedModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/FeedModel.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/FeedModel.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/FeedModel.java Tue Mar 20 06:07:41 2007
@@ -36,8 +36,12 @@
 import org.apache.roller.pojos.wrapper.CommentDataWrapper;
 import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
 import org.apache.roller.pojos.wrapper.WebsiteDataWrapper;
+import org.apache.roller.ui.rendering.pagers.CommentsPager;
+import org.apache.roller.ui.rendering.pagers.Pager;
+import org.apache.roller.ui.rendering.pagers.WeblogEntriesListPager;
 import org.apache.roller.ui.rendering.util.WeblogFeedRequest;
 import org.apache.roller.ui.rendering.util.WeblogRequest;
+import org.apache.roller.util.URLUtilities;
 
 
 /**
@@ -115,38 +119,24 @@
      * Gets most recent entries limited by: weblog and category specified in 
      * request plus the weblog.entryDisplayCount.
      */
-    public List getWeblogEntries() {
+    public Pager getWeblogEntriesPager() {
         
         // all feeds get the site-wide default # of entries
         int entryCount =
                 RollerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
         
-        List results = new ArrayList();
-        try {             
-            Roller roller = RollerFactory.getRoller();
-            WeblogManager wmgr = roller.getWeblogManager();
-            List entries = wmgr.getWeblogEntries(
-                    weblog,
-                    null, 
-                    null, 
-                    null, 
-                    feedRequest.getWeblogCategoryName(), 
-                    feedRequest.getTags(), 
-                    WeblogEntryData.PUBLISHED, 
-                    null,
-                    "pubTime", 
-                    null,
-                    feedRequest.getLocale(), 
-                    0, 
-                    entryCount);
-            for (Iterator it = entries.iterator(); it.hasNext();) {
-                WeblogEntryData entry = (WeblogEntryData) it.next();
-                results.add(WeblogEntryDataWrapper.wrap(entry));
-            }
-        } catch (Exception e) {
-            log.error("ERROR: fetching weblog list", e);
-        }
-        return results;
+        String  pagerUrl = URLUtilities.getWeblogFeedURL(weblog, 
+                    feedRequest.getLocale(), feedRequest.getType(),
+                    feedRequest.getFormat(), feedRequest.getWeblogCategoryName(), 
+                    null, feedRequest.getTags(), feedRequest.isExcerpts(), true);
+       
+        return new WeblogEntriesListPager(
+            pagerUrl, weblog, null, feedRequest.getWeblogCategoryName(),
+            feedRequest.getTags(),
+            feedRequest.getLocale(),
+            -1,
+            feedRequest.getPage(), 
+            entryCount);        
     }
     
     
@@ -154,36 +144,23 @@
      * Gets most recent comments limited by: weblog specified in request and 
      * the weblog.entryDisplayCount.
      */
-    public List getComments() {
+    public Pager getCommentsPager() {
             
         // all feeds get the site-wide default # of entries
         int entryCount =
                 RollerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
         
-        List recentComments = new ArrayList();
-        try {
-            WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
-            List recent = wmgr.getComments(
-                    RollerRuntimeConfig.isSiteWideWeblog(weblog.getHandle()) ? null : weblog,
-                    null,          // weblog entry
-                    null,          // search String
-                    null,          // startDate
-                    null,          // endDate
-                    CommentData.APPROVED, // approved comments only
-                    true,          // we want reverse chrono order
-                    0,             // offset
-                    entryCount); // length
-            
-            // wrap pojos
-            recentComments = new ArrayList(recent.size());
-            Iterator it = recent.iterator();
-            while(it.hasNext()) {
-                recentComments.add(CommentDataWrapper.wrap((CommentData) it.next()));
-            }
-        } catch (RollerException e) {
-            log.error("ERROR: getting comments", e);
-        }
-        return recentComments;
+        String pagerUrl = URLUtilities.getWeblogFeedURL(weblog, 
+                    feedRequest.getLocale(), feedRequest.getType(),
+                    feedRequest.getFormat(), null, null, null,
+                    feedRequest.isExcerpts(), true);
+        
+        return new CommentsPager(
+            pagerUrl,
+            feedRequest.getLocale(),
+            -1,
+            feedRequest.getPage(), 
+            entryCount);        
     }
     
     /**

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsModel.java Tue Mar 20 06:07:41 2007
@@ -38,8 +38,10 @@
 import org.apache.roller.business.Roller;
 import org.apache.roller.business.RollerFactory;
 import org.apache.roller.business.WeblogManager;
+import org.apache.roller.pojos.WeblogCategoryData;
 import org.apache.roller.pojos.WeblogEntryData;
 import org.apache.roller.pojos.WeblogEntryWrapperComparator;
+import org.apache.roller.pojos.wrapper.WeblogCategoryDataWrapper;
 import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
 import org.apache.roller.ui.rendering.pagers.SearchResultsPager;
 import org.apache.roller.ui.rendering.pagers.WeblogEntriesPager;
@@ -255,6 +257,17 @@
 
     public String getErrorMessage() {
         return errorMessage;
+    }
+    
+    public String getWeblogCategoryName() {
+        return searchRequest.getWeblogCategoryName();
+    }
+    
+    public WeblogCategoryDataWrapper getWeblogCategory() {
+        if(searchRequest.getWeblogCategory() != null) {
+            return WeblogCategoryDataWrapper.wrap(searchRequest.getWeblogCategory());
+        }
+        return null;
     }
     
 }

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SiteModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SiteModel.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SiteModel.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SiteModel.java Tue Mar 20 06:07:41 2007
@@ -63,6 +63,7 @@
     
     private WebsiteData weblog = null;
     private WeblogRequest weblogRequest = null;
+    private WeblogFeedRequest feedRequest = null;
     private List tags = new ArrayList();
     private String pageLink = null;
     private int pageNum = 0;
@@ -86,7 +87,9 @@
             pageNum = ((WeblogPageRequest)weblogRequest).getPageNum();
             tags = ((WeblogPageRequest)weblogRequest).getTags();
         } else if (weblogRequest instanceof WeblogFeedRequest) {
-            tags = ((WeblogFeedRequest)weblogRequest).getTags();
+            this.feedRequest = (WeblogFeedRequest) weblogRequest;
+            tags = feedRequest.getTags();
+            pageNum = feedRequest.getPage();
         }
         
         // extract weblog object
@@ -102,9 +105,18 @@
      */
     public Pager getWeblogEntriesPager(int sinceDays, int length) {
         
-        String pagerUrl = URLUtilities.getWeblogPageURL(weblog, 
+        String pagerUrl = null;
+        
+        if (feedRequest != null) {
+            pagerUrl = URLUtilities.getWeblogFeedURL(weblog, 
+                    weblogRequest.getLocale(), feedRequest.getType(),
+                    feedRequest.getFormat(), feedRequest.getWeblogCategoryName(), null,
+                    feedRequest.getTags(), feedRequest.isExcerpts(), true);
+        } else {        
+            pagerUrl = URLUtilities.getWeblogPageURL(weblog, 
                 weblogRequest.getLocale(), pageLink, 
                 null, null, null, tags, 0, false);
+        }
         
         return new WeblogEntriesListPager(
             pagerUrl, null, null, null,
@@ -150,9 +162,17 @@
      */   
     public Pager getWeblogEntriesPager(WebsiteData queryWeblog, UserData user, String cat, int sinceDays, int length) {
         
-        String pagerUrl = URLUtilities.getWeblogPageURL(weblog, 
+        String pagerUrl = null;
+        if (feedRequest != null) {
+            pagerUrl = URLUtilities.getWeblogFeedURL(weblog, 
+                    weblogRequest.getLocale(), feedRequest.getType(),
+                    feedRequest.getFormat(), feedRequest.getWeblogCategoryName(), null,
+                    feedRequest.getTags(), feedRequest.isExcerpts(), true);
+        } else {
+            pagerUrl = URLUtilities.getWeblogPageURL(weblog, 
                 weblogRequest.getLocale(), pageLink, 
                 null, null, null, tags, 0, false);
+        }
        
         return new WeblogEntriesListPager(
             pagerUrl, queryWeblog, user, cat,
@@ -172,9 +192,17 @@
      */
     public Pager getCommentsPager(int sinceDays, int length) {
         
-        String pagerUrl = URLUtilities.getWeblogPageURL(weblog, 
+        String pagerUrl = null;
+        if (feedRequest != null) {
+            pagerUrl = URLUtilities.getWeblogFeedURL(weblog, 
+                    weblogRequest.getLocale(), feedRequest.getType(),
+                    feedRequest.getFormat(), null, null, null,
+                    feedRequest.isExcerpts(), true);
+        } else {        
+            pagerUrl = URLUtilities.getWeblogPageURL(weblog, 
                 weblogRequest.getLocale(), pageLink, 
                 null, null, null, null, 0, false);
+        }
         
         return new CommentsPager(
             pagerUrl,
@@ -188,9 +216,16 @@
     /* Get pager of users whose names begin with specified letter */
     public Pager getUsersByLetterPager(String letter, int sinceDays, int length) {
         
-        String pagerUrl = URLUtilities.getWeblogPageURL(weblog, 
+        String pagerUrl = null;
+        if (feedRequest != null) {
+            pagerUrl = URLUtilities.getWeblogFeedURL(weblog, 
+                    weblogRequest.getLocale(), feedRequest.getType(),
+                    feedRequest.getFormat(), null, null, null, feedRequest.isExcerpts(), true);
+        } else {        
+            pagerUrl = URLUtilities.getWeblogPageURL(weblog, 
                 weblogRequest.getLocale(), pageLink, 
                 null, null, null, null, 0, false);
+        }        
         
         if(letter != null && StringUtils.isEmpty(letter)) {
             letter = null;

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/URLModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/URLModel.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/URLModel.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/URLModel.java Tue Mar 20 06:07:41 2007
@@ -32,6 +32,7 @@
 import org.apache.roller.ui.core.RequestConstants;
 import org.apache.roller.ui.rendering.util.WeblogRequest;
 import org.apache.roller.util.URLUtilities;
+import org.apache.roller.util.Utilities;
 import org.apache.struts.util.RequestUtils;
 
 
@@ -238,6 +239,9 @@
         return URLUtilities.getWeblogSearchURL(weblog, locale, query, catPath, pageNum, false);
     }
     
+    public String absoluteSearch(String query, String catPath, int pageNum) {
+        return URLUtilities.getWeblogSearchURL(weblog, locale, query, catPath, pageNum, true);
+    }        
     
     public String page(String pageLink) {
         return URLUtilities.getWeblogPageURL(weblog, locale, pageLink, null, null, null, null, -1, true);
@@ -326,46 +330,50 @@
     public class EntryFeedURLS {
         
         public String getRss() {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "rss", null, null, false, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "rss", null, null, null, false, true);
         }
         
         public String rss(String catPath, boolean excerpts) {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "rss", catPath, null, excerpts, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "rss", catPath, null, null, excerpts, true);
         }
         
         public String rssByTags(List tags, boolean excerpts) {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "rss", null, tags, excerpts, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "rss", null, null, tags, excerpts, true);
         }
         
         public String getAtom() {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "atom", null, null, false, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "atom", null, null, null, false, true);
         }
         
         public String atom(String catPath, boolean excerpts) {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "atom", catPath, null, excerpts, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "atom", catPath, null, null, excerpts, true);
         }
         
+        public String search(String term, String catPath) {
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "search", "atom", catPath, term, null, false, true);
+        }        
+        
         public String atomByTags(List tags, boolean excerpts) {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "atom", null, tags, excerpts, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "atom", null, null, tags, excerpts, true);
         }
     }
     
     public class CommentFeedURLS {
         
         public String getRss() {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "comments", "rss", null, null, false, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "comments", "rss", null, null, null, false, true);
         }
         
         public String rss(String catPath, boolean excerpts) {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "comments", "rss", catPath, null, excerpts, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "comments", "rss", catPath, null, null, excerpts, true);
         }
         
         public String getAtom() {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "comments", "atom", null, null, false, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "comments", "atom", null, null, null, false, true);
         }
         
         public String atom(String catPath, boolean excerpts) {
-            return URLUtilities.getWeblogFeedURL(weblog, locale, "comments", "atom", catPath, null, excerpts, true);
+            return URLUtilities.getWeblogFeedURL(weblog, locale, "comments", "atom", catPath, null, null, excerpts, true);
         }
         
     }

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/package.html
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/package.html?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/package.html (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/package.html Tue Mar 20 06:07:41 2007
@@ -21,6 +21,6 @@
   <title></title>
 </head>
 <body>
-Core Roller UI classes for Servlet context, session and request.
+Core Roller rendering system: request mapping and rendering.
 </body>
 </html>

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java Tue Mar 20 06:07:41 2007
@@ -41,6 +41,7 @@
 import org.apache.roller.ui.rendering.Renderer;
 import org.apache.roller.ui.rendering.RendererManager;
 import org.apache.roller.ui.rendering.model.ModelLoader;
+import org.apache.roller.ui.rendering.model.SearchResultsFeedModel;
 import org.apache.roller.ui.rendering.util.cache.SiteWideCache;
 import org.apache.roller.ui.rendering.util.cache.WeblogFeedCache;
 import org.apache.roller.ui.rendering.util.ModDateHeaderUtil;
@@ -234,6 +235,11 @@
 
             // Load weblog custom models
             ModelLoader.loadCustomModels(weblog, model, initData);
+            
+            if("search".equals(feedRequest.getType())) {
+                pageId = "templates/feeds/weblog-search-atom.vm";                
+                ModelLoader.loadModels(SearchResultsFeedModel.class.getName(), model, initData, true);
+            }                        
 
         } catch (RollerException ex) {
             log.error("ERROR loading model for page", ex);

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/PageServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/PageServlet.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/PageServlet.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/PageServlet.java Tue Mar 20 06:07:41 2007
@@ -30,6 +30,7 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.JspFactory;
 import javax.servlet.jsp.PageContext;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
@@ -329,11 +330,17 @@
         // looks like we need to render content
         
         // set the content type
-        String mimeType = RollerContext.getServletContext().getMimeType(page.getLink());
         String contentType = "text/html; charset=utf-8";
-        if(mimeType != null) {
-            // we found a match ... set the content type
-            contentType = mimeType+"; charset=utf-8";
+        if (StringUtils.isNotEmpty(page.getOutputContentType())) {
+            contentType = page.getOutputContentType() + "; charset=utf-8";
+        } else {
+            String mimeType = RollerContext.getServletContext().getMimeType(page.getLink()); 
+            if (mimeType != null) {
+                // we found a match ... set the content type
+                contentType = mimeType + "; charset=utf-8";
+            } else {
+                contentType = "text/html; charset=utf-8";
+            }
         }
 
         HashMap model = new HashMap();

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/package.html
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/package.html?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/package.html (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/servlets/package.html Tue Mar 20 06:07:41 2007
@@ -22,5 +22,17 @@
 </head>
 <body>
 Roller rendering system servlets.
+
+    <h2>Roller Servlets</h2>
+    
+    Most rendering servlets work like this:
+    <ul>
+        <li>Create a request object to parse the request</li>
+        <li>Determine last modified time, return not-modified (HTTP 304) if possible</li>
+        <li>Return content from cache if possible</li>
+        <li>Load model objects into a map suitable for renderer</li>
+        <li>Call most appropriate renderer to render content</li>
+    </ul>
+    
 </body>
 </html>

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogCommentRequest.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogCommentRequest.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogCommentRequest.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogCommentRequest.java Tue Mar 20 06:07:41 2007
@@ -27,6 +27,7 @@
 import org.apache.roller.business.RollerFactory;
 import org.apache.roller.business.WeblogManager;
 import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.util.Utilities;
 
 
 /**
@@ -121,15 +122,15 @@
          *   notify - if commenter wants to receive notifications
          */
         if(request.getParameter("name") != null) {
-            this.name = request.getParameter("name");
+            this.name = Utilities.removeHTML(request.getParameter("name"));
         }
         
         if(request.getParameter("email") != null) {
-            this.email = request.getParameter("email");
+            this.email = Utilities.removeHTML(request.getParameter("email"));
         }
         
         if(request.getParameter("url") != null) {
-            this.url = request.getParameter("url");
+            this.url = Utilities.removeHTML(request.getParameter("url"));
         }
         
         if(request.getParameter("content") != null) {

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java Tue Mar 20 06:07:41 2007
@@ -55,7 +55,9 @@
     private String format = null;
     private String weblogCategoryName = null;
     private List   tags = null;
+    private int    page = 0;
     private boolean excerpts = false;
+    private String term = null;
     
     // heavyweight attributes
     private WeblogCategoryData weblogCategory = null;
@@ -143,6 +145,19 @@
             this.excerpts = Boolean.valueOf(request.getParameter("excerpts")).booleanValue();
         }
         
+        if(request.getParameter("page") != null) {
+            try {
+                this.page = Integer.parseInt(request.getParameter("page"));
+            } catch(NumberFormatException e) {
+                // 
+            }
+        }     
+        
+        if(request.getParameter("q") != null &&
+                request.getParameter("q").trim().length() > 0) {
+            this.term = URLUtilities.decode(request.getParameter("q"));
+        }        
+        
         if((this.tags != null && this.tags.size() > 0) && this.weblogCategoryName != null) {
             throw new InvalidRequestException("please specify either category or tags but not both, " + request.getRequestURL());            
         }
@@ -213,5 +228,23 @@
     public void setWeblogCategory(WeblogCategoryData weblogCategory) {
         this.weblogCategory = weblogCategory;
     }
-    
+
+
+    public int getPage() {
+        return page;
+    }
+
+
+    public void setPage(int page) {
+        this.page = page;
+    }
+
+    public String getTerm() {
+        return term;
+    }
+
+
+    public void setTerm(String query) {
+        this.term = query;
+    }
 }

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogRequest.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogRequest.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogRequest.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogRequest.java Tue Mar 20 06:07:41 2007
@@ -131,7 +131,7 @@
      * Convenience method which determines if the given string is a valid
      * locale string.
      */
-    private boolean isLocale(String potentialLocale) {
+    protected boolean isLocale(String potentialLocale) {
         
         boolean isLocale = false;
         

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogResourceRequest.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogResourceRequest.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogResourceRequest.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/util/WeblogResourceRequest.java Tue Mar 20 06:07:41 2007
@@ -97,5 +97,10 @@
     public void setResourcePath(String resourcePath) {
         this.resourcePath = resourcePath;
     }
-    
+            
+    protected boolean isLocale(String potentialLocale) {
+        // We don't support locales in the resource Servlet so we've got to 
+        // keep parent from treating upload sub-directory name as a locale.
+        return false;
+    }
 }

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRenderer.java Tue Mar 20 06:07:41 2007
@@ -35,7 +35,7 @@
 
 
 /**
- * Renderer for Velocity templates.
+ * Renderer that renders using the Velocity template engine.
  */
 public class VelocityRenderer implements Renderer {
     

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/velocity/VelocityRendererFactory.java Tue Mar 20 06:07:41 2007
@@ -26,7 +26,7 @@
 
 
 /**
- * Velocity RendererFactory for Roller.
+ * RendererFactory for Velocity, creates VelocityRenderers.
  */
 public class VelocityRendererFactory implements RendererFactory {
     

Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/util/URLUtilities.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/util/URLUtilities.java?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/util/URLUtilities.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/util/URLUtilities.java Tue Mar 20 06:07:41 2007
@@ -250,6 +250,7 @@
                                                 String type,
                                                 String format,
                                                 String category,
+                                                String term,
                                                 List tags,
                                                 boolean excerpts,
                                                 boolean absolute) {
@@ -269,6 +270,9 @@
         }
         if(tags != null && tags.size() > 0) {
           params.put("tags", getEncodedTagsString(tags));
+        }
+        if(term != null && term.trim().length() > 0) {
+            params.put("q", encode(term.trim()));
         }
         if(excerpts) {
             params.put("excerpts", "true");

Modified: incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/ApplicationResources.properties
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/ApplicationResources.properties?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/ApplicationResources.properties (original)
+++ incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/ApplicationResources.properties Tue Mar 20 06:07:41 2007
@@ -883,9 +883,10 @@
 pagesForm.subtitle=Manage templates that define weblog <span>{0}</span>
 pagesForm.tip=You can edit the templates that define the layout, colors and \
 fonts of your weblog. You can also create new templates to define entirely \
-new pages. This is for advanced users only, if you're not comfortable with \
-HTML, you might want to leave your templates alone.
+new pages. This is for advanced users only, if you're not comfortable \
+with HTML, you might want to leave your templates alone.
 
+pageForm.advancedSettings=Advanced Settings
 pagesForm.name=Name
 pagesForm.link=Link
 pagesForm.description=Description
@@ -902,6 +903,11 @@
 theme, so some template edits may not effect how your blog looks.
 editPages.title.removeOK=Confirm remove of template
 
+pagesForm.launch=launch
+pagesForm.outputContentType=Type
+pagesForm.column.navbar=Navbar
+pagesForm.column.hidden=Hidden page
+
 pageCache.flushed=Page cache has been successfully flushed.
 
 pagesForm.error.alreadyExists=The template {0} already exists.
@@ -909,11 +915,22 @@
 # -------------------------------------------------------------------- Page edit
 
 pageForm.title=Edit Template
-pageForm.editPage=Edit Template
+pageForm.subtitle=Edit template <span>{0}</span> in weblog <span>{1}</span>
+pageForm.tip=You can edit this template to change what it generates.\
+Refer the the Roller Template Guide for information about the objects \
+and code you are allowed to use in a template. This is for advanced \
+users only, if you're not comfortable with HTML, you might want to leave \
+your templates alone.
+pageForm.tip.required=You can edit this template to change what it generates.\
+Refer the the Roller Template Guide for information about the objects \
+and code you are allowed to use in a template. This is for advanced \
+users only, if you're not comfortable with HTML, you might want to leave \
+your templates alone. NOTE: this is a required weblog template, you cannot \
+change the name, link or description.
 pageForm.name=Name
 pageForm.link=Link
 pageForm.hidden=Hidden
-pageForm.hidden.tip=Hidden templates cannot be accessed via a weblog URL
+pageForm.hidden.tip=Hidden pages cannot be accessed via a weblog URL
 pageForm.navbar=Include in page menu
 pageForm.navbar.tip=Include in menu produced by showPageMenu() macro
 pageForm.description=Description
@@ -921,8 +938,18 @@
 pageForm.save=Save
 pageForm.newTemplateContent=<html><body></body></html>
 pageForm.save.success=Template updated successfully.
-pagesForm.column.navbar=Navbar
-pagesForm.column.hidden=Hidden
+pageForm.launch=launch
+pageForm.useAutoContentType=Automatically set content type
+pageForm.useManualContentType=Use manually specified content-type
+
+pageForm.templateLanguage=Template Language
+
+pageForm.outputContentType=Content-Type
+pageForm.outputContentTypeHTML=HTML (text/html)
+pageForm.outputContentTypeXHTML=XHTML (application/xhtml+xml)
+pageForm.outputContentTypeJavaScript=JavaScript (text/script)
+pageForm.outputContentTypeStyle=CSS (test/style)
+pageForm.outputContentTypeCustom=Custom...
 
 pageRemove.subtitle=Confirm removal of page
 pageRemove.youSure=Are you sure you want to remove this page?

Modified: incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/roller.properties
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/roller.properties?view=diff&rev=520378&r1=520377&r2=520378
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/roller.properties (original)
+++ incubator/roller/branches/roller_4.0_newbackend/web/WEB-INF/classes/roller.properties Tue Mar 20 06:07:41 2007
@@ -99,6 +99,9 @@
 rendering.rollerRendererFactories=\
 org.apache.roller.ui.rendering.velocity.VelocityRendererFactory
 
+# List of available template languages
+rendering.templateLanguages=velocity,groovlet,gsp,javascript
+
 # The set of user defined renderer factories.  These are prepended to the list above.
 rendering.userRendererFactories=
 
@@ -550,6 +553,8 @@
 
 #----------------------------------
 # misc settings
+
+site.newsfeeds.history.enabled=false
 
 # Some folks consider remember-me type functionality to be a security
 rememberme.enabled=true