parent
154a572ec6
commit
f32369f669
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/perl
|
||||
# -*- cperl-indent-level: 8; -*-
|
||||
# Ikiwiki pedigree plugin.
|
||||
package IkiWiki::Plugin::pedigree;
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
use IkiWiki 2.00;
|
||||
|
||||
sub import { #{{{
|
||||
hook(type => "pagetemplate", id => "pedigree", call => \&pagetemplate);
|
||||
} # }}}
|
||||
|
||||
sub pedigree ($) { #{{{
|
||||
my $page=shift;
|
||||
|
||||
my @ret;
|
||||
my $path="";
|
||||
my $title=$config{wikiname};
|
||||
my $i;
|
||||
|
||||
my @pagepath=(split("/", $page));
|
||||
my $pageloc=@pagepath - 1;
|
||||
foreach my $dir (@pagepath) {
|
||||
next if $dir eq 'index';
|
||||
push @ret, {
|
||||
url => urlto($path, $page),
|
||||
page => $title,
|
||||
level => $i,
|
||||
is_root => ($i eq 0),
|
||||
is_first_child => ($i eq 1),
|
||||
is_mother => ($i eq ($pageloc - 1)),
|
||||
is_grand_mother => ($i eq ($pageloc - 2))
|
||||
};
|
||||
$path.="/".$dir;
|
||||
$title=pagetitle($dir);
|
||||
$i++;
|
||||
}
|
||||
return @ret;
|
||||
} #}}}
|
||||
|
||||
sub pagetemplate (@) { #{{{
|
||||
my %params=@_;
|
||||
my $page=$params{page};
|
||||
my $template=$params{template};
|
||||
|
||||
if ($template->query(name => "pedigree")) {
|
||||
$template->param(pedigree => [pedigree($page)]);
|
||||
}
|
||||
|
||||
} # }}}
|
||||
|
||||
1
|
Loading…
Reference in New Issue