X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/523650d9c2b876152aaa9bc6c5d6363377ea7008..08b335638c809268697bd97078225ece1065ff1c:/IkiWiki/Plugin/template.pm

diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm
index 57bff20ff..39d9667f9 100644
--- a/IkiWiki/Plugin/template.pm
+++ b/IkiWiki/Plugin/template.pm
@@ -10,7 +10,8 @@ use Encode;
 
 sub import {
 	hook(type => "getsetup", id => "template", call => \&getsetup);
-	hook(type => "preprocess", id => "template", call => \&preprocess);
+	hook(type => "preprocess", id => "template", call => \&preprocess,
+		scan => 1);
 }
 
 sub getsetup () {
@@ -24,6 +25,10 @@ sub getsetup () {
 sub preprocess (@) {
 	my %params=@_;
 
+	# This needs to run even in scan mode, in order to process
+	# links and other metadata included via the template.
+	my $scan=! defined wantarray;
+
 	if (! exists $params{id}) {
 		error gettext("missing id parameter")
 	}
@@ -57,20 +62,23 @@ sub preprocess (@) {
 	$params{basename}=IkiWiki::basename($params{page});
 
 	foreach my $param (keys %params) {
+		my $value=IkiWiki::preprocess($params{page}, $params{destpage},
+		          IkiWiki::filter($params{page}, $params{destpagea},
+		          $params{$param}), $scan);
 		if ($template->query(name => $param)) {
 			$template->param($param =>
 				IkiWiki::htmlize($params{page}, $params{destpage},
 					pagetype($pagesources{$params{page}}),
-					$params{$param}));
+					$value));
 		}
 		if ($template->query(name => "raw_$param")) {
-			$template->param("raw_$param" => $params{$param});
+			$template->param("raw_$param" => $value);
 		}
 	}
 
 	return IkiWiki::preprocess($params{page}, $params{destpage},
-		IkiWiki::filter($params{page}, $params{destpage},
-		$template->output));
+	       IkiWiki::filter($params{page}, $params{destpage},
+	       $template->output), $scan);
 }
 
 1