WordPress.org

Make WordPress Core

Ticket #19810: 19810.20.patch

File 19810.20.patch, 10.1 KB (added by Japh, 6 years ago)

Patch including changes from [19934], and applying them across the other new user and site autocomplete areas

  • wp-includes/script-loader.php

     
    262262
    263263        $scripts->add( 'user-search', "/wp-admin/js/user-search$suffix.js", array( 'jquery-ui-autocomplete' ), false, 1 );
    264264
     265        $scripts->add( 'site-search', "/wp-admin/js/site-search$suffix.js", array( 'jquery-ui-autocomplete' ), false, 1 );
     266
    265267        $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", array(), false, 1 );
    266268
    267269        $scripts->add( 'wplink', "/wp-includes/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), false, 1 );
  • wp-admin/users.php

     
    338338                wp_redirect( add_query_arg( 'paged', $total_pages ) );
    339339                exit;
    340340        }
     341
     342        if ( is_multisite()
     343                && current_user_can( 'promote_users' )
     344                && ! wp_is_large_network( 'users' )
     345                && ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) )
     346        ) {
     347                wp_enqueue_script( 'user-search' );
     348        }
     349
    341350        include('./admin-header.php');
    342351
    343352        $messages = array();
  • wp-admin/admin-ajax.php

     
    3434
    3535do_action( 'admin_init' );
    3636
    37 $core_actions_get = array( 'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache', 'autocomplete-user' );
     37$core_actions_get = array( 'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache', 'autocomplete-user', 'autocomplete-site' );
    3838
    3939$core_actions_post = array(
    4040        'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link',
  • wp-admin/includes/ajax-actions.php

     
    160160       
    161161        $return = array();
    162162
     163        // Check the type of request
     164        if ( isset( $_REQUEST['autocomplete_type'] ) )
     165                $type = $_REQUEST['autocomplete_type'];
     166        else
     167                $type = 'add';
     168
    163169        // Exclude current users of this blog
    164170        if ( isset( $_REQUEST['site_id'] ) )
    165171                $id = absint( $_REQUEST['site_id'] );
    166172        else
    167173                $id = get_current_blog_id();
    168174
    169         $this_blog_users = get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) );
     175        $include_blog_users = ( $type == 'search' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
     176        $exclude_blog_users = ( $type == 'add' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
    170177
    171178        $users = get_users( array(
    172179                'blog_id' => false,
    173180                'search'  => '*' . $_REQUEST['term'] . '*',
    174                 'exclude' => $this_blog_users,
     181                'include' => $include_blog_users,
     182                'exclude' => $exclude_blog_users,
    175183                'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ),
    176         ) );   
     184        ) );
    177185
    178186        foreach ( $users as $user ) {
    179187                $return[] = array(
    180                         /* translators: 1: user_login, 2: user_email */
    181                         'label' => sprintf( __( '%1$s (%2$s)' ), $user->user_login, $user->user_email ),
     188                        'label' => sprintf( '%1$s (%2$s)', $user->user_login, $user->user_email ),
    182189                        'value' => $user->user_login,
    183190                );
    184191        }
     
    186193        wp_die( json_encode( $return ) );
    187194}
    188195
     196function wp_ajax_autocomplete_site() {
     197        if ( !is_multisite()
     198                || !current_user_can( 'manage_sites' )
     199                || wp_is_large_network( 'sites' )
     200                || ( !is_super_admin() && apply_filters( 'autocomplete_sites_for_site_admins', false ) )
     201        ) {
     202                wp_die( -1 );
     203        }
     204
     205        $return = array();
     206
     207        global $wpdb;
     208        $sites = $wpdb->get_results( $wpdb->prepare( "SELECT blog_id, domain FROM $wpdb->blogs WHERE domain LIKE %s AND public = '1' AND archived = '0' AND mature = '0' AND spam = '0' AND deleted = '0' ORDER BY registered DESC", '%' . like_escape( stripslashes( $_REQUEST['term'] ) ) . '%' ), ARRAY_A );
     209
     210        if ( empty( $sites ) )
     211                wp_die( -1 );
     212
     213        foreach ( (array) $sites as $details ) {
     214                $blogname = get_blog_option( $details['blog_id'], 'blogname' );
     215                $return[] = array(
     216                        'label' => sprintf( '%1$s (%2$s)', $blogname, $details['domain'] ),
     217                        'value' => $details['domain']
     218                );
     219        }
     220
     221        wp_die( json_encode( $return ) );
     222}
     223
    189224/*
    190225 * Ajax helper.
    191226 */
  • wp-admin/includes/dashboard.php

     
    439439        if ( current_user_can('create_users') )
    440440                $actions['create-user'] = '<a href="' . network_admin_url('user-new.php') . '">' . __( 'Create a New User' ) . '</a>';
    441441
     442        if ( is_multisite()
     443                && current_user_can( 'promote_users' )
     444                && ! wp_is_large_network( 'users' )
     445                && ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) )
     446        ) {
     447                wp_enqueue_script( 'user-search' );
     448        }
     449        if ( is_multisite()
     450                && current_user_can( 'manage_sites' )
     451                && ! wp_is_large_network( 'sites' )
     452                && ( is_super_admin() || apply_filters( 'autocomplete_sites_for_site_admins', false ) )
     453        ) {
     454                wp_enqueue_script( 'site-search' );
     455        }
     456
    442457        $c_users = get_user_count();
    443458        $c_blogs = get_blog_count();
    444459
     
    463478
    464479        <form name="searchform" action="<?php echo network_admin_url('users.php'); ?>" method="get">
    465480                <p>
    466                         <input type="text" name="s" value="" size="17" />
     481                        <input type="text" name="s" value="" size="17" id="user-search-input" />
    467482                        <?php submit_button( __( 'Search Users' ), 'button', 'submit', false, array( 'id' => 'submit_users' ) ); ?>
    468483                </p>
    469484        </form>
    470485
    471486        <form name="searchform" action="<?php echo network_admin_url('sites.php'); ?>" method="get">
    472487                <p>
    473                         <input type="text" name="s" value="" size="17" />
     488                        <input type="text" name="s" value="" size="17" id="site-search-input" />
    474489                        <?php submit_button( __( 'Search Sites' ), 'button', 'submit', false, array( 'id' => 'submit_sites' ) ); ?>
    475490                </p>
    476491        </form>
  • 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/js/site-search.dev.js

     
     1jQuery( function($) {
     2        $( '#site-search-input' ).autocomplete({
     3                source:   ajaxurl + '?action=autocomplete-site',
     4                delay:    500,
     5                minLength: 2
     6        });
     7});
  • wp-admin/index.php

    Property changes on: wp-admin/js/site-search.dev.js
    ___________________________________________________________________
    Added: svn:executable
       + *
    
     
    8888        '<p>' . __( '<a href="http://codex.wordpress.org/Dashboard_Screen" target="_blank">Documentation on Dashboard</a>' ) . '</p>' .
    8989        '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
    9090);
    91 
     91       
    9292include (ABSPATH . 'wp-admin/admin-header.php');
    9393
    9494$today = current_time('mysql', 1);
  • wp-admin/network/users.php

     
    247247        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
    248248);
    249249
     250if ( is_multisite()
     251        && current_user_can( 'promote_users' )
     252        && ! wp_is_large_network( 'users' )
     253        && ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) )
     254) {
     255        wp_enqueue_script( 'user-search' );
     256}
     257
    250258require_once( '../admin-header.php' );
    251259
    252260if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) {
  • wp-admin/network/site-users.php

     
    171171$parent_file = 'sites.php';
    172172$submenu_file = 'sites.php';
    173173
    174 if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) && !wp_is_large_network( 'users' ) )
     174if ( is_multisite()
     175        && current_user_can( 'promote_users' )
     176        && ! wp_is_large_network( 'users' )
     177        && ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) )
     178) {
    175179        wp_enqueue_script( 'user-search' );
     180}
    176181
    177182require('../admin-header.php'); ?>
    178183
  • wp-admin/network/sites.php

     
    284284
    285285$wp_list_table->prepare_items();
    286286
     287if ( is_multisite()
     288        && current_user_can( 'manage_sites' )
     289        && ! wp_is_large_network( 'sites' )
     290        && ( is_super_admin() || apply_filters( 'autocomplete_sites_for_site_admins', false ) )
     291) {
     292        wp_enqueue_script( 'site-search' );
     293}
     294
    287295require_once( '../admin-header.php' );
    288296?>
    289297
  • wp-admin/css/wp-admin.dev.css

     
    930930
    931931.ui-autocomplete li a.ui-state-hover {
    932932        background-color: #f0f0b8;
     933        cursor: pointer;
    933934}
    934935
    935936/*------------------------------------------------------------------------------