]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/pedigree.pm
pedigree: rewrote with different design
[ikiwiki.git] / IkiWiki / Plugin / pedigree.pm
index f91ea94b484a1ce3bde2966b10878aa593c319f2..eb8bfa83b38076ff7b1dd833a5d2f8a92b6a2981 100644 (file)
@@ -18,20 +18,22 @@ sub pedigree ($) { #{{{
        my $path="";
        my $title=$config{wikiname};
        my $i=0;
+       my $depth=0;
+       my $height=0;
 
        my @pagepath=(split("/", $page));
        my $pagedepth=@pagepath;
        foreach my $dir (@pagepath) {
                next if $dir eq 'index';
+               $depth=$i;
+               $height=($pagedepth - $depth);
                push @ret, {
                            url => urlto($path, $page),
                            page => $title,
-                           absdepth => $i,
-                           distance => ($pagedepth - $i),
-                           is_root => ($i eq 0),
-                           is_second_ancestor => ($i eq 1),
-                           is_grand_mother => ($i eq ($pagedepth - 2)),
-                           is_mother => ($i eq ($pagedepth - 1)),
+                           depth => $depth,
+                           height => $height,
+                           "depth_$depth" => 1,
+                           "height_$height" => 1,
                           };
                $path.="/".$dir;
                $title=IkiWiki::pagetitle($dir);
@@ -40,51 +42,14 @@ sub pedigree ($) { #{{{
        return @ret;
 } #}}}
 
-sub forget_oldest ($@) { #{{{
-       my $offset=shift;
-       my @pedigree=@_;
-       my @ret;
-       my $parent;
-       unless ($offset ge scalar(@pedigree)) {
-               for (my $i=0; $i < $offset; $i++) {
-                       shift @pedigree;
-               }
-               while (@pedigree) {
-                       # Doing so does not modify the original @pedigree, we've
-                       # got our own copy of its "content" (i.e. a pile of
-                       # references to hashes)...
-                       $parent=shift @pedigree;
-                       # ... but we have no copy of the referenced hashes, so we
-                       # 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;
-               }
-       }
-       return @ret;
-} #}}}
-
 sub pagetemplate (@) { #{{{
        my %params=@_;
         my $page=$params{page};
         my $template=$params{template};
 
-       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"));
-
+       if ($template->query(name => "pedigree")) {
+               $template->param(pedigree => [pedigree($page)]);
+       }
 } # }}}
 
 1