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

View File

@ -65,7 +65,7 @@ sub preprocess (@) { #{{{
}
}
elsif ($key eq 'title') {
$title{$page}=encode_entities($value);
$title{$page}=HTML::Entities::encode_numeric($value);
}
elsif ($key eq 'permalink') {
$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
* 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.
* 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

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.)
>
> --[[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>
<title><TMPL_VAR TITLE ESCAPE=HTML></title>
<title><TMPL_VAR TITLE></title>
<TMPL_IF NAME="AUTHOR">
<author><TMPL_VAR AUTHOR ESCAPE=HTML></author>
<TMPL_ELSE>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<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 FEEDURL>" rel="self"/>
<author>

View File

@ -1,9 +1,9 @@
<item>
<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>
<TMPL_ELSE>
<title><TMPL_VAR TITLE ESCAPE=HTML></title>
<title><TMPL_VAR TITLE></title>
</TMPL_IF>
<guid><TMPL_VAR URL></guid>
<link><TMPL_VAR PERMALINK></link>

View File

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