use warnings;
use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
-sub import { #{{{
+sub import {
+ hook(type => "parentlinks", id => "parentlinks", call => \&parentlinks);
hook(type => "pagetemplate", id => "parentlinks", call => \&pagetemplate);
-} # }}}
+}
-sub parentlinks ($) { #{{{
+sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => 1,
+ section => "core",
+ },
+}
+
+sub parentlinks ($) {
my $page=shift;
my @ret;
$depth=$i;
$height=($pagedepth - $depth);
push @ret, {
- url => urlto($path, $page),
+ url => urlto(bestlink($page, $path), $page),
page => $title,
depth => $depth,
height => $height,
"height_$height" => 1,
};
$path.="/".$dir;
- $title=IkiWiki::pagetitle($dir);
+ $title=pagetitle($dir);
$i++;
}
return @ret;
-} #}}}
+}
-sub pagetemplate (@) { #{{{
+sub pagetemplate (@) {
my %params=@_;
my $page=$params{page};
my $template=$params{template};
- if ($template->query(name => "parentlinks")) {
- $template->param(parentlinks => [parentlinks($page)]);
+ if ($template->query(name => "parentlinks") ||
+ $template->query(name => "has_parentlinks")) {
+ my @links=parentlinks($page);
+ $template->param(parentlinks => \@links);
+ $template->param(has_parentlinks => (@links > 0));
}
-} # }}}
+}
1