diff options
author | Joey Hess <joey@kitenet.net> | 2011-06-14 16:02:09 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-06-14 16:02:09 -0400 |
commit | 176c7f3ff36a29c2fbfb3ba079186f8c4e883633 (patch) | |
tree | a5bfbfecb59d8be9f8589f7606144f77eeefb294 /IkiWiki/Plugin | |
parent | 2e086b3263f33d3d42ddbcb451e9995c466929cd (diff) | |
download | ikiwiki-176c7f3ff36a29c2fbfb3ba079186f8c4e883633.tar ikiwiki-176c7f3ff36a29c2fbfb3ba079186f8c4e883633.tar.gz |
implement renaming of held attachments
This is somewhat suboptimal, it does not update links to the renamed file,
or show a result message.
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r-- | IkiWiki/Plugin/rename.pm | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index e871b815d..aa1081756 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -179,8 +179,15 @@ sub rename_start ($$$$) { my $attachment=shift; my $page=shift; - check_canrename($page, $pagesources{$page}, undef, undef, - $q, $session); + # Special case for renaming held attachments; normal checks + # don't apply. + my $held=$attachment && + IkiWiki::Plugin::attachment->can("is_held_attachment") && + IkiWiki::Plugin::attachment::is_held_attachment($page); + if (! defined $held) { + check_canrename($page, $pagesources{$page}, undef, undef, + $q, $session); + } # Save current form state to allow returning to it later # without losing any edits. @@ -291,13 +298,11 @@ sub sessioncgi ($$) { elsif ($form->submitted eq 'Rename' && $form->validate) { IkiWiki::checksessionexpiry($q, $session, $q->param('sid')); - # Queue of rename actions to perfom. - my @torename; - # These untaints are safe because of the checks # performed in check_canrename later. my $src=$form->field("page"); - my $srcfile=IkiWiki::possibly_foolish_untaint($pagesources{$src}); + my $srcfile=IkiWiki::possibly_foolish_untaint($pagesources{$src}) + if exists $pagesources{$src}; my $dest=IkiWiki::possibly_foolish_untaint(titlepage($form->field("new_name"))); my $destfile=$dest; if (! $q->param("attachment")) { @@ -312,6 +317,19 @@ sub sessioncgi ($$) { $destfile=newpagefile($dest, $type); } + + # Special case for renaming held attachments. + my $held=$q->param("attachment") && + IkiWiki::Plugin::attachment->can("is_held_attachment") && + IkiWiki::Plugin::attachment::is_held_attachment($src); + if (defined $held) { + rename($held, IkiWiki::Plugin::attachment::attachment_holding_location($dest)); + postrename($session, $src, $dest, $q->param("attachment")) + unless defined $srcfile; + } + + # Queue of rename actions to perfom. + my @torename; push @torename, { src => $src, srcfile => $srcfile, |