* More consistent encoding of titles in rss and atom feeds. Don't use

ESCAPE=HTML for titles in the templates for these feeds, and instead
  escape the title going in to the template. Previously, the title was
  sometimes double-escaped in a feed (if set via meta title), and sometimes
  not (if set from the page filename).
* In the meta plugin, when a title is set, encode the html entities in it
  numerically. This works better in the current landscape of a rss spec that
  doesn't specify encoding, and variously broken feed consumers, according
  to <http://www.rssboard.org/rss-profile#data-types-characterdata>.
master
joey 2007-05-28 19:43:28 +00:00
parent 8fc1382949
commit ba1765fbdf
8 changed files with 22 additions and 9 deletions

View File

@ -333,7 +333,7 @@ sub genfeed ($$$$@) { #{{{
my $pcontent = absolute_urls(get_inline_content($p, $page), $url); my $pcontent = absolute_urls(get_inline_content($p, $page), $url);
$itemtemplate->param( $itemtemplate->param(
title => pagetitle(basename($p), 1), title => pagetitle(basename($p)),
url => $u, url => $u,
permalink => $u, permalink => $u,
date_822 => date_822($pagectime{$p}), date_822 => date_822($pagectime{$p}),
@ -377,7 +377,7 @@ sub genfeed ($$$$@) { #{{{
my $template=template($feedtype."page.tmpl", blind_cache => 1); my $template=template($feedtype."page.tmpl", blind_cache => 1);
$template->param( $template->param(
title => $page ne "index" ? pagetitle($page, 1) : $config{wikiname}, title => $page ne "index" ? pagetitle($page) : $config{wikiname},
wikiname => $config{wikiname}, wikiname => $config{wikiname},
pageurl => $url, pageurl => $url,
content => $content, content => $content,

View File

@ -65,7 +65,7 @@ sub preprocess (@) { #{{{
} }
} }
elsif ($key eq 'title') { elsif ($key eq 'title') {
$title{$page}=encode_entities($value); $title{$page}=HTML::Entities::encode_numeric($value);
} }
elsif ($key eq 'permalink') { elsif ($key eq 'permalink') {
$permalink{$page}=$value; $permalink{$page}=$value;

11
debian/changelog vendored
View File

@ -18,8 +18,17 @@ ikiwiki (2.2) UNRELEASED; urgency=low
* Fix FTBFS in test suite introduced in last version. Closes: #425891 * Fix FTBFS in test suite introduced in last version. Closes: #425891
* Apply a patch from Carl Worth allowing a class attribute to be passed * Apply a patch from Carl Worth allowing a class attribute to be passed
through the img plugin. Also allow the id attribute to be passed through. through the img plugin. Also allow the id attribute to be passed through.
* More consistent encoding of titles in rss and atom feeds. Don't use
ESCAPE=HTML for titles in the templates for these feeds, and instead
escape the title going in to the template. Previously, the title was
sometimes double-escaped in a feed (if set via meta title), and sometimes
not (if set from the page filename).
* In the meta plugin, when a title is set, encode the html entities in it
numerically. This works better in the current landscape of a rss spec that
doesn't specify encoding, and variously broken feed consumers, according
to <http://www.rssboard.org/rss-profile#data-types-characterdata>.
-- Joey Hess <joeyh@debian.org> Mon, 28 May 2007 15:00:02 -0400 -- Joey Hess <joeyh@debian.org> Mon, 28 May 2007 15:34:27 -0400
ikiwiki (2.1) unstable; urgency=low ikiwiki (2.1) unstable; urgency=low

View File

@ -30,3 +30,7 @@ For Atom, at least, I believe adding `type="xhtml"` to the title element will wo
> characters are currently being double-escaped in the rss.) > characters are currently being double-escaped in the rss.)
> >
> --[[Joey]] > --[[Joey]]
> Update: Ok, I've fixed this for titles, as a special case, but the
> underlying problem remains for other fields in rss feeds (such as
> author), so I'm leaving this bug report open. --[[Joey]]

View File

@ -1,5 +1,5 @@
<entry> <entry>
<title><TMPL_VAR TITLE ESCAPE=HTML></title> <title><TMPL_VAR TITLE></title>
<TMPL_IF NAME="AUTHOR"> <TMPL_IF NAME="AUTHOR">
<author><TMPL_VAR AUTHOR ESCAPE=HTML></author> <author><TMPL_VAR AUTHOR ESCAPE=HTML></author>
<TMPL_ELSE> <TMPL_ELSE>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<title><TMPL_VAR TITLE ESCAPE=HTML></title> <title><TMPL_VAR TITLE></title>
<link href="<TMPL_VAR PAGEURL>"/> <link href="<TMPL_VAR PAGEURL>"/>
<link href="<TMPL_VAR FEEDURL>" rel="self"/> <link href="<TMPL_VAR FEEDURL>" rel="self"/>
<author> <author>

View File

@ -1,9 +1,9 @@
<item> <item>
<TMPL_IF NAME="AUTHOR"> <TMPL_IF NAME="AUTHOR">
<title><TMPL_VAR AUTHOR ESCAPE=HTML>: <TMPL_VAR TITLE ESCAPE=HTML></title> <title><TMPL_VAR AUTHOR ESCAPE=HTML>: <TMPL_VAR TITLE></title>
<dc:creator><TMPL_VAR AUTHOR ESCAPE=HTML></dc:creator> <dc:creator><TMPL_VAR AUTHOR ESCAPE=HTML></dc:creator>
<TMPL_ELSE> <TMPL_ELSE>
<title><TMPL_VAR TITLE ESCAPE=HTML></title> <title><TMPL_VAR TITLE></title>
</TMPL_IF> </TMPL_IF>
<guid><TMPL_VAR URL></guid> <guid><TMPL_VAR URL></guid>
<link><TMPL_VAR PERMALINK></link> <link><TMPL_VAR PERMALINK></link>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel> <channel>
<title><TMPL_VAR TITLE ESCAPE=HTML></title> <title><TMPL_VAR TITLE></title>
<link><TMPL_VAR PAGEURL></link> <link><TMPL_VAR PAGEURL></link>
<description><TMPL_VAR FEEDDESC ESCAPE=HTML></description> <description><TMPL_VAR FEEDDESC ESCAPE=HTML></description>
<TMPL_VAR CONTENT> <TMPL_VAR CONTENT>