summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/editpage.pm
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-09-29 13:25:31 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-09-29 13:25:31 -0400
commitc4be16703fa571e8922b43446b24cf1c4f90a371 (patch)
treeeeef2064e303af7d452e450d278a1942cb3a1859 /IkiWiki/Plugin/editpage.pm
parentd4ac1c750e5f3dcf3bb5d764d7e625fe90c7ebd3 (diff)
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.
Diffstat (limited to 'IkiWiki/Plugin/editpage.pm')
-rw-r--r--IkiWiki/Plugin/editpage.pm14
1 files changed, 12 insertions, 2 deletions
diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm
index d12c6732d..8ab02cabc 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;
@@ -225,6 +234,7 @@ sub cgi_editpage ($$) { #{{{
$previews{$file}=1 unless $wasrendered{$file};
}
@{$wikistate{editpage}{previews}} = keys %previews;
+ $renderedfiles{$page}=[keys %wasrendered];
saveindex();
}
elsif ($form->submitted eq "Save Page") {