summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2008-07-14 14:16:17 +0200
committerintrigeri <intrigeri@boum.org>2008-07-14 14:25:42 +0200
commitb857b229d8ff3601bbf01fafa51a3b3d3da928d8 (patch)
tree223ccfde52d424aae8ca252853c35dec66a05224 /IkiWiki/Plugin
parentdf42a5ef21fd3e97ab287fa48ccd3aafd34e0375 (diff)
pedigree: fix RELDEPTH in PEDIGREE_BUT_ROOT...
... at least when it's not used in the same template as PEDIGREE_BUT_TWO_OLDEST (see Known bugs section in pedigree.mdwn for details) Signed-off-by: intrigeri <intrigeri@boum.org>
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r--IkiWiki/Plugin/pedigree.pm29
1 files changed, 17 insertions, 12 deletions
diff --git a/IkiWiki/Plugin/pedigree.pm b/IkiWiki/Plugin/pedigree.pm
index 3d1e3764d..1bc9ee14d 100644
--- a/IkiWiki/Plugin/pedigree.pm
+++ b/IkiWiki/Plugin/pedigree.pm
@@ -54,8 +54,11 @@ sub forget_oldest ($@) { #{{{
# references to hashes)...
$parent=shift @pedigree;
# ... but we have no copy of the referenced hashes, so we
- # actually are modifying them in-place, but we don't care
- # here since reldepth has to be computed everytime anyway.
+ # actually are modifying them in-place, which
+ # means the second (and following) calls to
+ # this function overwrite the previous one's
+ # reldepth values => known bug if PEDIGREE_BUT_ROOT and
+ # PEDIGREE_BUT_TWO_OLDEST are used in the same template
$parent->{reldepth}=($parent->{absdepth} - $offset);
push @ret, $parent;
}
@@ -68,16 +71,18 @@ sub pagetemplate (@) { #{{{
my $page=$params{page};
my $template=$params{template};
- if ($template->query(name => "pedigree")
- or $template->query(name => "pedigree_but_root")
- or $template->query(name => "pedigree_but_two_oldest")
- )
- {
- my @pedigree=pedigree($page);
- $template->param(pedigree => \@pedigree);
- $template->param(pedigree_but_root => [forget_oldest(1, @pedigree)]);
- $template->param(pedigree_but_two_oldest => [forget_oldest(2, @pedigree)]);
- }
+ my @pedigree=pedigree($page)
+ if ($template->query(name => "pedigree")
+ or $template->query(name => "pedigree_but_root")
+ or $template->query(name => "pedigree_but_two_oldest")
+ );
+
+ $template->param(pedigree => \@pedigree)
+ if ($template->query(name => "pedigree"));
+ $template->param(pedigree_but_root => [forget_oldest(1, @pedigree)])
+ if ($template->query(name => "pedigree_but_root"));
+ $template->param(pedigree_but_two_oldest => [forget_oldest(2, @pedigree)])
+ if ($template->query(name => "pedigree_but_two_oldest"));
} # }}}