WordPress.org

Make WordPress Core

Ticket #19810: 19810.13.patch

File 19810.13.patch, 3.3 KB (added by Japh, 6 years ago)

A modification to allow the autocomplete to be used for more purposes, such as search fields. This should also make it easier to add availability checking too.

  • wp-admin/users.php

     
    338338                wp_redirect( add_query_arg( 'paged', $total_pages ) );
    339339                exit;
    340340        }
     341
     342        if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) && !wp_is_large_network( 'users' ) )
     343                wp_enqueue_script( 'user-search' );
     344
    341345        include('./admin-header.php');
    342346
    343347        $messages = array();
  • wp-admin/includes/ajax-actions.php

     
    155155       
    156156        $return = array();
    157157
     158        // Check the type of request
     159        if ( isset( $_REQUEST['autocomplete_type'] ) )
     160                $type = $_REQUEST['autocomplete_type'];
     161        else
     162                $type = 'add';
     163
    158164        // Exclude current users of this blog
    159165        if ( isset( $_REQUEST['site_id'] ) )
    160166                $id = absint( $_REQUEST['site_id'] );
    161167        else
    162168                $id = get_current_blog_id();
    163169
    164         $this_blog_users = get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) );
     170        $include_blog_users = ( $type == 'search' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
     171        $exclude_blog_users = ( $type == 'add' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
    165172
    166173        $users = get_users( array(
    167174                'blog_id' => false,
    168175                'search'  => '*' . $_REQUEST['term'] . '*',
    169                 'exclude' => $this_blog_users,
     176                'include' => $include_blog_users,
     177                'exclude' => $exclude_blog_users,
    170178                'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ),
    171         ) );   
     179        ) );
    172180
    173181        foreach ( $users as $user ) {
    174182                $return[] = array(
     
    16751683
    16761684        update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed );
    16771685        wp_die( 1 );
    1678 }
    1679  No newline at end of file
     1686}
  • wp-admin/js/user-search.dev.js

     
    22        var id = typeof( current_site_id ) != 'undefined' ? '&site_id=' + current_site_id : '';
    33
    44        $( '#adduser-email, #newuser' ).autocomplete({
    5                 source:   ajaxurl + '?action=autocomplete-user' + id,
     5                source:   ajaxurl + '?action=autocomplete-user&autocomplete_type=add' + id,
    66                delay:    500,
    77                minLength: 2
    88        });
    9 });
    10  No newline at end of file
     9
     10        $( '#user-search-input' ).autocomplete({
     11                source:   ajaxurl + '?action=autocomplete-user&autocomplete_type=search' + id,
     12                delay:    500,
     13                minLength: 2
     14        });
     15});
  • wp-admin/network/users.php

     
    247247        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
    248248);
    249249
     250if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) && !wp_is_large_network( 'users' ) )
     251        wp_enqueue_script( 'user-search' );
     252
    250253require_once( '../admin-header.php' );
    251254
    252255if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) {