X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/71d984b3109e7d5ab9e7e41bb50dc00a1787dd6f..bac47cdecd9a9f7db3224eaaed43de0984bcf9ea:/IkiWiki/Plugin/map.pm

diff --git a/IkiWiki/Plugin/map.pm b/IkiWiki/Plugin/map.pm
index af08005b8..5b6a843e7 100644
--- a/IkiWiki/Plugin/map.pm
+++ b/IkiWiki/Plugin/map.pm
@@ -26,11 +26,12 @@ sub preprocess (@) { #{{{
 	foreach my $page (keys %pagesources) {
 		if (pagespec_match($page, $params{pages}, location => $params{page})) {
 			if (exists $params{show} && 
+			    exists $pagestate{$page} &&
 			    exists $pagestate{$page}{meta}{$params{show}}) {
 				$mapitems{$page}=$pagestate{$page}{meta}{$params{show}};
 			}
 			else {
-				$mapitems{$page}=$page;
+				$mapitems{$page}='';
 			}
 			# Check for a common prefix.
 			if (! defined $common_prefix) {
@@ -58,8 +59,9 @@ sub preprocess (@) { #{{{
 		$common_prefix=IkiWiki::dirname($common_prefix);
 	}
 
-	# Needs to update whenever a page is added or removed, so
-	# register a dependency.
+	# Needs to update whenever a page is added or removed (or in some
+	# cases, when its content changes, if show=title), so register a
+	# dependency.
 	add_depends($params{page}, $params{pages});
 	# Explicitly add all currently shown pages, to detect when pages
 	# are removed.
@@ -71,7 +73,8 @@ sub preprocess (@) { #{{{
 	my $openli=0;
 	my $dummy=0;
 	my $map = "<div class='map'>\n<ul>\n";
-	foreach my $item (sort { $mapitems{$a} cmp $mapitems{$b} } keys %mapitems) {
+	foreach my $item (sort keys %mapitems) {
+		my @linktext = (length $mapitems{$item} ? (linktext => $mapitems{$item}) : ());
 		$item=~s/^\Q$common_prefix\E\///
 			if defined $common_prefix && length $common_prefix;
 		my $depth = ($item =~ tr/\//\//) + 1;
@@ -119,7 +122,7 @@ sub preprocess (@) { #{{{
 		$map .= "<li>"
 			.htmllink($params{page}, $params{destpage}, 
 				"/".$common_prefix."/".$item,
-				linktext => $mapitems{$item},
+				@linktext,
 				class => "mapitem", noimageinline => 1)
 			."\n";
 		$openli=1;