X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/762bf0b887743db0267a50852c2eb3eaa8fb8042..4c6d359b5fbe8f746965a2646a7bea03284b23cc:/IkiWiki/Plugin/remove.pm?ds=inline diff --git a/IkiWiki/Plugin/remove.pm b/IkiWiki/Plugin/remove.pm index a886956b2..869d32f93 100644 --- a/IkiWiki/Plugin/remove.pm +++ b/IkiWiki/Plugin/remove.pm @@ -6,17 +6,25 @@ use strict; use IkiWiki 2.00; sub import { #{{{ + hook(type => "getsetup", id => "remove", call => \&getsetup); hook(type => "formbuilder_setup", id => "remove", call => \&formbuilder_setup); hook(type => "formbuilder", id => "remove", call => \&formbuilder); hook(type => "sessioncgi", id => "remove", call => \&sessioncgi); } # }}} -sub check_canremove ($$$$) { #{{{ +sub getsetup () { #{{{ + return + plugin => { + safe => 1, + rebuild => 0, + }, +} #}}} + +sub check_canremove ($$$) { #{{{ my $page=shift; my $q=shift; my $session=shift; - my $attachment=shift; # Must be a known source file. if (! exists $pagesources{$page}) { @@ -36,11 +44,15 @@ sub check_canremove ($$$$) { #{{{ # Must be editiable. IkiWiki::check_canedit($page, $q, $session); - # This is sorta overkill, but better safe - # than sorry. If a user can't upload an - # attachment, don't let them delete it. - if ($attachment) { - IkiWiki::Plugin::attachment::check_canattach($session, $page, $file); + # If a user can't upload an attachment, don't let them delete it. + # This is sorta overkill, but better safe than sorry. + if (! defined IkiWiki::pagetype($pagesources{$page})) { + if (IkiWiki::Plugin::attachment->can("check_canattach")) { + IkiWiki::Plugin::attachment::check_canattach($session, $page, $file); + } + else { + error("renaming of attachments is not allowed"); + } } } #}}} @@ -85,7 +97,7 @@ sub removal_confirm ($$@) { #{{{ my $attachment=shift; my @pages=@_; - check_canremove($_, $q, $session, $attachment) foreach @pages; + check_canremove($_, $q, $session) foreach @pages; # Save current form state to allow returning to it later # without losing any edits. @@ -158,7 +170,7 @@ sub sessioncgi ($$) { #{{{ # and that the user is allowed to edit(/remove) it. my @files; foreach my $page (@pages) { - check_canremove($page, $q, $session, $q->param("attachment")); + check_canremove($page, $q, $session); # This untaint is safe because of the # checks performed above, which verify the