diff options
-rw-r--r-- | IkiWiki.pm | 64 | ||||
-rw-r--r-- | IkiWiki/Plugin/editpage.pm | 66 | ||||
-rw-r--r-- | debian/changelog | 2 |
3 files changed, 67 insertions, 65 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index 66fea4369..ce1ceb351 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1293,6 +1293,70 @@ sub indexlink () { return "<a href=\"$config{url}\">$config{wikiname}</a>"; } +sub check_canedit ($$$;$) { + my $page=shift; + my $q=shift; + my $session=shift; + my $nonfatal=shift; + + my $canedit; + run_hooks(canedit => sub { + return if defined $canedit; + my $ret=shift->($page, $q, $session); + if (defined $ret) { + if ($ret eq "") { + $canedit=1; + } + elsif (ref $ret eq 'CODE') { + $ret->() unless $nonfatal; + $canedit=0; + } + elsif (defined $ret) { + error($ret) unless $nonfatal; + $canedit=0; + } + } + }); + return defined $canedit ? $canedit : 1; +} + +sub check_content (@) { + my %params=@_; + + return 1 if ! exists $hooks{checkcontent}; # optimisation + + if (exists $pagesources{$params{page}}) { + my @diff; + my %old=map { $_ => 1 } + split("\n", readfile(srcfile($pagesources{$params{page}}))); + foreach my $line (split("\n", $params{content})) { + push @diff, $line if ! exists $old{$_}; + } + $params{content}=join("\n", @diff); + } + + my $ok; + run_hooks(checkcontent => sub { + return if defined $ok; + my $ret=shift->(%params); + if (defined $ret) { + if ($ret eq "") { + $ok=1; + } + elsif (ref $ret eq 'CODE') { + $ret->() unless $params{nonfatal}; + $ok=0; + } + elsif (defined $ret) { + error($ret) unless $params{nonfatal}; + $ok=0; + } + } + + }); + return defined $ok ? $ok : 1; +} + my $wikilock; sub lockwiki () { diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index c206d96a4..0068a6b11 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -51,73 +51,9 @@ sub refresh () { # Back to ikiwiki namespace for the rest, this code is very much # internal to ikiwiki even though it's separated into a plugin, -# and other plugins use the functions below. +# and other plugins use the function below. package IkiWiki; -sub check_canedit ($$$;$) { - my $page=shift; - my $q=shift; - my $session=shift; - my $nonfatal=shift; - - my $canedit; - run_hooks(canedit => sub { - return if defined $canedit; - my $ret=shift->($page, $q, $session); - if (defined $ret) { - if ($ret eq "") { - $canedit=1; - } - elsif (ref $ret eq 'CODE') { - $ret->() unless $nonfatal; - $canedit=0; - } - elsif (defined $ret) { - error($ret) unless $nonfatal; - $canedit=0; - } - } - }); - return defined $canedit ? $canedit : 1; -} - -sub check_content (@) { - my %params=@_; - - return 1 if ! exists $hooks{checkcontent}; # optimisation - - if (exists $pagesources{$params{page}}) { - my @diff; - my %old=map { $_ => 1 } - split("\n", readfile(srcfile($pagesources{$params{page}}))); - foreach my $line (split("\n", $params{content})) { - push @diff, $line if ! exists $old{$_}; - } - $params{content}=join("\n", @diff); - } - - my $ok; - run_hooks(checkcontent => sub { - return if defined $ok; - my $ret=shift->(%params); - if (defined $ret) { - if ($ret eq "") { - $ok=1; - } - elsif (ref $ret eq 'CODE') { - $ret->() unless $params{nonfatal}; - $ok=0; - } - elsif (defined $ret) { - error($ret) unless $params{nonfatal}; - $ok=0; - } - } - - }); - return defined $ok ? $ok : 1; -} - sub cgi_editpage ($$) { my $q=shift; my $session=shift; diff --git a/debian/changelog b/debian/changelog index 7467508f6..8da3f8849 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,8 @@ ikiwiki (3.04) UNRELEASED; urgency=low file into. Closes: #514384 * shortcut: If default_pageext is set, first look for shortcuts.default_pageext. + * Allow comments, rename, remove, and attazhments plugins to be used + even if the editpage plugin is disabled. -- Joey Hess <joeyh@debian.org> Sat, 31 Jan 2009 19:04:45 -0500 |