From 7ba4a844a8b98395774298296c309c613a68d3dd Mon Sep 17 00:00:00 2001
From: joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Date: Wed, 6 Sep 2006 21:03:39 +0000
Subject: [PATCH] * Include <link rel> tag for RSS feeds, used by some
 aggregators and   firefox to find the feed.

---
 IkiWiki/Plugin/inline.pm | 20 +++++++++++++++++---
 debian/changelog         |  4 +++-
 doc/todo/RSS_links.mdwn  |  4 +++-
 templates/page.tmpl      |  3 +++
 4 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
index 70d5be235..6661ed215 100644
--- a/IkiWiki/Plugin/inline.pm
+++ b/IkiWiki/Plugin/inline.pm
@@ -10,6 +10,8 @@ use URI;
 sub import { #{{{
 	IkiWiki::hook(type => "preprocess", id => "inline", 
 		call => \&IkiWiki::preprocess_inline);
+	IkiWiki::hook(type => "pagetemplate", id => "inline",
+		call => \&IkiWiki::pagetemplate_inline);
 	# Hook to change to do pinging since it's called late.
 	# This ensures each page only pings once and prevents slow
 	# pings interrupting page builds.
@@ -22,6 +24,7 @@ sub import { #{{{
 package IkiWiki;
 
 my %toping;
+my %rsslinks;
 
 sub yesno ($) { #{{{
 	my $val=shift;
@@ -62,22 +65,23 @@ sub preprocess_inline (@) { #{{{
 
 	add_depends($params{page}, $params{pages});
 
+	my $rssurl=rsspage(basename($params{page}));
 	my $ret="";
-	
+
 	if (exists $params{rootpage} && $config{cgiurl}) {
 		# Add a blog post form, with a rss link button.
 		my $formtemplate=template("blogpost.tmpl", blind_cache => 1);
 		$formtemplate->param(cgiurl => $config{cgiurl});
 		$formtemplate->param(rootpage => $params{rootpage});
 		if ($config{rss}) {
-			$formtemplate->param(rssurl => rsspage(basename($params{page})));
+			$formtemplate->param(rssurl => $rssurl);
 		}
 		$ret.=$formtemplate->output;
 	}
 	elsif ($config{rss} && $rss) {
 		# Add a rss link button.
 		my $linktemplate=template("rsslink.tmpl", blind_cache => 1);
-		$linktemplate->param(rssurl => rsspage(basename($params{page})));
+		$linktemplate->param(rssurl => $rssurl);
 		$ret.=$linktemplate->output;
 	}
 	
@@ -146,11 +150,21 @@ sub preprocess_inline (@) { #{{{
 		writefile(rsspage($params{page}), $config{destdir},
 			genrss($desc, $params{page}, @list));
 		$toping{$params{page}}=1 unless $config{rebuild};
+		$rsslinks{$params{destpage}}=qq{<link rel="alternate" type="application/rss+xml" title="RSS" href="$rssurl" />};
 	}
 	
 	return $ret;
 } #}}}
 
+sub pagetemplate_inline (@) { #{{{
+	my %params=@_;
+	my $page=$params{page};
+	my $template=$params{template};
+
+	$template->param(rsslink => $rsslinks{$page})
+		if exists $rsslinks{$page} && $template->query(name => "rsslink");
+} #}}}
+
 sub get_inline_content ($$) { #{{{
 	my $page=shift;
 	my $destpage=shift;
diff --git a/debian/changelog b/debian/changelog
index 8f9bfe2ec..3e7c3e082 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,8 +6,10 @@ ikiwiki (1.25) UNRELEASED; urgency=low
     subversion repos and fixing some other issues.
   * Add support for tla, contributed by Clint Adams. Closes: #385936
   * Add support for mercurial, contributed by Emanuele Aina.
+  * Include <link rel> tag for RSS feeds, used by some aggregators and
+    firefox to find the feed.
 
- -- Joey Hess <joeyh@debian.org>  Wed,  6 Sep 2006 15:55:39 -0400
+ -- Joey Hess <joeyh@debian.org>  Wed,  6 Sep 2006 16:42:21 -0400
 
 ikiwiki (1.24) unstable; urgency=low
 
diff --git a/doc/todo/RSS_links.mdwn b/doc/todo/RSS_links.mdwn
index 9ee62ee4e..bfbd495e0 100644
--- a/doc/todo/RSS_links.mdwn
+++ b/doc/todo/RSS_links.mdwn
@@ -10,6 +10,8 @@ all of them.
 
 For example, firefox requires the following:
 
-	<link rel="alternate" type="application/rss+xml" title="RSS href="index.rss" />
+	<link rel="alternate" type="application/rss+xml" title="RSS" href="index.rss" />
+
+[[todo/done]]
 
 --[[Joey]]
diff --git a/templates/page.tmpl b/templates/page.tmpl
index 650d90ed1..15d39fbef 100644
--- a/templates/page.tmpl
+++ b/templates/page.tmpl
@@ -6,6 +6,9 @@
 <title><TMPL_VAR TITLE></title>
 <link rel="stylesheet" href="<TMPL_VAR BASEURL>style.css" type="text/css" />
 <link rel="stylesheet" href="<TMPL_VAR BASEURL>local.css" type="text/css" />
+<TMPL_IF NAME="RSSLINK">
+<TMPL_VAR RSSLINK>
+</TMPL_IF>
 <TMPL_IF NAME="META">
 <TMPL_VAR META>
 </TMPL_IF>
-- 
2.39.5