& /Elements/Header, Title => loc('Modify people related to queue [_1]', $QueueObj->Name) &> <& /Admin/Elements/QueueTabs, id => $id &> <& /Elements/ListActions, actions => \@results &>
<%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'}); } %INIT> <%ARGS> $UserField => 'Name' $UserOp => '=' $UserString => undef $Type => undef $id => undef %ARGS>