discourse/app/views/topics/show.rss.erb
Gerhard Schlager 2ecc613c5d FIX: URL encode usernames in user profile links in RSS feeds
user_url() failed for usernames containing Unicode characters because it expects URL encoded usernames. RSS feeds do not support IRIs, so lets convert them to URIs by encoding the usernames.
2019-07-18 23:18:23 +02:00

39 lines
2.0 KiB
Plaintext

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<% topic_url = @topic_view.absolute_url %>
<% lang = SiteSetting.find_by_name('default_locale').try(:value) %>
<% site_email = SiteSetting.find_by_name('contact_email').try(:value) %>
<title><%= @topic_view.title %></title>
<link><%= topic_url %></link>
<description><%= @topic_view.posts.first.raw %></description>
<% if lang %><language><%= lang.sub('_', '-')%></language><% end %>
<lastBuildDate><%= @topic_view.topic.bumped_at.rfc2822 %></lastBuildDate>
<category><%= @topic_view.topic.category.name %></category>
<atom:link href="<%= topic_url %>.rss" rel="self" type="application/rss+xml" />
<% @topic_view.recent_posts.each do |post| %>
<% next unless post.user %>
<item>
<title><%= @topic_view.title %></title>
<dc:creator><![CDATA[<%= "@#{post.user.username}#{" #{post.user.name}" if (post.user.name.present? && SiteSetting.enable_names?)}" -%>]]></dc:creator>
<description><![CDATA[
<% post_url = Discourse.base_url + post.url %>
<p><%= t('author_wrote', author: link_to("@#{post.user.username}", "#{Discourse.base_url}/u/#{url_encode(post.user.username_lower)}")).html_safe %></p>
<blockquote>
<% if post.hidden %>
<%= t('flagging.user_must_edit').html_safe %>
<% else %>
<%= post.cooked.html_safe %>
<% end %>
</blockquote>
<p><%= link_to t('read_full_topic'), post_url %></p>
]]></description>
<link><%= post_url %></link>
<pubDate><%= post.created_at.rfc2822 %></pubDate>
<guid isPermaLink="false"><%= Discourse.current_hostname %>-post-<%= post.topic_id %>-<%= post.post_number %></guid>
<source url="<%= topic_url %>.rss"><%= @topic_view.title %></source>
</item>
<% end %>
</channel>
</rss>