]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/tag.pm
support rebuild tristate
[git.ikiwiki.info.git] / IkiWiki / Plugin / tag.pm
index 276d67e03d4983c32242c6ee682637e0b5897b27..36b434f675c5d0303aa9bd4962bd7302e85afdd0 100644 (file)
@@ -10,6 +10,7 @@ my %tags;
 
 sub import { #{{{
        hook(type => "getopt", id => "tag", call => \&getopt);
+       hook(type => "getsetup", id => "tag", call => \&getsetup);
        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);
@@ -22,10 +23,22 @@ sub getopt () { #{{{
        GetOptions("tagbase=s" => \$config{tagbase});
 } #}}}
 
+sub getsetup () { #{{{
+       return
+               tagbase => {
+                       type => "string",
+                       example => "tag",
+                       description => "parent page tags are located under",
+                       safe => 1,
+                       rebuild => 1,
+               },
+} #}}}
+
 sub tagpage ($) { #{{{
        my $tag=shift;
                        
-       if (exists $config{tagbase} &&
+       if ($tag !~ m{^\.?/} &&
+           exists $config{tagbase} &&
            defined $config{tagbase}) {
                $tag=$config{tagbase}."/".$tag;
        }
@@ -62,6 +75,7 @@ sub preprocess_taglink (@) { #{{{
                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));
@@ -69,6 +83,7 @@ sub preprocess_taglink (@) { #{{{
                else {
                        my $tag=IkiWiki::linkpage($_);
                        $tags{$params{page}}{$tag}=1;
+                       push @{$links{$params{page}}}, tagpage($tag);
                        return htmllink($params{page}, $params{destpage},
                                tagpage($tag));
                }