With a little hack from: [UseModWiki소스수정/UploadedFiles매크로] (for delete images).
Current action permits manage both status (lock, unlock) through one input.
Analogously, this may apply to Delete Pages.
Comments are welcome.
sub DoOtherRequest {
...
} elsif ($action eq "node") {
&DoIndex();
+ } elsif ($action eq 'lockbulk') {
+ &PrintPageLockList();
+ } elsif ($action eq 'lockcheckedfiles') {
+ &DoLockCheckedFiles();
...
}
sub GetAdminBar {
...
$result .= " | " . &ScriptLink("action=editlinks", T("Edit/Rename pages"));
+ $result .= " | " . &ScriptLink("action=lockbulk", T('Lock/Unlock Bulk'));
...
}
+ sub PrintPageLockList {
+ my ($pagename, @pagename);
+ my (@results) = @_;
+ my %hash;
+
+ print &GetHeader('', T('Bulk Lock'), '');
+ print $q->start_form("post","$ScriptName","");
+ print "<input type='hidden' name='action' value='lockcheckedfiles'>";
+ print '<ol>';
+ foreach $pagename (&AllPagesList()) {
+ @pagename = split (/\//,$pagename);
+ print '<li>';
+ if (-f &GetLockedPageFile($pagename)) {
+ print "<input type='checkbox' name='next' value='$pagename' checked='1'/>";
+ print "<input type='hidden' name='prev' value='$pagename'/>" ;
+ } else {
+ print "<input type='checkbox' name='next' value='$pagename'/>";
+ }
+ for (1 .. $#pagename) {print ' .. ',}
+ print &GetPageLink($pagename);
+ }
+ }
+ print '<br>';
+ print $q->submit(T('DoIt')) if (&UserIsAdmin());
+ print $q->endform;
+ print '</ol>';
+ print &GetCommonFooter();
+ }
+
+ sub DoLockCheckedFiles {
my (%vars, %count, @next, @prev, @diffs);
+ my $fname;
+ my $diffs;
+
+ print &GetHeader("", T('Lock Checked Files'), "");
+ return if (!&UserIsAdminOrError());
+ %vars = $q->Vars;
+ # this array provides the list with check state (for submit)
+ @next = split(/\0/,$vars{'next'}, -1);
+ # this array provides items in lock status (before submit)
+ @prev = split(/\0/,$srav{'prev'}, -1);
+ # not-commons elements (changes to submit: check mark to uncheck or viceversa)
+ map $count{$_}++ , @next, @prev;
+ $, = "";
+ push (@diffs, grep $count{$_} == 1, @next, @prev);
+ if (@diffs) {
+ foreach (@diffs) {
+ $fname = &GetLockedPageFile($_);
+ if (-f $fname) {
+ unlink $fname;
+ print Ts('%s is unlocked successfully', $_) . '<br>';
+ next;
+ }
+ if (!-f $fname) {
+ &WriteStringToFile($fname, "editing locked.");
+ print Ts('%s is locked successfully', $_) . '<br>';
+ }
+ }
+ } else {
+ print T('Invalid URL or bulk does not exist --nothing done');
+ }
+ print &GetCommonFooter();
+ }
--JuanmaMP