Merge commit 'upstream/master' into prv/po
[ikiwiki.git] / IkiWiki / Plugin / editpage.pm
index bba52e4fd322e8bbad5f63a13198ff5f491cdef5..658d664af38d76b330ae9c27b74e77e5f28172a6 100644 (file)
@@ -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);