Project

General

Profile

Feature #1521 » rss.patch

RSS patch - Henning Perl, 2008-07-02 14:02

View differences:

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 %>
(1-1/2)