blob: efe6c3e770d8a560781f32ad7e2a4f7eccde0daf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
|