push @links, { url => $href, page => pagetitle($p_trimmed) };
}
- @links = sort { $a->{page} cmp $b->{page} } @links;
-
- return \@links, [] if @links <= $config{numbacklinks} && ! $config{numbacklinks};
- return [@links[0..$config{numbacklinks}-1]],
- [@links[$config{numbacklinks}..$#links]];
+ return @links;
} #}}}
sub parentlinks ($) { #{{{
$template->param(have_actions => 1);
}
- my ($backlinks, $more_backlinks)=backlinks($page);
+ my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page);
+ my ($backlinks, $more_backlinks);
+ if (@backlinks <= $config{numbacklinks} || ! $config{numbacklinks}) {
+ $backlinks=\@backlinks;
+ $more_backlinks=[];
+ }
+ else {
+ $backlinks=[@backlinks[0..$config{numbacklinks}-1]];
+ $more_backlinks=[@backlinks[$config{numbacklinks}..$#backlinks]];
+ }
$template->param(
title => $page eq 'index'
}
}
- # scan changed and new files
- my @changed;
+ # find changed and new files
+ my @needsbuild;
foreach my $file (@files) {
my $page=pagename($file);
if (! exists $pagemtime{$page} ||
$mtime > $pagemtime{$page} ||
$forcerebuild{$page}) {
- debug(sprintf(gettext("scanning %s"), $file));
- $pagemtime{$page}=$mtime;
- push @changed, $file;
- scan($file);
+ $pagemtime{$page}=$mtime;
+ push @needsbuild, $file;
}
}
- calculate_backlinks();
+ run_hooks(needsbuild => sub { shift->(\@needsbuild) });
- # render changed and new pages
- foreach my $file (@changed) {
+ # scan and rendder files
+ foreach my $file (@needsbuild) {
+ debug(sprintf(gettext("scanning %s"), $file));
+ scan($file);
+ }
+ calculate_backlinks();
+ foreach my $file (@needsbuild) {
debug(sprintf(gettext("rendering %s"), $file));
render($file);
$rendered{$file}=1;
foreach my $file (keys %rendered, @del) {
next if $f eq $file;
my $page=pagename($file);
- if (pagespec_match($page, $depends{$p}, $p)) {
+ if (pagespec_match($page, $depends{$p}, location => $p)) {
debug(sprintf(gettext("rendering %s, which depends on %s"), $f, $page));
render($f);
$rendered{$f}=1;