Merge pull request #5695 from lest/patch-1
add type option to atom feed entry builder
This commit is contained in:
commit
87b30fb2e6
@ -176,6 +176,7 @@ def updated(date_or_time = nil)
|
||||
# * <tt>:updated</tt>: Time of update. Defaults to the updated_at attribute on the record if one such exists.
|
||||
# * <tt>:url</tt>: The URL for this entry. Defaults to the polymorphic_url for the record.
|
||||
# * <tt>:id</tt>: The ID for this entry. Defaults to "tag:#{@view.request.host},#{@feed_options[:schema_date]}:#{record.class}/#{record.id}"
|
||||
# * <tt>:type</tt>: The TYPE for this entry. Defaults to "text/html".
|
||||
def entry(record, options = {})
|
||||
@xml.entry do
|
||||
@xml.id(options[:id] || "tag:#{@view.request.host},#{@feed_options[:schema_date]}:#{record.class}/#{record.id}")
|
||||
@ -188,7 +189,9 @@ def entry(record, options = {})
|
||||
@xml.updated((options[:updated] || record.updated_at).xmlschema)
|
||||
end
|
||||
|
||||
@xml.link(:rel => 'alternate', :type => 'text/html', :href => options[:url] || @view.polymorphic_url(record))
|
||||
type = options.fetch(:type) { 'text/html' }
|
||||
|
||||
@xml.link(:rel => 'alternate', :type => type, :href => options[:url] || @view.polymorphic_url(record))
|
||||
|
||||
yield AtomBuilder.new(@xml)
|
||||
end
|
||||
|
@ -45,6 +45,23 @@ class ScrollsController < ActionController::Base
|
||||
end
|
||||
end
|
||||
EOT
|
||||
FEEDS["entry_type_options"] = <<-EOT
|
||||
atom_feed(:schema_date => '2008') do |feed|
|
||||
feed.title("My great blog!")
|
||||
feed.updated((@scrolls.first.created_at))
|
||||
|
||||
@scrolls.each do |scroll|
|
||||
feed.entry(scroll, :type => 'text/xml') do |entry|
|
||||
entry.title(scroll.title)
|
||||
entry.content(scroll.body, :type => 'html')
|
||||
|
||||
entry.author do |author|
|
||||
author.name("DHH")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
EOT
|
||||
FEEDS["xml_block"] = <<-EOT
|
||||
atom_feed do |feed|
|
||||
feed.title("My great blog!")
|
||||
@ -306,6 +323,20 @@ def test_feed_xhtml
|
||||
end
|
||||
end
|
||||
|
||||
def test_feed_entry_type_option_default_to_text_html
|
||||
with_restful_routing(:scrolls) do
|
||||
get :index, :id => 'defaults'
|
||||
assert_select "entry link[rel=alternate][type=text/html]"
|
||||
end
|
||||
end
|
||||
|
||||
def test_feed_entry_type_option_specified
|
||||
with_restful_routing(:scrolls) do
|
||||
get :index, :id => 'entry_type_options'
|
||||
assert_select "entry link[rel=alternate][type=text/xml]"
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def with_restful_routing(resources)
|
||||
with_routing do |set|
|
||||
|
Loading…
Reference in New Issue
Block a user