aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-05-28 19:43:28 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-05-28 19:43:28 +0000
commitba1765fbdfeb0fd1fdf1354c1688580ef7864b68 (patch)
treeca178c0c9343617e4b85879fb8ca91bd6a77605a
parent8fc13829491c4a3ec3d8e174fd96687e111da251 (diff)
downloadikiwiki-ba1765fbdfeb0fd1fdf1354c1688580ef7864b68.tar
ikiwiki-ba1765fbdfeb0fd1fdf1354c1688580ef7864b68.tar.gz
* 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>.
-rw-r--r--IkiWiki/Plugin/inline.pm4
-rw-r--r--IkiWiki/Plugin/meta.pm2
-rw-r--r--debian/changelog13
-rw-r--r--doc/bugs/HTML-escaped_titles_in_Atom__44___RSS_feeds_don__39__t_validate.mdwn4
-rw-r--r--templates/atomitem.tmpl2
-rw-r--r--templates/atompage.tmpl2
-rw-r--r--templates/rssitem.tmpl4
-rw-r--r--templates/rsspage.tmpl2
8 files changed, 23 insertions, 10 deletions
diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
index 063673730..e23f7b903 100644
--- a/IkiWiki/Plugin/inline.pm
+++ b/IkiWiki/Plugin/inline.pm
@@ -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,
diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
index 18e28a196..184146cfe 100644
--- a/IkiWiki/Plugin/meta.pm
+++ b/IkiWiki/Plugin/meta.pm
@@ -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;
diff --git a/debian/changelog b/debian/changelog
index 94576d451..ffcb2e85a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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.
-
- -- Joey Hess <joeyh@debian.org> Mon, 28 May 2007 15:00:02 -0400
+ * 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:34:27 -0400
ikiwiki (2.1) unstable; urgency=low
diff --git a/doc/bugs/HTML-escaped_titles_in_Atom__44___RSS_feeds_don__39__t_validate.mdwn b/doc/bugs/HTML-escaped_titles_in_Atom__44___RSS_feeds_don__39__t_validate.mdwn
index 9d95c15e3..48c168997 100644
--- a/doc/bugs/HTML-escaped_titles_in_Atom__44___RSS_feeds_don__39__t_validate.mdwn
+++ b/doc/bugs/HTML-escaped_titles_in_Atom__44___RSS_feeds_don__39__t_validate.mdwn
@@ -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]]
diff --git a/templates/atomitem.tmpl b/templates/atomitem.tmpl
index bdbfe69c7..9190fcc84 100644
--- a/templates/atomitem.tmpl
+++ b/templates/atomitem.tmpl
@@ -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>
diff --git a/templates/atompage.tmpl b/templates/atompage.tmpl
index b811b8764..1bca3e7f8 100644
--- a/templates/atompage.tmpl
+++ b/templates/atompage.tmpl
@@ -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>
diff --git a/templates/rssitem.tmpl b/templates/rssitem.tmpl
index 0fab42e71..c243b74b3 100644
--- a/templates/rssitem.tmpl
+++ b/templates/rssitem.tmpl
@@ -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>
diff --git a/templates/rsspage.tmpl b/templates/rsspage.tmpl
index 38f9b16b3..34c1a33ce 100644
--- a/templates/rsspage.tmpl
+++ b/templates/rsspage.tmpl
@@ -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>