summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/editpage.pm
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki/Plugin/editpage.pm')
-rw-r--r--IkiWiki/Plugin/editpage.pm28
1 files changed, 28 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm
index bba52e4fd..658d664af 100644
--- a/IkiWiki/Plugin/editpage.pm
+++ b/IkiWiki/Plugin/editpage.pm
@@ -117,6 +117,33 @@ sub check_content (@) {
return defined $ok ? $ok : 1;
}
+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;
@@ -412,6 +439,7 @@ sub cgi_editpage ($$) {
}
my $content=$form->field('editcontent');
+ check_cansave($page, $content, $q, $session);
check_content(content => $content, page => $page,
cgi => $q, session => $session,
subject => $message);