use warnings;
use strict;
-use IkiWiki;
+use IkiWiki 3.00;
-sub import { #{{{
+sub import {
+ hook(type => "getsetup", id => "orphans", call => \&getsetup);
hook(type => "preprocess", id => "orphans", call => \&preprocess);
-} # }}}
+}
-sub preprocess (@) { #{{{
+sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => undef,
+ },
+}
+
+sub preprocess (@) {
my %params=@_;
$params{pages}="*" unless defined $params{pages};
}
my @orphans;
- my $discussion=gettext("discussion");
- foreach my $page (keys %renderedfiles) {
- next if $linkedto{$page};
- next unless pagespec_match($page, $params{pages}, $params{page});
+ my $discussion=lc(gettext("Discussion"));
+ foreach my $page (pagespec_match_list(
+ [ grep { ! $linkedto{$_} && $_ ne 'index' }
+ keys %pagesources ],
+ $params{pages}, location => $params{page})) {
# If the page has a link to some other page, it's
# indirectly linked to a page via that page's backlinks.
next if grep {
length $_ &&
($_ !~ /\/\Q$discussion\E$/i || ! $config{discussion}) &&
- bestlink($page, $_) !~ /^($page|)$/
+ bestlink($page, $_) !~ /^(\Q$page\E|)$/
} @{$links{$page}};
push @orphans, $page;
}
- return gettext("All pages are linked to by other pages.") unless @orphans;
+ return gettext("All pages have other pages linking to them.") unless @orphans;
return "<ul>\n".
join("\n",
map {
"</li>"
} sort @orphans).
"</ul>\n";
-} # }}}
+}
1