X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/2ff3c8aee78114974b6930c18247f050d35f2012..917f54a777d152ee5963acd81bf8a2800a0507b1:/IkiWiki/Plugin/editpage.pm diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index d12c6732d..794548c6d 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -29,8 +29,17 @@ sub refresh () { foreach my $file (@{$wikistate{editpage}{previews}}) { my $mtime=(stat("$config{destdir}/$file"))[9]; if (defined $mtime && $mtime <= $expire) { - debug(sprintf(gettext("removing old preview %s"), $file)); - IkiWiki::prune("$config{destdir}/$file"); + # 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)); + IkiWiki::prune("$config{destdir}/$file"); + } } elsif (defined $mtime) { push @previews, $file; @@ -147,7 +156,7 @@ sub cgi_editpage ($$) { #{{{ $type=pagetype($pagesources{$from}); } $type=$config{default_pageext} unless defined $type; - $file=$page.".".$type; + $file=newpagefile($page, $type); if (! $form->submitted) { $form->field(name => "rcsinfo", value => "", force => 1); } @@ -221,10 +230,11 @@ sub cgi_editpage ($$) { #{{{ # Previewing may have created files on disk. # Keep a list of these to be deleted later. my %previews = map { $_ => 1 } @{$wikistate{editpage}{previews}}; - foreach my $file (@{$renderedfiles{$page}}) { - $previews{$file}=1 unless $wasrendered{$file}; + foreach my $f (@{$renderedfiles{$page}}) { + $previews{$f}=1 unless $wasrendered{$f}; } @{$wikistate{editpage}{previews}} = keys %previews; + $renderedfiles{$page}=[keys %wasrendered]; saveindex(); } elsif ($form->submitted eq "Save Page") {