diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-09-29 13:25:31 -0400 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-09-29 13:25:31 -0400 |
commit | c4be16703fa571e8922b43446b24cf1c4f90a371 (patch) | |
tree | eeef2064e303af7d452e450d278a1942cb3a1859 /IkiWiki/Plugin | |
parent | d4ac1c750e5f3dcf3bb5d764d7e625fe90c7ebd3 (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')
-rw-r--r-- | IkiWiki/Plugin/editpage.pm | 14 |
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") { |