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