linkmap: Add option to omit disconnected pages from the map.
parent
f2dab9318f
commit
2ae1d9d928
|
@ -49,6 +49,7 @@ sub genmap ($) {
|
|||
my $mapnum=shift;
|
||||
return "" unless exists $maps{$mapnum};
|
||||
my %params=%{$maps{$mapnum}};
|
||||
my $connected=IkiWiki::yesno($params{connected});
|
||||
|
||||
# Get all the items to map.
|
||||
my %mapitems = map { $_ => urlto($_, $params{destpage}) }
|
||||
|
@ -79,24 +80,38 @@ sub genmap ($) {
|
|||
print OUT "charset=\"utf-8\";\n";
|
||||
print OUT "ratio=compress;\nsize=\"".($params{width}+0).", ".($params{height}+0)."\";\n"
|
||||
if defined $params{width} and defined $params{height};
|
||||
foreach my $item (keys %mapitems) {
|
||||
my %shown;
|
||||
my $show=sub {
|
||||
my $item=shift;
|
||||
if (! $shown{$item}) {
|
||||
print OUT "\"$item\" [shape=box,href=\"$mapitems{$item}\"];\n";
|
||||
$shown{$item}=1;
|
||||
}
|
||||
};
|
||||
foreach my $item (keys %mapitems) {
|
||||
$show->($item) unless $connected;
|
||||
foreach my $link (map { bestlink($item, $_) } @{$links{$item}}) {
|
||||
print OUT "\"$item\" -> \"$link\";\n"
|
||||
if $mapitems{$link};
|
||||
next unless length $link and $mapitems{$link};
|
||||
foreach my $endpoint ($item, $link) {
|
||||
$show->($endpoint);
|
||||
}
|
||||
print OUT "\"$item\" -> \"$link\";\n";
|
||||
}
|
||||
}
|
||||
print OUT "}\n";
|
||||
close OUT;
|
||||
close OUT || error gettext("failed to run dot");
|
||||
|
||||
local $/=undef;
|
||||
my $ret="<object data=\"".urlto($dest, $params{destpage}).
|
||||
"\" type=\"image/png\" usemap=\"#linkmap$mapnum\">\n".
|
||||
<IN>.
|
||||
"</object>";
|
||||
close IN;
|
||||
close IN || error gettext("failed to run dot");
|
||||
|
||||
waitpid $pid, 0;
|
||||
if ($?) {
|
||||
error gettext("failed to run dot");
|
||||
}
|
||||
$SIG{PIPE}="DEFAULT";
|
||||
error gettext("failed to run dot") if $sigpipe;
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ ikiwiki (3.20091219) UNRELEASED; urgency=low
|
|||
* comments: Add a checksum to the name of comment pages, to
|
||||
avoid merge conflicts when comments are posted to two branches of a
|
||||
site.
|
||||
* linkmap: Add option to omit disconnected pages from the map.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Fri, 25 Dec 2009 14:31:22 -0500
|
||||
|
||||
|
|
|
@ -7,9 +7,7 @@ graph showing the links between a set of pages in the wiki. Example usage:
|
|||
|
||||
Only links between mapped pages will be shown; links pointing to or from
|
||||
unmapped pages will be omitted. If the pages to include are not specified,
|
||||
the links between all pages (and other files) in the wiki are mapped. For
|
||||
best results, only a small set of pages should be mapped, since otherwise
|
||||
the map can become very large, unwieldy, and complicated.
|
||||
the links between all pages (and other files) in the wiki are mapped.
|
||||
|
||||
Here are descriptions of all the supported parameters to the `linkmap`
|
||||
directive:
|
||||
|
@ -18,5 +16,14 @@ directive:
|
|||
* `height`, `width` - Limit the size of the map to a given height and width,
|
||||
in inches. Both must be specified for the limiting to take effect, otherwise
|
||||
the map's size is not limited.
|
||||
* `connected` - Controls whether to include pages on the map that link to
|
||||
no other pages (connected=no, the default), or to only show pages that
|
||||
link to others (connected=yes).
|
||||
|
||||
For best results, only a small set of pages should be mapped, since
|
||||
otherwise the map can become very large, unwieldy, and complicated.
|
||||
If too many pages are included, the map may get so large that graphviz
|
||||
cannot render it. Using the `connected` parameter is a good way to prune
|
||||
out pages that clutter the map.
|
||||
|
||||
[[!meta robots="noindex, follow"]]
|
||||
|
|
Loading…
Reference in New Issue