diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb index 7d0a6065b18..d9b32ed8656 100644 --- a/app/controllers/list_controller.rb +++ b/app/controllers/list_controller.rb @@ -11,7 +11,10 @@ class ListController < ApplicationController user = list_target_user list = TopicQuery.new(user, list_opts).public_send("list_#{filter}") list.more_topics_url = url_for(self.public_send "#{filter}_path".to_sym, list_opts.merge(format: 'json', page: next_page)) - @description = SiteSetting.site_description if [:latest, :hot].include?(filter) + if [:latest, :hot].include?(filter) + @description = SiteSetting.site_description + @rss = filter + end respond(list) end diff --git a/app/views/list/list.erb b/app/views/list/list.erb index 5170ba5dbbc..cb0e42e95c6 100644 --- a/app/views/list/list.erb +++ b/app/views/list/list.erb @@ -10,6 +10,12 @@

<%= t 'powered_by_html' %>

+<% if @rss %> + <% content_for :head do %> + <%= auto_discovery_link_tag(:rss, {action: "#{@rss}_feed"}, title: I18n.t("rss_description.#{@rss}")) %> + <% end %> +<% end %> + <% if @category %> <% content_for :head do %> <%= auto_discovery_link_tag(@category, {action: :category_feed, format: :rss}, title: t('rss_topics_in_category', category: @category.name), type: 'application/rss+xml') %> diff --git a/config/routes.rb b/config/routes.rb index eea9ce32e24..83309bcdb20 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -197,7 +197,7 @@ Discourse::Application.routes.draw do get 'popular/more' => 'list#popular_redirect' [:latest, :hot].each do |filter| - get "#{filter}.rss" => "list##{filter}_feed", format: :rss, as: "#{filter}_feed", filter: filter + get "#{filter}.rss" => "list##{filter}_feed", format: :rss end [:latest, :hot, :favorited, :read, :posted, :unread, :new].each do |filter| diff --git a/spec/controllers/list_controller_spec.rb b/spec/controllers/list_controller_spec.rb index e944637ec42..b80d0abdbc7 100644 --- a/spec/controllers/list_controller_spec.rb +++ b/spec/controllers/list_controller_spec.rb @@ -36,6 +36,20 @@ describe ListController do end + describe 'RSS feeds' do + + [:latest, :hot].each do |filter| + + it 'renders RSS' do + get "#{filter}_feed", format: :rss + response.should be_success + response.content_type.should == 'application/rss+xml' + end + + end + + end + context 'category' do context 'in a category' do