X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/09b0a3b73f7c9ca873c3e20a64b124c0749b3d3b..af9c5e4bbadc87850f435cfc530ffc1d81419564:/IkiWiki/Plugin/tag.pm

diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm
index bae8e1432..f0e3c223c 100644
--- a/IkiWiki/Plugin/tag.pm
+++ b/IkiWiki/Plugin/tag.pm
@@ -10,7 +10,8 @@ my %tags;
 
 sub import { #{{{
 	hook(type => "getopt", id => "tag", call => \&getopt);
-	hook(type => "preprocess", id => "tag", call => \&preprocess, scan => 1);
+	hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1);
+	hook(type => "preprocess", id => "taglink", call => \&preprocess_taglink, scan => 1);
 	hook(type => "pagetemplate", id => "tag", call => \&pagetemplate);
 } # }}}
 
@@ -32,7 +33,7 @@ sub tagpage ($) { #{{{
 	return $tag;
 } #}}}
 
-sub preprocess (@) { #{{{
+sub preprocess_tag (@) { #{{{
 	if (! @_) {
 		return "";
 	}
@@ -52,6 +53,33 @@ sub preprocess (@) { #{{{
 	return "";
 } # }}}
 
+sub preprocess_taglink (@) { #{{{
+	if (! @_) {
+		return "";
+	}
+	my %params=@_;
+	return join(" ", map {
+		if (/(.*)\|(.*)/) {
+			my $tag=IkiWiki::linkpage($2);
+			$tags{$params{page}}{$tag}=1;
+			push @{$links{$params{page}}}, tagpage($tag);
+			return htmllink($params{page}, $params{destpage},
+				tagpage($tag),
+				linktext => IkiWiki::pagetitle($1));
+		}
+		else {
+			my $tag=IkiWiki::linkpage($_);
+			$tags{$params{page}}{$tag}=1;
+			push @{$links{$params{page}}}, tagpage($tag);
+			return htmllink($params{page}, $params{destpage},
+				tagpage($tag));
+		}
+	}
+	grep {
+		$_ ne 'page' && $_ ne 'destpage' && $_ ne 'preview'
+	} keys %params);
+} # }}}
+
 sub pagetemplate (@) { #{{{
 	my %params=@_;
 	my $page=$params{page};