[Rt-commit] rt branch, 4.4/search-disabled-users, created. rt-4.4.4-174-ga647067e99

Steve Burr steve at bestpractical.com
Mon Nov 23 15:29:27 EST 2020


The branch, 4.4/search-disabled-users has been created
        at  a647067e99e2bfe01aa71d2571a382dc2bec8e8a (commit)

- Log -----------------------------------------------------------------
commit a647067e99e2bfe01aa71d2571a382dc2bec8e8a
Author: Steven Burr <steve at bestpractical.com>
Date:   Mon Nov 23 15:18:13 2020 -0500

    Add ability to search for disabled users
    
    The user search form in the admin section supports a single checkbox
    to indicate whether disabled users should be included in search
    results. This makes it possible to include disabled users, but
    impossible to exclude enabled users.
    
    This change replaces the single checkbox with a pair of checkboxes to
    independently indicate whether enabled, disabled, or both types of
    users should be included. If neither checkbox is selected, rather than
    always returning zero results, the include enabled checkbox is
    automatically ticked for improved DWIM behavior.

diff --git a/share/html/Admin/Users/index.html b/share/html/Admin/Users/index.html
index 25835324ed..b029230991 100644
--- a/share/html/Admin/Users/index.html
+++ b/share/html/Admin/Users/index.html
@@ -68,6 +68,7 @@ jQuery(function(){
 });
 </script>
 </form>
+<br />
 
 <form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html" name="UsersAdmin">
 % foreach my $field( qw(Format Rows Page Order OrderBy) ) {
@@ -93,8 +94,9 @@ jQuery(function(){
                 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>
+<p>Include all <input type="checkbox" class="checkbox" id="FindEnabledUsers" name="FindEnabledUsers" value="1" <% $FindEnabledUsers ? 'checked="checked"' : '' %> /><label for="FindEnabledUsers"><&|/l&> enabled users</&></label>
+<input type="checkbox" class="checkbox" id="FindDisabledUsers" name="FindDisabledUsers" value="1" <% $FindDisabledUsers ? 'checked="checked"' : '' %> /><label for="FindDisabledUsers"><&|/l&> disabled users</&></label>
+</p>
 <br />
 <div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" name="Go" /></div>
 </form>
@@ -112,7 +114,7 @@ jQuery(function(){
     Format => $Format,
     Collection => $users,
     AllowSorting => 1,
-    PassArguments => [qw(Format Rows Page Order OrderBy UserString UserOp UserField UserString2 UserOp2 UserField2 UserString3 UserOp3 UserField3 IdLike EmailLike FindDisabledUsers)],
+    PassArguments => [qw(Format Rows Page Order OrderBy UserString UserOp UserField UserString2 UserOp2 UserField2 UserString3 UserOp3 UserField3 IdLike EmailLike FindEnabledUsers FindDisabledUsers)],
 &>
 
 % }
@@ -120,7 +122,15 @@ jQuery(function(){
 <%INIT>
 my $caption;
 my $users = RT::Users->new( $session{'CurrentUser'} );
-$users->FindAllRows if $FindDisabledUsers;
+if ( $FindEnabledUsers ) {
+    $FindDisabledUsers ? $users->FindAllRows : $users->LimitToEnabled;
+} else {
+    unless ( $FindDisabledUsers ) {
+        RT->Logger->warn("Including neither enabled nor disabled users would result in zero results. Assuming enabled instead");
+        $FindEnabledUsers = 1;
+    }
+    $FindDisabledUsers ? $users->LimitToDeleted : $users->LimitToEnabled;
+}
 
 $caption = loc("Users matching search criteria");
 my @users_queries = ();
@@ -206,5 +216,6 @@ $UserField3 => 'Name'
 $IdLike => undef
 $EmailLike => undef
 
-$FindDisabledUsers => 0
+$FindEnabledUsers => undef    # NB: the DWIM logic for 'include neither' makes this default = 1
+$FindDisabledUsers => undef
 </%ARGS>

-----------------------------------------------------------------------


More information about the rt-commit mailing list