X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ae474d8e14631ff519ed7d54bb64eaa0538f56d9..981400177d68a279f485727be3f013e68f0bf691:/IkiWiki/Plugin/template.pm

diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm
index b872f0962..39d9667f9 100644
--- a/IkiWiki/Plugin/template.pm
+++ b/IkiWiki/Plugin/template.pm
@@ -25,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")
 	}
@@ -58,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