Feature #1521 » rss.patch
app/controllers/issues_controller.rb (working copy) | ||
---|---|---|
53 | 53 |
respond_to do |format| |
54 | 54 |
format.html { } |
55 | 55 |
format.atom { } |
56 |
format.rss { } |
|
56 | 57 |
format.csv { limit = Setting.issues_export_limit.to_i } |
57 | 58 |
format.pdf { limit = Setting.issues_export_limit.to_i } |
58 | 59 |
end |
... | ... | |
65 | 66 |
:offset => @issue_pages.current.offset |
66 | 67 |
respond_to do |format| |
67 | 68 |
format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? } |
68 |
format.atom { render_feed(@issues, :title => l(:label_issue_plural)) } |
|
69 |
format.atom { render_feed(@issues, :format => 'atom', :title => l(:label_issue_plural)) } |
|
70 |
format.rss { render_feed(@issues, :format => 'rss', :title => l(:label_issue_plural)) } |
|
69 | 71 |
format.csv { send_data(issues_to_csv(@issues, @project).read, :type => 'text/csv; header=present', :filename => 'export.csv') } |
70 | 72 |
format.pdf { send_data(render(:template => 'issues/index.rfpdf', :layout => false), :type => 'application/pdf', :filename => 'export.pdf') } |
71 | 73 |
end |
... | ... | |
106 | 108 |
respond_to do |format| |
107 | 109 |
format.html { render :template => 'issues/show.rhtml' } |
108 | 110 |
format.atom { render :action => 'changes', :layout => false, :content_type => 'application/atom+xml' } |
111 |
format.rss { render :action => 'changes', :layout => false, :content_type => 'application/rss+xml' } |
|
109 | 112 |
format.pdf { send_data(render(:template => 'issues/show.rfpdf', :layout => false), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") } |
110 | 113 |
end |
111 | 114 |
end |
app/controllers/application.rb (working copy) | ||
---|---|---|
152 | 152 |
@items.sort! {|x,y| y.event_datetime <=> x.event_datetime } |
153 | 153 |
@items = @items.slice(0, Setting.feeds_limit.to_i) |
154 | 154 |
@title = options[:title] || Setting.app_title |
155 |
render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml' |
|
155 |
format = options[:format] || 'atom' |
|
156 |
render :template => "common/feed.#{format}.rxml", :layout => false, :content_type => "application/#{format}+xml" |
|
156 | 157 |
end |
157 | 158 |
|
158 | 159 |
def self.accept_key_auth(*actions) |
app/views/common/feed.rss.rxml (revision 0) | ||
---|---|---|
1 |
xml.instruct! |
|
2 |
xml.rss "version" => "2.0" do |
|
3 |
xml.channel do |
|
4 |
xml.title truncate_single_line(@title, 100) |
|
5 |
xml.language "en-us" |
|
6 |
xml.link url_for(params.merge({:format => nil, :only_path => false})) |
|
7 |
xml.description "" |
|
8 |
xml.lastBuildDate((@items.first ? @items.first.event_datetime : Time.now).strftime("%a, %d %b %Y %H:%M:%S CST")) |
|
9 |
xml.generator Redmine::Info.url |
|
10 |
@items.each do |item| |
|
11 |
xml.item do |
|
12 |
url = url_for(item.event_url(:only_path => false)) |
|
13 |
if @project |
|
14 |
xml.title truncate_single_line(item.event_title, 100) |
|
15 |
else |
|
16 |
xml.title truncate_single_line("#{item.project} - #{item.event_title}", 100) |
|
17 |
end |
|
18 |
xml.link url |
|
19 |
xml.guid url |
|
20 |
xml.pubDate item.event_datetime.strftime("%a, %d %b %Y %H:%M:%S CST") |
|
21 |
author = item.event_author if item.respond_to?(:event_author) |
|
22 |
if author then |
|
23 |
author = "#{author.mail} (#{author})" if author.respond_to?(:mail) && !author.mail.blank? |
|
24 |
xml.author(author) |
|
25 |
end |
|
26 |
xml.description do |
|
27 |
xml.text! textilizable(item.event_description) |
|
28 |
end |
|
29 |
end |
|
30 |
end |
|
31 |
end |
|
32 |
end |
|
33 |
app/views/issues/index.rhtml (working copy) | ||
---|---|---|
46 | 46 |
<p class="other-formats"> |
47 | 47 |
<%= l(:label_export_to) %> |
48 | 48 |
<span><%= link_to 'Atom', {:query_id => @query, :format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span> |
49 |
<span><%= link_to 'RSS', {:query_id => @query, :format => 'rss', :key => User.current.rss_key}, :class => 'feed' %></span> |
|
49 | 50 |
<span><%= link_to 'CSV', {:format => 'csv'}, :class => 'csv' %></span> |
50 | 51 |
<span><%= link_to 'PDF', {:format => 'pdf'}, :class => 'pdf' %></span> |
51 | 52 |
</p> |
... | ... | |
57 | 58 |
<% end %> |
58 | 59 | |
59 | 60 |
<% content_for :header_tags do %> |
60 |
<%= auto_discovery_link_tag(:atom, {:query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_issue_plural)) %> |
|
61 |
<%= auto_discovery_link_tag(:atom, {:action => 'changes', :query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_changes_details)) %> |
|
61 |
<%= auto_discovery_link_tag(:atom, {:query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_issue_plural) + " (atom)") %> |
|
62 |
<%= auto_discovery_link_tag(:atom, {:action => 'changes', :query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_changes_details) + " (atom)") %> |
|
63 |
<%= auto_discovery_link_tag(:rss, {:query_id => @query, :format => 'rss', :page => nil, :key => User.current.rss_key}, :title => l(:label_issue_plural) + " (rss)") %> |
|
64 |
<%= auto_discovery_link_tag(:rss, {:action => 'changes', :query_id => @query, :format => 'rss', :page => nil, :key => User.current.rss_key}, :title => l(:label_changes_details) + " (rss)") %> |
|
62 | 65 |
<%= javascript_include_tag 'context_menu' %> |
63 | 66 |
<%= stylesheet_link_tag 'context_menu' %> |
64 | 67 |
<% end %> |
app/views/issues/show.rhtml (working copy) | ||
---|---|---|
105 | 105 |
<p class="other-formats"> |
106 | 106 |
<%= l(:label_export_to) %> |
107 | 107 |
<span><%= link_to 'Atom', {:format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span> |
108 |
<span><%= link_to 'RSS', {:format => 'rss', :key => User.current.rss_key}, :class => 'feed' %></span> |
|
108 | 109 |
<span><%= link_to 'PDF', {:format => 'pdf'}, :class => 'pdf' %></span> |
109 | 110 |
</p> |
110 | 111 | |
... | ... | |
115 | 116 |
<% end %> |
116 | 117 | |
117 | 118 |
<% content_for :header_tags do %> |
118 |
<%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %> |
|
119 |
<%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject} (atom)") %> |
|
120 |
<%= auto_discovery_link_tag(:rss, {:format => 'rss', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject} (rss)") %> |
|
119 | 121 |
<% end %> |