Skip to content

Commit

Permalink
Issue 394 pt.5 standardized on Atom newsfeeds.
Browse files Browse the repository at this point in the history
  • Loading branch information
gmazza committed Apr 21, 2016
1 parent 0b2933f commit 3a4153a
Show file tree
Hide file tree
Showing 22 changed files with 111 additions and 307 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
*/.DS_Store
.DS_Store
.DS_Store?
.DS_Store
app/target
*/velocity.log
velocity.log
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,9 @@ public String getWeblogPageURL(Weblog weblog, String theme, String pageLink, Str
* Get url for a feed on a given weblog.
*/
@Override
public String getWeblogFeedURL(Weblog weblog, String type, String format, String category, String tag) {
public String getWeblogFeedURL(Weblog weblog, String type, String category, String tag) {

String url = getWeblogURL(weblog, true) + "feed/" + type + "/" + format;
String url = getWeblogURL(weblog, true) + "feed/" + type;

Map<String, String> params = new HashMap<>();
if (category != null && category.trim().length() > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ String getWeblogPageURL(Weblog weblog, String theme, String pageLink, String ent
/**
* Get url for a feed on a given weblog.
*/
String getWeblogFeedURL(Weblog weblog, String type, String format, String category, String tag);
String getWeblogFeedURL(Weblog weblog, String type, String category, String tag);

/**
* Get url to search endpoint on a given weblog.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public String getRegistrationURL() {
public boolean getFeedStyle() {
return propertiesManager.getBooleanProperty("site.newsfeeds.styledFeeds");
}

public boolean getCommentHtmlAllowed() {
return propertiesManager.getBooleanProperty("users.comments.htmlenabled");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,7 @@ public FeedEntriesPager(WeblogFeedRequest feedRequest) {

@Override
public String getHomeLink() {
return urlStrategy.getWeblogFeedURL(feedRequest.getWeblog(), feedRequest.getType(),
feedRequest.getFormat(), null, null);
return urlStrategy.getWeblogFeedURL(feedRequest.getWeblog(), feedRequest.getType(), null, null);
}

}
Expand All @@ -144,7 +143,7 @@ public class FeedCommentsPager extends CommentsPager {

public FeedCommentsPager(WeblogFeedRequest feedRequest) {
super(weblogEntryManager, urlStrategy, urlStrategy.getWeblogFeedURL(feedRequest.getWeblog(),
feedRequest.getType(), feedRequest.getFormat(), null, null),
feedRequest.getType(), null, null),
feedRequest.isSiteWideFeed() ? null : feedRequest.getWeblog(),
feedRequest.getCategoryName(), -1, feedRequest.getPage(),
propertiesManager.getIntProperty("site.newsfeeds.maxEntries"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,47 +206,27 @@ public CommentFeedURLS getComments() {

public class EntryFeedURLS {

public String getRss() {
return urlStrategy.getWeblogFeedURL(weblog, "entries", "rss", null, null);
}

public String rss(String catName) {
return urlStrategy.getWeblogFeedURL(weblog, "entries", "rss", catName, null);
}

public String rssByTag(String tag) {
return urlStrategy.getWeblogFeedURL(weblog, "entries", "rss", null, tag);
}

public String getAtom() {
return urlStrategy.getWeblogFeedURL(weblog, "entries", "atom", null, null);
return urlStrategy.getWeblogFeedURL(weblog, "entries", null, null);
}

public String atom(String catName) {
return urlStrategy.getWeblogFeedURL(weblog, "entries", "atom", catName, null);
return urlStrategy.getWeblogFeedURL(weblog, "entries", catName, null);
}

public String atomByTag(String tag) {
return urlStrategy.getWeblogFeedURL(weblog, "entries", "atom", null, tag);
return urlStrategy.getWeblogFeedURL(weblog, "entries", null, tag);
}
}

public class CommentFeedURLS {

public String getRss() {
return urlStrategy.getWeblogFeedURL(weblog, "comments", "rss", null, null);
}

public String rss(String catName) {
return urlStrategy.getWeblogFeedURL(weblog, "comments", "rss", catName, null);
}

public String getAtom() {
return urlStrategy.getWeblogFeedURL(weblog, "comments", "atom", null, null);
return urlStrategy.getWeblogFeedURL(weblog, "comments", null, null);
}

public String atom(String catName) {
return urlStrategy.getWeblogFeedURL(weblog, "comments", "atom", catName, null);
return urlStrategy.getWeblogFeedURL(weblog, "comments", catName, null);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,7 @@ public void getFeed(HttpServletRequest request, HttpServletResponse response) th
// browsers to load the page rather than popping up the download
// dialog, so we provide a content-type that browsers will display
response.setContentType("text/xml");
} else if ("rss".equals(feedRequest.getFormat())) {
response.setContentType("application/rss+xml; charset=utf-8");
} else if ("atom".equals(feedRequest.getFormat())) {
} else {
response.setContentType("application/atom+xml; charset=utf-8");
}

Expand Down Expand Up @@ -207,8 +205,6 @@ public void getFeed(HttpServletRequest request, HttpServletResponse response) th
}
} else if (!"entries".equals(feedRequest.getType()) && !"comments".equals(feedRequest.getType())) {
invalid = true;
} else if (!"rss".equals(feedRequest.getFormat()) && !"atom".equals(feedRequest.getFormat())) {
invalid = true;
}

if (invalid) {
Expand All @@ -227,7 +223,7 @@ public void getFeed(HttpServletRequest request, HttpServletResponse response) th
Map<String, Object> initData = new HashMap<>();
initData.put("parsedRequest", feedRequest);
model = Model.getModelMap("feedModelSet", initData);
pageId = feedRequest.getType() + "-" + feedRequest.getFormat() + ".vm";
pageId = feedRequest.getType() + "-atom.vm";
} catch (WebloggerException ex) {
log.error("ERROR loading model for page", ex);
if (!response.isCommitted()) {
Expand Down Expand Up @@ -296,14 +292,13 @@ public void getFeed(HttpServletRequest request, HttpServletResponse response) th
* Generate a cache key from a parsed weblog feed request.
* This generates a key of the form ...
*
* <handle>/<type>/<format>/<term>[/category]
* <handle>/<type>[[/cat/{category}]|[/tag/{tag}]]
*
* examples ...
*
* foo/entries/rss
* foo/comments/rss/MyCategory
* foo/entries/atom
*
* foo/entries
* foo/comments/cat/technology
* foo/entries/tag/travel
*/
public String generateKey(WeblogFeedRequest feedRequest) {
StringBuilder key = new StringBuilder();
Expand All @@ -312,18 +307,15 @@ public String generateKey(WeblogFeedRequest feedRequest) {
key.append(feedRequest.getWeblogHandle());

key.append("/").append(feedRequest.getType());
key.append("/").append(feedRequest.getFormat());

if(feedRequest.getCategoryName() != null) {
if (feedRequest.getCategoryName() != null) {
String cat = feedRequest.getCategoryName();
cat = Utilities.encode(cat);
key.append("/cat/").append(cat);
}

if (feedRequest.getTag() != null) {
} else if (feedRequest.getTag() != null) {
String tag = feedRequest.getTag();
tag = Utilities.encode(tag);
key.append("/tags/").append(tag);
key.append("/tag/").append(tag);
}

return key.toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,11 +166,10 @@ public void getPlanetFeed(HttpServletRequest request, HttpServletResponse respon
// populate the rendering model
model.put("planetManager", planetManager);
model.put("planet", planet);
model.put("date", new Date());
model.put("utils", new UtilitiesModel());
model.put("lastModified", lastModified);
model.put("absoluteSite", WebloggerStaticConfig.getAbsoluteContextURL());
model.put("feedStyle", propertiesManager.getBooleanProperty("site.newsfeeds.styledFeeds"));
model.put("generatorVersion", WebloggerStaticConfig.getProperty("weblogger.version", "Unknown"));
model.put("maxEntries", propertiesManager.getIntProperty("site.newsfeeds.maxEntries"));
model.put("page", page);

Expand All @@ -188,8 +187,7 @@ public void getPlanetFeed(HttpServletRequest request, HttpServletResponse respon
Renderer renderer;
try {
log.debug("Looking up renderer");
Template template = new SharedTemplate(
"templates/feeds/planet-rss.vm", TemplateLanguage.VELOCITY);
Template template = new SharedTemplate("templates/feeds/planet-atom.vm", TemplateLanguage.VELOCITY);
renderer = rendererManager.getRenderer(template, DeviceType.standard);
} catch (Exception e) {
// nobody wants to render my content :(
Expand Down Expand Up @@ -236,14 +234,14 @@ public void getPlanetFeed(HttpServletRequest request, HttpServletResponse respon

/**
* Generate a cache key from a parsed planet request. This generates a key
* of the form planet.key:{planetname}/{feed flavor}/page
* of the form planet.key:{planetname}/feed/{page}
*
* example: planet.key:testplanet/rss/page
* example: planet.key:testplanet/feed/2
*/
private String generateKey(String planet, int page) {
String key = "planet.key:";
key += planet;
key += "/rss/";
key += "/feed/";
key += page;
return key;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ public class WeblogFeedRequest extends WeblogRequest {

private static Log log = LogFactory.getLog(WeblogFeedRequest.class);

// type is "entries" or "comments"
private String type = null;
private String format = null;
private String categoryName = null;
private String tag = null;
private boolean siteWideFeed = false;
Expand All @@ -62,18 +62,12 @@ public WeblogFeedRequest(HttpServletRequest request) {

/*
* parse the path info. Format:
* /<type>/<format>
* /<type>
*/
if (pathInfo != null && pathInfo.trim().length() > 1) {
String[] pathElements = pathInfo.split("/");
if (pathElements.length == 2) {
type = pathElements[0];
format = pathElements[1];
} else {
throw new IllegalArgumentException("Invalid feed path info: "+ request.getRequestURL());
}
type = pathInfo.startsWith("/") ? pathInfo.substring(1) : pathInfo;
} else {
throw new IllegalArgumentException("Invalid feed path info: "+ request.getRequestURL());
type = "entries";
}

// parse request parameters
Expand All @@ -98,7 +92,6 @@ public WeblogFeedRequest(HttpServletRequest request) {
if (log.isDebugEnabled()) {
log.debug("type = " + type);
log.debug("page = " + type);
log.debug("format = " + format);
log.debug("category = " + categoryName);
log.debug("tag = " + tag);
}
Expand All @@ -108,10 +101,6 @@ public String getType() {
return type;
}

public String getFormat() {
return format;
}

public String getCategoryName() {
return categoryName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@
<type>boolean</type>
<default-value>true</default-value>
</property-def>

</display-group>


Expand Down
52 changes: 3 additions & 49 deletions app/src/main/webapp/WEB-INF/velocity/feeds.vm
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,9 @@
#** macros for use by TightBlog's built-in feed templates

Contents
#showEntriesAtom10()
#showEntriesRSS20()
#showCommentsAtom10()
#showCommentsRSS20()
#showFilesAtom10()
#showEntriesAtom10($entries)
#showCommentsAtom10($comments)
#showFeedHistory($pager)
*#

#macro(showEntriesAtom10 $entries)
Expand Down Expand Up @@ -58,38 +56,6 @@
#end
#end

#macro(showEntriesRSS20 $entries)
#foreach($entry in $entries)
<item>
<guid isPermaLink="true">$entry.permalink</guid>
<title>$utils.escapeXML($utils.removeHTML($entry.title))</title>
<dc:creator>$utils.escapeXML($entry.creator.screenName)</dc:creator>
<link>$entry.permalink</link>
#if( $entry.link && !$entry.link.trim().equals("") )
<source url="$utils.escapeXML($entry.link)">$utils.escapeXML($entry.link)</source>
#end
<pubDate>$utils.formatRfc822Date($entry.pubTime)</pubDate>
<category>$utils.escapeXML($entry.category.name)</category>
#foreach($tag in $entry.tags)
<category>$utils.escapeXML($tag.name)</category>
#end
#if( $utils.isNotEmpty($entry.summary) && $utils.isNotEmpty($entry.text))<atom:summary type="html">$utils.escapeXML($entry.transformedSummary)</atom:summary>#end
#if( $utils.isNotEmpty($entry.summary) && $utils.isEmpty($entry.text))<description>$utils.escapeXML($entry.transformedText)</description>#end
#if( $utils.isNotEmpty($entry.text) )<description>$utils.escapeXML($entry.transformedText)</description>#end
#set( $mc_url = $entry.enclosureUrl )
#set( $mc_type = $entry.enclosureType )
#set( $mc_length = $entry.enclosureLength )
#if( $mc_url && $mc_length && $mc_type )
<enclosure url="$utils.escapeXML($mc_url)" type="$mc_type" length="$mc_length" />
#set($mc_url = false) #set($mc_type = false) #set($mc_length = false)
#end
#if( $website.allowComments )
<comments>$url.comments($entry.anchor)</comments>
#end
</item>
#end
#end

#macro(showCommentsAtom10 $comments)
#foreach($comment in $comments)
<entry>
Expand All @@ -104,18 +70,6 @@
#end
#end

#macro(showCommentsRSS20 $comments)
#foreach($comment in $comments)
<item>
<guid isPermaLink="true">${comment.weblogEntry.permalink}#comment-${comment.timestamp}</guid>
<title>Re: $utils.escapeXML($comment.weblogEntry.title)</title>
<dc:creator>$utils.escapeXML($utils.removeHTML($comment.name))</dc:creator>
<pubDate>$utils.formatRfc822Date($comment.postTime)</pubDate>
<description>$utils.escapeXML($comment.processedContent)</description>
</item>
#end
#end

#macro(showFeedHistory $pager)
<link rel="first" type="application/atom+xml" href="$utils.escapeXML($pager.url)" />
#if($pager.hasMoreItems())
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/webapp/WEB-INF/velocity/site.vm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
limitations under the License. For additional information regarding
copyright in this work, please see the NOTICE file in the top level
directory of this distribution.

Source file modified from the original ASF source; all changes made
are also under Apache License.
*#

#** macros for use with SitePageModel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
directory of this distribution.

*#<?xml version="1.0" encoding='utf-8'?>
#if($config.feedStyle)<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/tb-ui/styles/atom.xsl" media="screen"?>#end
#if()<?xml-stylesheet type="text/xsl" href="$url.absoluteSite/tb-ui/styles/atom.xsl" media="screen"?>#end
#set($pager = $model.commentsPager)
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="html">$utils.escapeXML($model.weblog.name) (Comments)</title>
Expand Down
Loading

0 comments on commit 3a4153a

Please sign in to comment.