%# BEGIN LICENSE BLOCK %# %# Copyright (c) 1996-2002 Jesse Vincent %# %# (Except where explictly superceded by other copyright notices) %# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org %# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. %# %# %# Unless otherwise specified, all modifications, corrections or %# extensions to this work which alter its source code become the %# property of Best Practical Solutions, LLC when submitted for %# inclusion in the work. %# %# %# END LICENSE BLOCK <& /Elements/Header, Title => loc('Modify people related to queue [_1]', $QueueObj->Name) &> <& /Admin/Elements/QueueTabs, id => $id &> <& /Elements/ListActions, actions => \@results &>
<& /Elements/TitleBoxStart, title => loc("Modify watchers for queue '[_1]'", $QueueObj->Name), width => "100%" &>

<&|/l&>Current watchers

<&|/l&>Cc: <& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $QueueObj->Cc &> <&|/l&>Administrative Cc: <& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $QueueObj->AdminCc &>

<&|/l&>New watchers

<&|/l&>Find people whose
<& /Elements/SelectUsers &>
<&|/l&>Add new watchers:
% if ($msg) { <%$msg%> % } elsif ($Users) {
    % while (my $u = $Users->Next ) {
  • <&/Elements/SelectWatcherType, Scope=>'queue', Name => "Queue-AddWatcher-Principal-".$u->PrincipalId &> <%$u->Name%> (<%$u->RealName%>) % }
% }
<& /Elements/TitleBoxEnd &> <& /Elements/Submit, Label => loc('Save Changes'), Caption => loc("If you've updated anything above, be sure to"), Reset => 1 &>
<%INIT> my ($field, @results, $User, $Users, $watcher, $msg); # {{{ Load the queue #If we get handed two ids, mason will make them an array. bleck. # We want teh first one. Just because there's no other sensible way # to deal my $QueueObj = new RT::Queue($session{'CurrentUser'}); $QueueObj->Load($id) || Abort(loc("Couldn't load queue", $id)); # }}} # {{{ Delete deletable watchers foreach my $key (keys %ARGS) { my $id = $QueueObj->Id; if (($key =~ /^Queue-$id-DelWatcher-Type-(.*?)-Principal-(\d*)$/)) {; my ($code, $msg) = $QueueObj->DeleteWatcher(Type => $1, PrincipalId => $2); push @results, $msg; } } # }}} # {{{ Add new watchers foreach my $key (keys %ARGS) { #They're in this order because otherwise $1 gets clobbered :/ if ( ($ARGS{$key} =~ /^(AdminCc|Cc)$/) and ($key =~ /^Queue-AddWatcher-Principal-(\d*)$/) ) { $RT::Logger->debug("Adding a watcher $1 to ".$ARGS{$key}."\n"); my ($code, $msg) = $QueueObj->AddWatcher(Type => $ARGS{$key}, PrincipalId => $1); push @results, $msg; } } # }}} if (!$ARGS{'UserString'}) { $msg = loc("No principals selected."); } else { $Users = new RT::Users($session{'CurrentUser'}); $Users->Limit(FIELD => $ARGS{'UserField'}, VALUE => $ARGS{'UserString'}, OPERATOR => $ARGS{'UserOp'}); } <%ARGS> $UserField => 'Name' $UserOp => '=' $UserString => undef $Type => undef $id => undef