bugfixes
parent
56fd145ceb
commit
aa0afc56cb
44
ikiwiki
44
ikiwiki
|
@ -172,6 +172,8 @@ sub htmllink ($$) {
|
||||||
|
|
||||||
return $link if $page eq $bestlink;
|
return $link if $page eq $bestlink;
|
||||||
|
|
||||||
|
# TODO BUG: %renderedfiles may not have it, if the linked to page
|
||||||
|
# was also added and isn't yet rendered!
|
||||||
if (! grep { $_ eq $bestlink } values %renderedfiles) {
|
if (! grep { $_ eq $bestlink } values %renderedfiles) {
|
||||||
$bestlink=htmlpage($bestlink);
|
$bestlink=htmlpage($bestlink);
|
||||||
}
|
}
|
||||||
|
@ -214,8 +216,11 @@ sub linkbacks ($$) {
|
||||||
|
|
||||||
my @links;
|
my @links;
|
||||||
foreach my $p (keys %links) {
|
foreach my $p (keys %links) {
|
||||||
if (grep { $_ eq $page } @{$links{$p}}) {
|
if (grep { length $_ && bestlink($p, $_) eq $page } @{$links{$p}}) {
|
||||||
my $href=File::Spec->abs2rel(htmlpage($p), dirname($page));
|
my $href=File::Spec->abs2rel(htmlpage($p), dirname($page));
|
||||||
|
# TODO: if $p is joey/foo/bar and
|
||||||
|
# the $page is joey/foo/baz, make the link text
|
||||||
|
# just be "bar".
|
||||||
push @links, "<a href=\"$href\">$p</a>";
|
push @links, "<a href=\"$href\">$p</a>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -289,8 +294,8 @@ sub loadindex () {
|
||||||
my $page=pagename($file);
|
my $page=pagename($file);
|
||||||
$pagesources{$page}=$file;
|
$pagesources{$page}=$file;
|
||||||
$oldpagemtime{$page}=$mtime;
|
$oldpagemtime{$page}=$mtime;
|
||||||
$links{$page}=[@links];
|
|
||||||
$oldlinks{$page}=[@links];
|
$oldlinks{$page}=[@links];
|
||||||
|
$links{$page}=[@links];
|
||||||
$renderedfiles{$page}=$rendered;
|
$renderedfiles{$page}=$rendered;
|
||||||
}
|
}
|
||||||
close IN;
|
close IN;
|
||||||
|
@ -361,6 +366,7 @@ sub refresh () {
|
||||||
prune($destdir."/".$renderedfiles{$page});
|
prune($destdir."/".$renderedfiles{$page});
|
||||||
delete $renderedfiles{$page};
|
delete $renderedfiles{$page};
|
||||||
$oldpagemtime{$page}=0;
|
$oldpagemtime{$page}=0;
|
||||||
|
delete $pagesources{$page};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,18 +380,15 @@ sub refresh () {
|
||||||
render($file);
|
render($file);
|
||||||
$rendered{$file}=1;
|
$rendered{$file}=1;
|
||||||
}
|
}
|
||||||
elsif ($rebuild) {
|
|
||||||
debug("rebuilding unchanged file $file");
|
|
||||||
render($file);
|
|
||||||
$rendered{$file}=1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# if any files were added or removed, check to see if each page
|
# if any files were added or removed, check to see if each page
|
||||||
# needs an update due to linking to them
|
# needs an update due to linking to them
|
||||||
|
# TODO: inefficient; pages may get rendered above and again here;
|
||||||
|
# problem is the bestlink may have changes and we won't know until
|
||||||
|
# now
|
||||||
if (@add || @del) {
|
if (@add || @del) {
|
||||||
FILE: foreach my $file (@files) {
|
FILE: foreach my $file (@files) {
|
||||||
next if $rendered{$file};
|
|
||||||
my $page=pagename($file);
|
my $page=pagename($file);
|
||||||
foreach my $f (@add, @del) {
|
foreach my $f (@add, @del) {
|
||||||
my $p=pagename($f);
|
my $p=pagename($f);
|
||||||
|
@ -393,6 +396,7 @@ FILE: foreach my $file (@files) {
|
||||||
if (bestlink($page, $link) eq $p) {
|
if (bestlink($page, $link) eq $p) {
|
||||||
debug("rendering $file, which links to $p");
|
debug("rendering $file, which links to $p");
|
||||||
render($file);
|
render($file);
|
||||||
|
$rendered{$file}=1;
|
||||||
next FILE;
|
next FILE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -408,19 +412,23 @@ FILE: foreach my $file (@files) {
|
||||||
if (%rendered) {
|
if (%rendered) {
|
||||||
my %linkchanged;
|
my %linkchanged;
|
||||||
foreach my $file (keys %rendered, @del) {
|
foreach my $file (keys %rendered, @del) {
|
||||||
my $pagename=pagename($file);
|
my $page=pagename($file);
|
||||||
if (exists $links{$pagename}) {
|
if (exists $links{$page}) {
|
||||||
foreach my $link (@{$links{$pagename}}) {
|
foreach my $link (@{$links{$page}}) {
|
||||||
if (! exists $oldlinks{$pagename} ||
|
$link=bestlink($page, $link);
|
||||||
! grep { $_ eq $link } @{$oldlinks{$pagename}}) {
|
if (length $link &&
|
||||||
|
! exists $oldlinks{$page} ||
|
||||||
|
! grep { $_ eq $link } @{$oldlinks{$page}}) {
|
||||||
$linkchanged{$link}=1;
|
$linkchanged{$link}=1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (exists $oldlinks{$pagename}) {
|
if (exists $oldlinks{$page}) {
|
||||||
foreach my $link (@{$oldlinks{$pagename}}) {
|
foreach my $link (@{$oldlinks{$page}}) {
|
||||||
if (! exists $links{$pagename} ||
|
$link=bestlink($page, $link);
|
||||||
! grep { $_ eq $link } @{$links{$pagename}}) {
|
if (length $link &&
|
||||||
|
! exists $links{$page} ||
|
||||||
|
! grep { $_ eq $link } @{$links{$page}}) {
|
||||||
$linkchanged{$link}=1;
|
$linkchanged{$link}=1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -436,6 +444,6 @@ FILE: foreach my $file (@files) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loadindex();
|
loadindex() unless $rebuild;
|
||||||
refresh();
|
refresh();
|
||||||
saveindex();
|
saveindex();
|
||||||
|
|
Loading…
Reference in New Issue