diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-09-21 17:54:58 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-09-21 17:54:58 +0000 |
commit | 9d75d3005b52e7659b8e87d9add158de171537ca (patch) | |
tree | 4aec79676decc58585d2711143a616e6041f5a2f /IkiWiki | |
parent | 5f15f6c8835a195b833ed234a590a42f4190b7ac (diff) | |
download | ikiwiki-9d75d3005b52e7659b8e87d9add158de171537ca.tar ikiwiki-9d75d3005b52e7659b8e87d9add158de171537ca.tar.gz |
* map: Render empty nodes on the way to subpages whose parent pages
are not included in the map.
* map: Fix valid html issue.
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Plugin/map.pm | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/IkiWiki/Plugin/map.pm b/IkiWiki/Plugin/map.pm index 8037db773..2ff840ff7 100644 --- a/IkiWiki/Plugin/map.pm +++ b/IkiWiki/Plugin/map.pm @@ -35,12 +35,18 @@ sub preprocess (@) { #{{{ add_depends($params{page}, join(" or ", @mapitems)); # Create the map. + my $parent=""; my $indent=0; my $openli=0; my $map = "<div class='map'>\n"; - $map .= "<ul>\n"; foreach my $item (sort @mapitems) { my $depth = ($item =~ tr/\//\//); + my $baseitem=IkiWiki::dirname($item); + while (length $parent && length $baseitem && $baseitem !~ /^\Q$parent\E/) { + $parent=IkiWiki::dirname($parent); + $indent--; + $map.="</li></ul>\n"; + } while ($depth < $indent) { $indent--; $map.="</li></ul>\n"; @@ -48,19 +54,25 @@ sub preprocess (@) { #{{{ while ($depth > $indent) { $indent++; $map.="<ul>\n"; - $openli=0; + if ($depth > $indent) { + $map .= "<li>\n"; + $openli=1; + } + else { + $openli=0; + } } $map .= "</li>\n" if $openli; $map .= "<li>" .htmllink($params{page}, $params{destpage}, $item) ."\n"; $openli=1; + $parent=$item; } while ($indent > 0) { $indent--; $map.="</li></ul>\n"; } - $map .= "</li></ul>\n"; $map .= "</div>\n"; return $map; } # }}} |