X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/0f06504422792d7132b7644caf4dabf19d957659..9480dc44277ad9301f1e1eba5b09990b459e7b26:/IkiWiki/Plugin/lockedit.pm?ds=sidebyside diff --git a/IkiWiki/Plugin/lockedit.pm b/IkiWiki/Plugin/lockedit.pm index 525fcb0e5..1466e8337 100644 --- a/IkiWiki/Plugin/lockedit.pm +++ b/IkiWiki/Plugin/lockedit.pm @@ -3,17 +3,20 @@ package IkiWiki::Plugin::lockedit; use warnings; use strict; -use IkiWiki 2.00; +use IkiWiki 3.00; -sub import { #{{{ +sub import { hook(type => "getsetup", id => "lockedit", call => \&getsetup); hook(type => "canedit", id => "lockedit", call => \&canedit); - hook(type => "formbuilder_setup", id => "lockedit", - call => \&formbuilder_setup); -} # }}} +} -sub getsetup () { #{{{ +sub getsetup () { return + plugin => { + safe => 1, + rebuild => 0, + section => "auth", + }, locked_pages => { type => "pagespec", example => "!*/Discussion", @@ -22,9 +25,9 @@ sub getsetup () { #{{{ safe => 1, rebuild => 0, }, -} #}}} +} -sub canedit ($$) { #{{{ +sub canedit ($$) { my $page=shift; my $cgi=shift; my $session=shift; @@ -33,9 +36,13 @@ sub canedit ($$) { #{{{ return undef if defined $user && IkiWiki::is_admin($user); if (defined $config{locked_pages} && length $config{locked_pages} && - pagespec_match($page, $config{locked_pages})) { - if (! defined $user || - ! IkiWiki::userinfo_get($session->param("name"), "regdate")) { + pagespec_match($page, $config{locked_pages}, + user => $session->param("name"), + ip => $ENV{REMOTE_ADDR}, + )) { + if ((! defined $user || + ! IkiWiki::userinfo_get($session->param("name"), "regdate")) && + exists $IkiWiki::hooks{auth}) { return sub { IkiWiki::needsignin($cgi, $session) }; } else { @@ -45,60 +52,7 @@ sub canedit ($$) { #{{{ } } - # XXX deprecated, should be removed eventually - foreach my $admin (@{$config{adminuser}}) { - if (pagespec_match($page, IkiWiki::userinfo_get($admin, "locked_pages"))) { - if (! defined $user || - ! IkiWiki::userinfo_get($session->param("name"), "regdate")) { - return sub { IkiWiki::needsignin($cgi, $session) }; - } - else { - return sprintf(gettext("%s is locked and cannot be edited"), - htmllink("", "", $page, noimageinline => 1)); - } - } - } - return undef; -} #}}} - -sub formbuilder_setup (@) { #{{{ - my %params=@_; - - # XXX deprecated, should be removed eventually - my $form=$params{form}; - if ($form->title eq "preferences") { - my $session=$params{session}; - my $cgi=$params{cgi}; - my $user_name=$session->param("name"); - - $form->field(name => "locked_pages", size => 50, - fieldset => "admin", - comment => "deprecated; please move to locked_pages in setup file" - ); - if (! IkiWiki::is_admin($user_name)) { - $form->field(name => "locked_pages", type => "hidden"); - } - if (! $form->submitted) { - my $value=IkiWiki::userinfo_get($user_name, "locked_pages"); - if (length $value) { - $form->field(name => "locked_pages", force => 1, value => $value); - } - else { - $form->field(name => "locked_pages", type => "hidden"); - } - } - if ($form->submitted && $form->submitted eq 'Save Preferences') { - if (defined $form->field("locked_pages")) { - IkiWiki::userinfo_set($user_name, "locked_pages", - $form->field("locked_pages")) || - error("failed to set locked_pages"); - if (! length $form->field("locked_pages")) { - $form->field(name => "locked_pages", type => "hidden"); - } - } - } - } -} #}}} +} 1