added new plugin: pedigree

Signed-off-by: intrigeri <intrigeri@boum.org>
master
intrigeri 2008-07-12 23:04:35 +02:00
parent 154a572ec6
commit f32369f669
1 changed files with 53 additions and 0 deletions

View File

@ -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