fix handing of case of file first created by preview but then saved

To handle this, avoid populating %renderedfiles in preview,
and in expiry, check if the file is in %renderedfiles, if it is
do not delete it since it was saved.
master
Joey Hess 2008-09-29 13:25:31 -04:00
parent d4ac1c750e
commit c4be16703f
1 changed files with 12 additions and 2 deletions

View File

@ -29,9 +29,18 @@ sub refresh () {
foreach my $file (@{$wikistate{editpage}{previews}}) { foreach my $file (@{$wikistate{editpage}{previews}}) {
my $mtime=(stat("$config{destdir}/$file"))[9]; my $mtime=(stat("$config{destdir}/$file"))[9];
if (defined $mtime && $mtime <= $expire) { if (defined $mtime && $mtime <= $expire) {
# Avoid deleting a preview that was later saved.
my $delete=1;
foreach my $page (keys %renderedfiles) {
if (grep { $_ eq $file } @{$renderedfiles{$page}}) {
$delete=0;
}
}
if ($delete) {
debug(sprintf(gettext("removing old preview %s"), $file)); debug(sprintf(gettext("removing old preview %s"), $file));
IkiWiki::prune("$config{destdir}/$file"); IkiWiki::prune("$config{destdir}/$file");
} }
}
elsif (defined $mtime) { elsif (defined $mtime) {
push @previews, $file; push @previews, $file;
} }
@ -225,6 +234,7 @@ sub cgi_editpage ($$) { #{{{
$previews{$file}=1 unless $wasrendered{$file}; $previews{$file}=1 unless $wasrendered{$file};
} }
@{$wikistate{editpage}{previews}} = keys %previews; @{$wikistate{editpage}{previews}} = keys %previews;
$renderedfiles{$page}=[keys %wasrendered];
saveindex(); saveindex();
} }
elsif ($form->submitted eq "Save Page") { elsif ($form->submitted eq "Save Page") {