X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/bb394fdae8ba488f1031d6f053f1544c689a3628..bdbbca09c3a18510429934ffbad846ae64d7edce:/IkiWiki/Plugin/lockedit.pm

diff --git a/IkiWiki/Plugin/lockedit.pm b/IkiWiki/Plugin/lockedit.pm
index 033b38263..f6cac6cdd 100644
--- a/IkiWiki/Plugin/lockedit.pm
+++ b/IkiWiki/Plugin/lockedit.pm
@@ -14,12 +14,15 @@ sub import { #{{{
 
 sub getsetup () { #{{{
 	return
+		plugin => {
+			safe => 1,
+			rebuild => 0,
+		},
 		locked_pages => {
-			type => "string",
+			type => "pagespec",
 			example => "!*/Discussion",
 			description => "PageSpec controlling which pages are locked",
-			description_html => htmllink("", "", "ikiwiki/PageSpec", noimageinline => 1).
-				" controlling which pages are locked",
+			link => "ikiwiki/PageSpec",
 			safe => 1,
 			rebuild => 0,
 		},
@@ -34,7 +37,10 @@ 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})) {
+	    pagespec_match($page, $config{locked_pages},
+		    user => $session->param("name"),
+		    ip => $ENV{REMOTE_ADDR},
+	    )) {
 		if (! defined $user ||
 		    ! IkiWiki::userinfo_get($session->param("name"), "regdate")) {
 			return sub { IkiWiki::needsignin($cgi, $session) };
@@ -48,7 +54,10 @@ sub canedit ($$) { #{{{
 
 	# XXX deprecated, should be removed eventually
 	foreach my $admin (@{$config{adminuser}}) {
-		if (pagespec_match($page, IkiWiki::userinfo_get($admin, "locked_pages"))) {
+		if (pagespec_match($page, IkiWiki::userinfo_get($admin, "locked_pages"),
+		    user => $session->param("name"),
+		    ip => $ENV{REMOTE_ADDR},
+		)) {
 			if (! defined $user ||
 			    ! IkiWiki::userinfo_get($session->param("name"), "regdate")) {
 				return sub { IkiWiki::needsignin($cgi, $session) };
@@ -94,6 +103,9 @@ sub formbuilder_setup (@) { #{{{
 				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");
+				}
 			}
 		}
 	}