%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => loc('Modify people related to queue [_1]', $QueueObj->Name) &>
-<& /Admin/Elements/QueueTabs, id => $id,
- QueueObj => $QueueObj,
- current_tab => $current_tab,
- Title => loc('Modify people related to queue [_1]', $QueueObj->Name) &>
+<& /Elements/Header, Title => $title &>
+
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
<h3><&|/l&>Current watchers</&></h3>
+% for my $Name (RT::Queue->ManageableRoleGroupTypes) {
+<& /Admin/Elements/EditQueueWatcherGroup, Label => loc($Name), QueueObj => $QueueObj, Watchers => $QueueObj->$Name &>
+% }
-<&|/l&>Cc</&>:
-
-<& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $QueueObj->Cc &>
-
-<&|/l&>Administrative Cc</&>:
-
-<& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $QueueObj->AdminCc &>
-
+% $m->callback(CallbackName => 'CurrentWatchers', QueueObj => $QueueObj);
</td>
<td valign="top">
<%INIT>
-my $current_tab;
my ($field, @results, $User, $Users, $Groups, $watcher, $user_msg, $group_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'});
+my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($id) || Abort(loc("Couldn't load queue", $id));
-# }}}
unless ($OnlySearchForPeople or $OnlySearchForGroup) {
-# {{{ Delete deletable watchers
+# Delete deletable watchers
foreach my $key (keys %ARGS) {
my $id = $QueueObj->Id;
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);
+
+# Add new watchers
+ foreach my $key (keys %ARGS) {
+ my $type = $ARGS{$key};
+
+ next unless $key =~ /^Queue-AddWatcher-Principal-(\d*)$/;
+ my $id = $1;
+
+ next unless RT::Queue->IsManageableRoleGroupType($type);
+
+ my ($code, $msg) = $QueueObj->AddWatcher(
+ Type => $type,
+ PrincipalId => $id,
+ );
push @results, $msg;
- }
}
-
-# }}}
}
-if (!length $ARGS{'UserString'}) {
-$user_msg = loc("No principals selected.");
- }
-else {
- $Users = new RT::Users($session{'CurrentUser'});
- $Users->Limit(FIELD => $ARGS{'UserField'},
- VALUE => $ARGS{'UserString'},
- OPERATOR => $ARGS{'UserOp'});
- }
-
-if (!length $ARGS{'GroupString'}) {
-$group_msg = loc("No principals selected.");
- }
-else {
-$Groups = new RT::Groups($session{'CurrentUser'});
-$Groups->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'UserDefined');
-$Groups->Limit(FIELD => $ARGS{'GroupField'},
- VALUE => $ARGS{'GroupString'},
- OPERATOR => $ARGS{'GroupOp'});
- }
-
-$current_tab = 'Admin/Queues/People.html?id='.$QueueObj->id;
+if ( $ARGS{'UserString'} ) {
+ $Users = RT::Users->new( $session{'CurrentUser'} );
+ $Users->Limit( FIELD => $ARGS{'UserField'},
+ VALUE => $ARGS{'UserString'},
+ OPERATOR => $ARGS{'UserOp'}
+ );
+} else {
+ $user_msg = loc("No principals selected.");
+ }
+
+if ( $ARGS{'GroupString'} ) {
+ $Groups = RT::Groups->new( $session{'CurrentUser'} );
+ $Groups->LimitToUserDefinedGroups;
+ $Groups->Limit( FIELD => $ARGS{'GroupField'},
+ VALUE => $ARGS{'GroupString'},
+ OPERATOR => $ARGS{'GroupOp'}
+ );
+} else {
+ $group_msg = loc("No principals selected.");
+}
+my $title = loc('People related to queue [_1]', $QueueObj->Name);
</%INIT>
<%ARGS>