adding rss2.0 feeds
parent
ea98163388
commit
814e089551
|
@ -0,0 +1,13 @@
|
||||||
|
class Feeds < Application
|
||||||
|
only_provides :xml
|
||||||
|
def rss
|
||||||
|
@items = []
|
||||||
|
[ Page, Comment ].each do |kls|
|
||||||
|
@items.concat kls.find(:all, :limit => 25, :order => 'created_at DESC')
|
||||||
|
end
|
||||||
|
@items.sort! do |a, b|
|
||||||
|
b.created_at <=> a.created_at
|
||||||
|
end
|
||||||
|
render :format => :xml
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
module Merb
|
||||||
|
module FeedsHelper
|
||||||
|
|
||||||
|
end
|
||||||
|
end # Merb
|
|
@ -0,0 +1,26 @@
|
||||||
|
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<channel>
|
||||||
|
<title><%= tuxconfig[:site_name] -%></title>
|
||||||
|
<link><%= absolute_url(:controller => :news, :action => :index) -%></link>
|
||||||
|
<description><%= tuxconfig[:news_heading] -%></description>
|
||||||
|
<language>en-us</language>
|
||||||
|
<% @items.each_with_index do |item, index| -%>
|
||||||
|
<% break if index >= 25 -%>
|
||||||
|
<item>
|
||||||
|
<% if item.is_a? Page -%>
|
||||||
|
<title><%= item.name -%></title>
|
||||||
|
<link><%= absolute_url(:page, item.name.gsub(/ /, '_')) -%></link>
|
||||||
|
<description><%= item.published? ? 'New blog post' : 'New wiki page' -%></description>
|
||||||
|
<dc:creator><%= item.author.name -%></dc:creator>
|
||||||
|
<dc:date><%= item.created_at -%></dc:date>
|
||||||
|
<% elsif item.is_a? Comment -%>
|
||||||
|
<title>Comment on <%= item.page.name -%></title>
|
||||||
|
<link><%= absolute_url(:page, item.page.name.gsub(/ /, '_')) -%></link>
|
||||||
|
<description>new comment by <%= item.name -%>!</description>
|
||||||
|
<dc:creator><%= item.name -%></dc:creator>
|
||||||
|
<dc:date><%= item.created_at.to_date -%></dc:date>
|
||||||
|
<% end -%>
|
||||||
|
</item>
|
||||||
|
<% end -%>
|
||||||
|
</channel>
|
||||||
|
</rss>
|
|
@ -8,6 +8,8 @@
|
||||||
<link rel="stylesheet" href="/stylesheets/application.css" type="text/css" media="screen" charset="utf-8" />
|
<link rel="stylesheet" href="/stylesheets/application.css" type="text/css" media="screen" charset="utf-8" />
|
||||||
<link rel="stylesheet" href="/stylesheets/tuxbliki.css" type="text/css" media="all" charset="utf-8" />
|
<link rel="stylesheet" href="/stylesheets/tuxbliki.css" type="text/css" media="all" charset="utf-8" />
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS2.0" href="/feeds/rss.xml" />
|
||||||
|
|
||||||
<script src="/javascripts/prototype.js" type="text/javascript"></script>
|
<script src="/javascripts/prototype.js" type="text/javascript"></script>
|
||||||
<script src="/javascripts/scriptaculous.js" type="text/javascript"></script>
|
<script src="/javascripts/scriptaculous.js" type="text/javascript"></script>
|
||||||
<script src="/javascripts/curvycorners.js" type="text/javascript"></script>
|
<script src="/javascripts/curvycorners.js" type="text/javascript"></script>
|
||||||
|
|
|
@ -43,4 +43,8 @@ Merb::Router.prepare do |r|
|
||||||
:controller => 'news',
|
:controller => 'news',
|
||||||
:action => 'index'
|
:action => 'index'
|
||||||
)
|
)
|
||||||
|
r.match('/feeds/:action.xml').to(
|
||||||
|
:controller => 'feeds',
|
||||||
|
:format => 'xml'
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
||||||
|
|
||||||
|
describe Feeds, "index action" do
|
||||||
|
before(:each) do
|
||||||
|
dispatch_to(Feeds, :index)
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
||||||
|
|
||||||
|
describe Merb::FeedsHelper do
|
||||||
|
|
||||||
|
end
|
Reference in New Issue