diff options
Diffstat (limited to 'IkiWiki/Plugin/editpage.pm')
-rw-r--r-- | IkiWiki/Plugin/editpage.pm | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index ed994306f..91d125a5c 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -81,6 +81,33 @@ sub check_canedit ($$$;$) { return $canedit; } +sub check_cansave ($$$$) { + my $page=shift; + my $content=shift; + my $q=shift; + my $session=shift; + + my $cansave; + run_hooks(cansave => sub { + return if defined $cansave; + my $ret=shift->($page, $content, $q, $session); + if (defined $ret) { + if ($ret eq "") { + $cansave=1; + } + elsif (ref $ret eq 'CODE') { + $ret->(); + $cansave=0; + } + else { + error($ret); + $cansave=0; + } + } + }); + return $cansave; +} + sub cgi_editpage ($$) { my $q=shift; my $session=shift; @@ -370,6 +397,7 @@ sub cgi_editpage ($$) { } my $content=$form->field('editcontent'); + check_cansave($page, $content, $q, $session); run_hooks(editcontent => sub { $content=shift->( content => $content, |