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>