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

svn commit: r518851 - in /incubator/roller/trunk: src/org/apache/roller/ui/rendering/model/ src/org/apache/roller/ui/rendering/util/ web/WEB-INF/classes/ web/WEB-INF/velocity/ web/WEB-INF/velocity/templates/feeds/

Author: eliast
Date: Thu Mar 15 20:20:32 2007
New Revision: 518851

URL: http://svn.apache.org/viewvc?view=rev&rev=518851
Log:
Implemented Feed History proposal (with optional flag, default false)

http://cwiki.apache.org/confluence/display/ROLLER/Proposal_FeedHistory

Modified:
    incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/ConfigModel.java
    incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/FeedModel.java
    incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java
    incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java
    incubator/roller/trunk/web/WEB-INF/classes/roller.properties
    incubator/roller/trunk/web/WEB-INF/velocity/feeds.vm
    incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-comments-atom.vm
    incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-entries-atom.vm
    incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-comments-atom.vm
    incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-entries-atom.vm

Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/ConfigModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/ConfigModel.java?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/ConfigModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/ConfigModel.java Thu Mar 15 20:20:32 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/trunk/src/org/apache/roller/ui/rendering/model/FeedModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/FeedModel.java?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/FeedModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/FeedModel.java Thu Mar 15 20:20:32 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(), 
+                    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, 
+                    feedRequest.isExcerpts(), true);
+        
+        return new CommentsPager(
+            pagerUrl,
+            feedRequest.getLocale(),
+            -1,
+            feedRequest.getPage(), 
+            entryCount);        
     }
     
     /**

Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java Thu Mar 15 20:20:32 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(), 
+                    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(), 
+                    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, 
+                    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, 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/trunk/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogFeedRequest.java Thu Mar 15 20:20:32 2007
@@ -55,6 +55,7 @@
     private String format = null;
     private String weblogCategoryName = null;
     private List   tags = null;
+    private int    page = 0;
     private boolean excerpts = false;
     
     // heavyweight attributes
@@ -143,6 +144,14 @@
             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((this.tags != null && this.tags.size() > 0) && this.weblogCategoryName != null) {
             throw new InvalidRequestException("please specify either category or tags but not both, " + request.getRequestURL());            
         }
@@ -212,6 +221,16 @@
 
     public void setWeblogCategory(WeblogCategoryData weblogCategory) {
         this.weblogCategory = weblogCategory;
+    }
+
+
+    public int getPage() {
+        return page;
+    }
+
+
+    public void setPage(int page) {
+        this.page = page;
     }
     
 }

Modified: incubator/roller/trunk/web/WEB-INF/classes/roller.properties
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/classes/roller.properties?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/roller.properties (original)
+++ incubator/roller/trunk/web/WEB-INF/classes/roller.properties Thu Mar 15 20:20:32 2007
@@ -549,6 +549,8 @@
 #----------------------------------
 # misc settings
 
+site.newsfeeds.history.enabled=false
+
 # Some folks consider remember-me type functionality to be a security
 rememberme.enabled=true
 

Modified: incubator/roller/trunk/web/WEB-INF/velocity/feeds.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/velocity/feeds.vm?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/velocity/feeds.vm (original)
+++ incubator/roller/trunk/web/WEB-INF/velocity/feeds.vm Thu Mar 15 20:20:32 2007
@@ -130,3 +130,12 @@
     #end
 #end
 
+#macro(showFeedHistory $pager)
+<link rel="first" type="application/atom+xml" href="$pager.url" />
+#if($pager.hasMoreItems())
+    <link rel="next" type="application/atom+xml" href="$pager.nextLink" />
+#end
+#if($pager.prevLink && $pager.items.size() > 0)
+    <link rel="previous" type="application/atom+xml" href="$pager.prevLink" />
+#end
+#end
\ No newline at end of file

Modified: incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-comments-atom.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-comments-atom.vm?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-comments-atom.vm (original)
+++ incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-comments-atom.vm Thu Mar 15 20:20:32 2007
@@ -16,16 +16,22 @@
   directory of this distribution.
 
 *#<?xml version="1.0" encoding='utf-8'?>
-#if($config.feedStyle)<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/roller-ui/styles/atom.xsl" media="screen"?>#end
+#if($config.feedStyle)
+<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/roller-ui/styles/atom.xsl" media="screen"?>
+#end
+#set($pager = $site.getCommentsPager(-1, $config.feedSize) )
+#set($comments = $pager.items )
 <feed xmlns="http://www.w3.org/2005/Atom">
     <title type="html">$utils.escapeXML($config.siteName) (Comments)</title>
     <id>$url.feed.comments.atom</id>
     <link rel="alternate" type="text/html" href="$url.home" />
     <id>$url.feed.comments.atom($model.categoryPath, $model.excerpts)</id>
     <link rel="self" type="application/atom+xml" href="$url.feed.comments.atom($model.categoryPath, $model.excerpts)" />
+#if($config.feedHistoryEnabled)
+#showFeedHistory($pager)
+#end    
     <updated>$utils.formatIso8601Date($model.weblog.lastModified)</updated>
     <generator uri="http://rollerweblogger.org" version="$config.rollerVersion ($config.rollerBuildTimestamp:$config.rollerBuildUser)">Apache Roller (incubating)</generator>
-    #set($comments = $site.getCommentsPager(-1, $config.feedSize).items )
-    #showCommentsAtom10($comments)
+#showCommentsAtom10($comments)
 </feed>
 

Modified: incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-entries-atom.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-entries-atom.vm?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-entries-atom.vm (original)
+++ incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/site-entries-atom.vm Thu Mar 15 20:20:32 2007
@@ -16,23 +16,29 @@
   directory of this distribution.
 
 *#<?xml version="1.0" encoding='utf-8'?>
-#if($config.feedStyle)<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/roller-ui/styles/atom.xsl" media="screen"?>#end
+#if($config.feedStyle)
+<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/roller-ui/styles/atom.xsl" media="screen"?>
+#end
+#set($pager = $site.getWeblogEntriesPager(-1, $config.feedSize))
+#set($entries = $pager.items)
 <feed xmlns="http://www.w3.org/2005/Atom">
     <title type="html">$utils.escapeXML($config.siteName)</title>
     <subtitle type="html">$utils.escapeXML($config.siteDescription)</subtitle>
     <id>$url.absoluteSite</id>
     <link rel="alternate" type="text/html" href="$url.absoluteSite" />
-    #if($model.tags)
+#if($model.tags)
     <link rel="self" type="application/atom+xml" href="$url.feed.entries.atomByTags($model.tags, $model.excerpts)" />
-    #elseif($model.categoryPath)
+#elseif($model.categoryPath)
     <link rel="self" type="application/atom+xml" href="$url.feed.entries.atom($model.categoryPath, $model.excerpts)" />
-    #else
+#else
     <link rel="self" type="application/atom+xml" href="$url.feed.entries.atom" />
-    #end
+#end
+#if($config.feedHistoryEnabled)
+#showFeedHistory($pager)
+#end  
     <updated>$utils.formatIso8601Date($model.weblog.lastModified)</updated>
     <generator uri="http://rollerweblogger.org" version="$config.rollerVersion ($config.rollerBuildTimestamp:$config.rollerBuildUser)">Apache Roller (incubating)</generator>
-    #set($entries = $site.getWeblogEntriesPager(-1, $config.feedSize).items )
-    #showEntriesAtom10($entries)
+#showEntriesAtom10($entries)
 </feed>
 
 

Modified: incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-comments-atom.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-comments-atom.vm?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-comments-atom.vm (original)
+++ incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-comments-atom.vm Thu Mar 15 20:20:32 2007
@@ -16,15 +16,21 @@
   directory of this distribution.
 
 *#<?xml version="1.0" encoding='utf-8'?>
-#if($config.feedStyle)<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/roller-ui/styles/atom.xsl" media="screen"?>#end
+#if($config.feedStyle)
+<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/roller-ui/styles/atom.xsl" media="screen"?>
+#end
+#set($pager = $model.getCommentsPager())
+#set($comments = $pager.items)
 <feed xmlns="http://www.w3.org/2005/Atom">
     <title type="html">$utils.escapeXML($model.weblog.name) (Comments)</title>
     <id>$url.feed.comments.atom</id>
     <link rel="alternate" type="text/html" href="$url.home" />
     <link rel="self" type="application/atom+xml" href="$url.feed.comments.atom($model.categoryPath, $model.excerpts)" />
+#if($config.feedHistoryEnabled)
+#showFeedHistory($pager)
+#end
     <updated>$utils.formatIso8601Date($model.weblog.lastModified)</updated>
     <generator uri="http://rollerweblogger.org" version="$config.rollerVersion ($config.rollerBuildTimestamp:$config.rollerBuildUser)">Apache Roller (incubating)</generator>
-  #set($comments = $model.getComments())
-  #showCommentsAtom10($comments)
+#showCommentsAtom10($comments)
 </feed>
 

Modified: incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-entries-atom.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-entries-atom.vm?view=diff&rev=518851&r1=518850&r2=518851
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-entries-atom.vm (original)
+++ incubator/roller/trunk/web/WEB-INF/velocity/templates/feeds/weblog-entries-atom.vm Thu Mar 15 20:20:32 2007
@@ -16,22 +16,28 @@
   directory of this distribution.
 
 *#<?xml version="1.0" encoding='utf-8'?>
-#if($config.feedStyle)<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/roller-ui/styles/atom.xsl" media="screen"?>#end
+#if($config.feedStyle)
+<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/roller-ui/styles/atom.xsl" media="screen"?>
+#end
+#set($pager = $model.getWeblogEntriesPager())
+#set($entries = $pager.items)
 <feed xmlns="http://www.w3.org/2005/Atom">
     <title type="html">$utils.escapeXML($model.weblog.name)</title>
     <subtitle type="html">$utils.escapeXML($model.weblog.description)</subtitle>
     <id>$url.feed.entries.atom</id>
-    #if($model.tags)
+#if($model.tags)
     <link rel="self" type="application/atom+xml" href="$url.feed.entries.atomByTags($model.tags, $model.excerpts)" />
-    #elseif($model.categoryPath)
+#elseif($model.categoryPath)
     <link rel="self" type="application/atom+xml" href="$url.feed.entries.atom($model.categoryPath, $model.excerpts)" />
-    #else
+#else
     <link rel="self" type="application/atom+xml" href="$url.feed.entries.atom" />
-    #end
+#end
     <link rel="alternate" type="text/html" href="$url.home" />
+#if($config.feedHistoryEnabled)
+    #showFeedHistory($pager)
+#end
     <updated>$utils.formatIso8601Date($model.weblog.lastModified)</updated>
     <generator uri="http://rollerweblogger.org" version="$config.rollerVersion ($config.rollerBuildTimestamp:$config.rollerBuildUser)">Apache Roller (incubating)</generator>
-    #set($entries = $model.getWeblogEntries())
-    #showEntriesAtom10($entries)
+#showEntriesAtom10($entries)
 </feed>