<& /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&>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%>) % }
% }

<&|/l&>Current watchers

<&|/l&>Cc: <& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $QueueObj->Cc &> <&|/l&>Administrative Cc: <& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $QueueObj->AdminCc &>
<& /Elements/TitleBoxEnd &> <& /Elements/Submit, Label => loc('Save Changes'), Caption => loc("If you've updated anything above, be sure to") &>
<%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("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