- my $map = "<div class='map'>\n";
- $map .= "<ul>\n";
- foreach my $item (sort @mapitems) {
- my $depth = ($item =~ tr/\//\//);
+ my $dummy=0;
+ my $map = "<div class='map'>\n<ul>\n";
+ foreach my $item (sort keys %mapitems) {
+ $item=~s/^\Q$common_prefix\E\///
+ if defined $common_prefix && length $common_prefix;
+ my $depth = ($item =~ tr/\//\//) + 1;
+ my $baseitem=IkiWiki::dirname($item);
+ while (length $parent && length $baseitem && $baseitem !~ /^\Q$parent\E(\/|$)/) {
+ $parent=IkiWiki::dirname($parent);
+ last if !$dummy && length $parent && $baseitem =~ /^\Q$parent\E(\/|$)/;
+ $indent--;
+ $map .= "</li>\n";
+ if ($indent > 0) {
+ $map .= "</ul>\n";
+ }
+ }
+ $dummy=0;