[Rt-commit] rt branch, 4.4-trunk, updated. rt-4.4.3-65-gc2ff4f854
? sunnavy
sunnavy at bestpractical.com
Thu Oct 25 11:39:23 EDT 2018
The branch, 4.4-trunk has been updated
via c2ff4f854a090edabf19d58ef3c10c7818fa89bf (commit)
via 084239d715bd66ec0b3cc4a2232b525176f309c7 (commit)
via adbc39054edda4d362641f4901f82653a17bd8f9 (commit)
via c868116f47dec04f0410d9cb11537ab2bb2d408f (commit)
via 387efdfaeb61b1b62bd7ec68115e9ba21a39dc19 (commit)
from 816ad9b68a96ff931e79ba71d4ef09b01a70e122 (commit)
Summary of changes:
share/html/Admin/Groups/index.html | 79 +++++++++++++++++++++++++++-----------
share/html/Admin/Users/index.html | 73 +++++++++++++++++++++++++----------
share/html/Elements/SelectGroups | 9 +++--
share/html/Elements/SelectUsers | 9 +++--
t/web/admin_groups.t | 60 ++++++++++++++++++++++++++++-
t/web/admin_user.t | 58 ++++++++++++++++++++++++++++
6 files changed, 239 insertions(+), 49 deletions(-)
- Log -----------------------------------------------------------------
commit adbc39054edda4d362641f4901f82653a17bd8f9
Author: Maureen E. Mirville <maureen at bestpractical.com>
Date: Wed Jul 25 12:04:43 2018 -0400
Allow multiple search criteria on Users Admin page
diff --git a/share/html/Admin/Users/index.html b/share/html/Admin/Users/index.html
index f3f4d7b2b..8027fca7b 100644
--- a/share/html/Admin/Users/index.html
+++ b/share/html/Admin/Users/index.html
@@ -69,16 +69,34 @@ jQuery(function(){
</script>
</form>
-<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html">
+<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html" name="UsersAdmin">
% foreach my $field( qw(Format Rows Page Order OrderBy) ) {
% next unless defined $ARGS{ $field } && length $ARGS{ $field };
<input type="hidden" name="<% $field %>" value="<% $ARGS{ $field } %>" />
% }
-<&|/l&>Find all users whose</&> <& /Elements/SelectUsers, %ARGS, Fields => \@fields &><br />
+<table>
+ <tr><td><&|/l&>Find all users whose</&> <& /Elements/SelectUsers, %ARGS, Fields => \@fields &></td></tr>
+ <tr><td><&|/l&>And all users whose</&> <& /Elements/SelectUsers, %ARGS, Fields => \@fields,
+ SelectFieldName => 'UserField2',
+ SelectOpName => 'UserOp2',
+ InputStringName => 'UserString2',
+ UserField => $UserField2,
+ UserOp => $UserOp2,
+ UserString => $UserString2,
+ &></td></tr>
+ <tr><td><&|/l&>And all users whose</&> <& /Elements/SelectUsers, %ARGS, Fields => \@fields,
+ SelectFieldName => 'UserField3',
+ SelectOpName => 'UserOp3',
+ InputStringName => 'UserString3',
+ UserField => $UserField3,
+ UserOp => $UserOp3,
+ UserString => $UserString3,
+ &></td></tr>
+</table>
<input type="checkbox" class="checkbox" id="FindDisabledUsers" name="FindDisabledUsers" value="1" <% $FindDisabledUsers? 'checked="checked"': '' %> />
<label for="FindDisabledUsers"><&|/l&>Include disabled users in search.</&></label>
<br />
-<div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" /></div>
+<div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" name="Go" /></div>
</form>
% unless ( $users->Count ) {
@@ -94,7 +112,7 @@ jQuery(function(){
Format => $Format,
Collection => $users,
AllowSorting => 1,
- PassArguments => [qw(Format Rows Page Order OrderBy UserString UserOp UserField IdLike EmailLike FindDisabledUsers)],
+ PassArguments => [qw(Format Rows Page Order OrderBy UserString UserOp UserField UserString2 UserOp2 UserField2 UserString3 UserOp3 UserField3 IdLike EmailLike FindDisabledUsers)],
&>
% }
@@ -104,21 +122,30 @@ my $caption;
my $users = RT::Users->new( $session{'CurrentUser'} );
$users->FindAllRows if $FindDisabledUsers;
-if ( defined($UserString) && length $UserString ) {
- $caption = loc("Users matching search criteria");
- if ( $UserField =~ /^CustomField-(\d+)/ ) {
- $users->LimitCustomField(
- CUSTOMFIELD => $1,
- OPERATOR => $UserOp,
- VALUE => $UserString,
- );
- }
- else {
- $users->Limit(
- FIELD => $UserField,
- OPERATOR => $UserOp,
- VALUE => $UserString,
- );
+$caption = loc("Users matching search criteria");
+my @users_queries = ();
+push @users_queries, { field => $UserField, op => $UserOp, string => $UserString } if length $UserString;
+push @users_queries, { field => $UserField2, op => $UserOp2, string => $UserString2 } if length $UserString2;
+push @users_queries, { field => $UserField3, op => $UserOp3, string => $UserString3 } if length $UserString3;
+
+if ( scalar @users_queries ) {
+ foreach my $user ( @users_queries ) {
+ if ( $user->{'field'} =~ /^CustomField-(\d+)/ ) {
+ $users->LimitCustomField(
+ CUSTOMFIELD => $1,
+ OPERATOR => $user->{'op'},
+ VALUE => $user->{'string'},
+ ENTRYAGGREGATOR => 'AND',
+ );
+ }
+ else {
+ $users->Limit(
+ FIELD => $user->{'field'},
+ OPERATOR => $user->{'op'},
+ VALUE => $user->{'string'},
+ ENTRYAGGREGATOR => 'AND',
+ );
+ }
}
RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Admin/Users/Modify.html?id=".$users->First->id)
if $users->Count == 1;
@@ -159,8 +186,14 @@ for my $name (@attrs) {
$Format => undef,
$UserString => undef
-$UserOp => '='
+$UserOp => undef
$UserField => 'Name'
+$UserString2 => undef
+$UserOp2 => undef
+$UserField2 => 'Name'
+$UserString3 => undef
+$UserOp3 => undef
+$UserField3 => 'Name'
$IdLike => undef
$EmailLike => undef
diff --git a/share/html/Elements/SelectUsers b/share/html/Elements/SelectUsers
index 8f01c3696..ea15aa6e8 100644
--- a/share/html/Elements/SelectUsers
+++ b/share/html/Elements/SelectUsers
@@ -45,7 +45,7 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<select name="UserField">
+<select name="<% $SelectFieldName %>">
% foreach my $col (@fields) {
<option <% ($UserField eq $col->[0]) ? 'selected="selected"' : '' |n %> value="<% $col->[0] %>"><% loc($col->[1]) %></option>
% }
@@ -54,8 +54,8 @@
<option <% ($UserField eq $val) ? 'selected="selected"' : '' |n %> value="<% $val %>"><&|/l&>CustomField</&>: <% $CF->Name %></option>
% }
</select>
-<& /Elements/SelectMatch, Name => 'UserOp', Default => $UserOp &>
-<input size="8" name="UserString" value="<% $UserString %>" />
+<& /Elements/SelectMatch, Name => $SelectOpName, Default => $UserOp &>
+<input size="8" name="<% $InputStringName %>" value="<% $UserString %>" />
<%INIT>
my $CFs = RT::CustomFields->new($session{'CurrentUser'});
$CFs->LimitToChildType('RT::User');
@@ -78,4 +78,7 @@ $UserField => ''
$UserOp => ''
$UserString => ''
$Fields => undef
+$SelectFieldName => 'UserField'
+$SelectOpName => 'UserOp'
+$InputStringName => 'UserString'
</%ARGS>
commit 084239d715bd66ec0b3cc4a2232b525176f309c7
Author: Maureen E. Mirville <maureen at bestpractical.com>
Date: Fri Jul 27 16:28:56 2018 -0400
Add tests for multiple search criteria on Users Admin page
diff --git a/t/web/admin_user.t b/t/web/admin_user.t
index 04b13a993..ffc287e7a 100644
--- a/t/web/admin_user.t
+++ b/t/web/admin_user.t
@@ -74,6 +74,64 @@ $m->submit_form_ok(
is( $form->find_input('PrivateKey')->value,
'C798591AA831DBFB', 'set private key' );
+
+diag "Test user searches";
+
+my @cf_names = qw( CF1 CF2 CF3 );
+my @cfs = ();
+foreach my $cf_name ( @cf_names ) {
+ my $cf = RT::CustomField->new( RT->SystemUser );
+ my ( $id, $msg ) = $cf->Create(
+ Name => $cf_name,
+ TypeComposite => 'Freeform-1',
+ LookupType => RT::User->CustomFieldLookupType,
+ );
+ ok( $id, $msg );
+ # Create a global ObjectCustomField record
+ my $object = $cf->RecordClassFromLookupType->new( RT->SystemUser );
+ ( $id, $msg ) = $cf->AddToObject( $object );
+ ok( $id, $msg );
+ push ( @cfs, $cf );
+}
+my $cf_1 = $cfs[0];
+my $cf_2 = $cfs[1];
+my $cf_3 = $cfs[2];
+
+my @user_names = qw( user1 user2 user3 user4 );
+my @users = ();
+foreach my $user_name ( @user_names ) {
+ my $user = RT::Test->load_or_create_user(
+ Name => $user_name, Password => 'password',
+ );
+ ok( $user && $user->id, 'Created '.$user->Name.' with id '.$user->Id );
+ push ( @users, $user );
+}
+
+$users[0]->AddCustomFieldValue( Field => $cf_1->id, Value => 'one' );
+
+$users[1]->AddCustomFieldValue( Field => $cf_1->id, Value => 'one' );
+$users[1]->AddCustomFieldValue( Field => $cf_2->id, Value => 'two' );
+
+$users[2]->AddCustomFieldValue( Field => $cf_1->id, Value => 'one' );
+$users[2]->AddCustomFieldValue( Field => $cf_2->id, Value => 'two' );
+$users[2]->AddCustomFieldValue( Field => $cf_3->id, Value => 'three' );
+
+$m->get_ok( $url . '/Admin/Users/index.html' );
+ok( $m->form_name( 'UsersAdmin' ), 'found the filter admin users form');
+$m->select( UserField => 'Name', UserOp => 'LIKE' );
+$m->field( UserString => 'user' );
+$m->select( UserField2 => 'CustomField: '.$cf_1->Name, UserOp2 => 'LIKE' );
+$m->field( UserString2 => 'one' );
+$m->select( UserField3 => 'CustomField: '.$cf_2->Name, UserOp3 => 'LIKE' );
+$m->field( UserString3 => 'two' );
+$m->click( 'Go' );
+
+diag "Verify results contain users 2 & 3, but not 1 & 4";
+$m->content_contains( $users[1]->Name );
+$m->content_contains( $users[2]->Name );
+$m->content_lacks( $users[0]->Name );
+$m->content_lacks( $users[3]->Name );
+
# TODO more /Admin/Users tests
done_testing;
commit c2ff4f854a090edabf19d58ef3c10c7818fa89bf
Merge: 816ad9b68 084239d71
Author: sunnavy <sunnavy at bestpractical.com>
Date: Thu Oct 25 23:38:04 2018 +0800
Merge branch '4.4/add-groups-users-cf-filter' into 4.4-trunk
-----------------------------------------------------------------------
More information about the rt-commit
mailing list