#!/usr/bin/perl package IkiWiki::Plugin::lockedit; use warnings; use strict; use IkiWiki 2.00; sub import { #{{{ hook(type => "canedit", id => "lockedit", call => \&canedit); hook(type => "formbuilder_setup", id => "lockedit", call => \&formbuilder_setup); } # }}} sub canedit ($$) { #{{{ my $page=shift; my $cgi=shift; my $session=shift; my $user=$session->param("name"); return undef if defined $user && IkiWiki::is_admin($user); foreach my $admin (@{$config{adminuser}}) { if (pagespec_match($page, IkiWiki::userinfo_get($admin, "locked_pages"))) { IkiWiki::needsignin($cgi, $session) unless defined $user; return sprintf(gettext("%s is locked by %s and cannot be edited"), htmllink("", "", $page, noimageinline => 1), IkiWiki::userlink($admin)); } } return undef; } #}}} sub formbuilder_setup (@) { #{{{ my %params=@_; my $form=$params{form}; my $session=$params{session}; my $cgi=$params{cgi}; my $user_name=$session->param("name"); if ($form->title eq "preferences") { $form->field(name => "locked_pages", size => 50, fieldset => "admin", comment => "(".htmllink("", "", "PageSpec", noimageinline => 1).")"); if (! IkiWiki::is_admin($user_name)) { $form->field(name => "locked_pages", type => "hidden"); } if (! $form->submitted) { $form->field(name => "locked_pages", force => 1, value => IkiWiki::userinfo_get($user_name, "locked_pages")); } 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"); } } } } #}}} 1 a href='/notmuch/diff/tags/96/84/83890576-E2D5-454A-A35A-0B791BBD4112@kaospilot.dk/unread?h=master'>diff
path: root/tags/96/84/83890576-E2D5-454A-A35A-0B791BBD4112@kaospilot.dk/unread
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2023-06-27 09:35:08 +0200
committerJonas Smedegaard <dr@jones.dk>2023-06-27 09:35:08 +0200
commitfd54908da2b05c526dd3bee9b6dcd093214a220d (patch)
treec69c845069c99d1d01044f6fafda7c08433329c6 /tags/96/84/83890576-E2D5-454A-A35A-0B791BBD4112@kaospilot.dk/unread
parentba46132213560cf3335d53560d519c0ec0190da2 (diff)
master
Diffstat (limited to 'tags/96/84/83890576-E2D5-454A-A35A-0B791BBD4112@kaospilot.dk/unread')