X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ee1ad53c4c2710aa7ded61bdc56f3a8cce514f22..ec14786c900e626ff3131b55b7c0833b6e0bf9f8:/IkiWiki/Plugin/anonok.pm?ds=sidebyside diff --git a/IkiWiki/Plugin/anonok.pm b/IkiWiki/Plugin/anonok.pm index cd05cd865..1cbdfe4e5 100644 --- a/IkiWiki/Plugin/anonok.pm +++ b/IkiWiki/Plugin/anonok.pm @@ -5,12 +5,46 @@ use warnings; use strict; use IkiWiki 2.00; -sub import { #{{{ - hook(type => "canedit", id => "anonok", call => \&canedit,); -} # }}} +sub import { + hook(type => "getsetup", id => "anonok", call => \&getsetup); + hook(type => "canedit", id => "anonok", call => \&canedit); +} -sub canedit ($$$) { #{{{ - return ""; -} #}}} +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 0, + }, + anonok_pagespec => { + type => "pagespec", + example => "*/discussion", + description => "PageSpec to limit which pages anonymous users can edit", + link => "ikiwiki/PageSpec", + safe => 1, + rebuild => 0, + }, +} + +sub canedit ($$$) { + my $page=shift; + my $cgi=shift; + my $session=shift; + + my $ret; + + if (exists $config{anonok_pagespec} && length $config{anonok_pagespec}) { + if (pagespec_match($page, $config{anonok_pagespec}, + location => $page)) { + return ""; + } + else { + return undef; + } + } + else { + return ""; + } +} 1