[Rt-commit] rt branch, 4.4-trunk, updated. rt-4.4.4-553-g0f6d76e972
? sunnavy
sunnavy at bestpractical.com
Mon Jun 28 16:15:02 EDT 2021
The branch, 4.4-trunk has been updated
via 0f6d76e9727d49a37fde57e555319a1eb88cf379 (commit)
via 8cfc02a6c9f080521be6454cce849ee8787a0a06 (commit)
from e5dbd854deed76d12f1ec3d1dace0c66d267b7f6 (commit)
Summary of changes:
lib/RT/Interface/Web.pm | 22 ++++++++++++++++++++++
share/html/Search/Bulk.html | 10 ++++++++++
2 files changed, 32 insertions(+)
- Log -----------------------------------------------------------------
commit 8cfc02a6c9f080521be6454cce849ee8787a0a06
Author: Steven Burr <steve at bestpractical.com>
Date: Mon Jun 21 14:52:02 2021 -0400
Allow clearing roles on bulk updates page
The bulk update page currently allows one to specify specific
principals to add/remove to/from ticket roles, but there is no
way to completely clear all members from a role without knowing
all of their identities in advance.
This change adds a checkbox to optionally clear each multiple-member
core and/or custom roles.
diff --git a/lib/RT/Interface/Web.pm b/lib/RT/Interface/Web.pm
index 41d937ed9a..acd867f7e4 100644
--- a/lib/RT/Interface/Web.pm
+++ b/lib/RT/Interface/Web.pm
@@ -3607,6 +3607,28 @@ sub ProcessTicketWatchers {
push @results, $msg;
}
+ # Clear all watchers in the simple style demanded by the bulk manipulator
+ elsif ( $key =~ /^Clear(Requestor|Cc|AdminCc|RT::CustomRole-\d+)$/ ) {
+ my ( $role_group, $msg ) = $Ticket->RoleGroup($1);
+ if ( $role_group ) {
+ my $members = $role_group->MembersObj;
+ while (my $group_member = $members->Next) {
+ # In case the member is deleted automatically by scrips,
+ # call HasMember to make sure the member still exists.
+ if ( $role_group->HasMember( $group_member->MemberId ) ) {
+ my ( $code, $msg ) = $Ticket->DeleteWatcher(
+ PrincipalId => $group_member->MemberId,
+ Type => $1
+ );
+ push @results, $msg;
+ }
+ }
+ } else {
+ RT::Logger->error("Could not load RoleGroup for $1");
+ push @results, $msg;
+ }
+ }
+
# Add new watchers by email address
elsif ( ( $ARGSRef->{$key} || '' ) =~ /^(?:AdminCc|Cc|Requestor|RT::CustomRole-\d+)$/
and $key =~ /^WatcherTypeEmail(\d*)$/ )
diff --git a/share/html/Search/Bulk.html b/share/html/Search/Bulk.html
index e5be348696..89b08084f2 100644
--- a/share/html/Search/Bulk.html
+++ b/share/html/Search/Bulk.html
@@ -86,14 +86,20 @@
<td class="value"> <& /Elements/EmailInput, Name => "AddRequestor", Size=> 20, Default => $ARGS{AddRequestor}, AutocompleteType => 'Principals' &> </td></tr>
<tr><td class="label"> <&|/l&>Remove Requestor</&>: </td>
<td class="value"> <& /Elements/EmailInput, Name => "DeleteRequestor", Size=> 20, Default => $ARGS{DeleteRequestor}, AutocompleteType => 'Principals' &> </td></tr>
+<tr><td class="label"> <&|/l&>Clear Requestor</&>: </td>
+<td class="value"> <input type="checkbox" id="ClearRequestor" class="checkbox custom-control-input" name="ClearRequestor" <% $ARGS{ClearRequestor} ? 'checked="checked"' : '' %> /></td></tr>
<tr><td class="label"> <&|/l&>Add Cc</&>: </td>
<td class="value"> <& /Elements/EmailInput, Name => "AddCc", Size=> 20, Default => $ARGS{AddCc}, AutocompleteType => 'Principals' &> </td></tr>
<tr><td class="label"> <&|/l&>Remove Cc</&>: </td>
<td class="value"> <& /Elements/EmailInput, Name => "DeleteCc", Size=> 20, Default => $ARGS{DeleteCc}, AutocompleteType => 'Principals' &> </td></tr>
+<tr><td class="label"> <&|/l&>Clear Cc</&>: </td>
+<td class="value"> <input type="checkbox" id="ClearCc" class="checkbox custom-control-input" name="ClearCc" <% $ARGS{ClearCc} ? 'checked="checked"' : '' %> /></td></tr>
<tr><td class="label"> <&|/l&>Add AdminCc</&>: </td>
<td class="value"> <& /Elements/EmailInput, Name => "AddAdminCc", Size=> 20, Default => $ARGS{AddAdminCc}, AutocompleteType => 'Principals' &> </td></tr>
<tr><td class="label"> <&|/l&>Remove AdminCc</&>: </td>
<td class="value"> <& /Elements/EmailInput, Name => "DeleteAdminCc", Size=> 20, Default => $ARGS{DeleteAdminCc}, AutocompleteType => 'Principals' &> </td></tr>
+<tr><td class="label"> <&|/l&>Clear AdminCc</&>: </td>
+<td class="value"> <input type="checkbox" id="ClearAdminCc" class="checkbox custom-control-input" name="ClearAdminCc" <% $ARGS{ClearAdminCc} ? 'checked="checked"' : '' %> /></td></tr>
% my $single_roles = RT::CustomRoles->new($session{CurrentUser});
% $single_roles->LimitToSingleValue;
@@ -117,6 +123,10 @@
<td class="label"> <&|/l, $role->Name &>Remove [_1]</&>: </td>
<td class="value"> <& /Elements/MultiUserRoleInput, role => $role, Name => "DeleteRT::CustomRole-" . $role->Id, Size => 20, Default => $ARGS{"DeleteRT::CustomRole-" . $role->Id}, AutocompleteMultiple => 0 &> </td>
</tr>
+<tr>
+<td class="label"> <&|/l, $role->Name &>Clear [_1]</&>:</td>
+<td class="value"><input type="checkbox" id="ClearRT::CustomRole-<% $role->Id %>" class="checkbox custom-control-input" name="ClearRT::CustomRole-<% $role->Id %>" <% $ARGS{"ClearRT::CustomRole-" . $role->Id} ? 'checked="checked"' : '' %> /></td>
+</tr>
% }
</table>
commit 0f6d76e9727d49a37fde57e555319a1eb88cf379
Merge: e5dbd854de 8cfc02a6c9
Author: sunnavy <sunnavy at bestpractical.com>
Date: Tue Jun 29 03:55:05 2021 +0800
Merge branch '4.4/bulk-update-clear-roles' into 4.4-trunk
-----------------------------------------------------------------------
More information about the rt-commit
mailing list