WordPress.org

Make WordPress Core

Ticket #19810: 19810.19.patch

File 19810.19.patch, 9.0 KB (added by Japh, 4 years ago)

Separated autocomplete for sites and users to allow proper loading / checking

  • 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 ( current_user_can( 'promote_users' ) && !wp_is_large_network( 'users' ) ) 
     343                wp_enqueue_script( 'user-search' ); 
     344 
    341345        include('./admin-header.php'); 
    342346 
    343347        $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

     
    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( 
    175                         /* translators: 1: user_login, 2: user_email */ 
    176                         'label' => sprintf( __( '%1$s (%2$s)' ), $user->user_login, $user->user_email ), 
     183                        'label' => sprintf( '%1$s (%2$s)', $user->user_login, $user->user_email ), 
    177184                        'value' => $user->user_login, 
    178185                ); 
    179186        } 
     
    181188        wp_die( json_encode( $return ) ); 
    182189} 
    183190 
     191function wp_ajax_autocomplete_site() { 
     192        if ( !is_multisite() || !current_user_can( 'manage_sites' ) || wp_is_large_network( 'sites' ) || !is_super_admin() && apply_filters( 'autocomplete_sites_for_site_admins', false ) ) 
     193                wp_die( -1 ); 
     194 
     195        $return = array(); 
     196 
     197        global $wpdb; 
     198        $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 ); 
     199 
     200        if ( empty( $sites ) ) 
     201                wp_die( -1 ); 
     202 
     203        foreach ( (array) $sites as $details ) { 
     204                $blogname = get_blog_option( $details['blog_id'], 'blogname' ); 
     205                $return[] = array( 
     206                        'label' => sprintf( '%1$s (%2$s)', $blogname, $details['domain'] ), 
     207                        'value' => $details['domain'] 
     208                ); 
     209        } 
     210 
     211        wp_die( json_encode( $return ) ); 
     212} 
     213 
    184214/* 
    185215 * Ajax helper. 
    186216 */ 
     
    16751705 
    16761706        update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed ); 
    16771707        wp_die( 1 ); 
    1678 } 
    1679  No newline at end of file 
     1708} 
  • wp-admin/includes/dashboard.php

     
    438438                $actions['create-site'] = '<a href="' . network_admin_url('site-new.php') . '">' . __( 'Create a New Site' ) . '</a>'; 
    439439        if ( current_user_can('create_users') ) 
    440440                $actions['create-user'] = '<a href="' . network_admin_url('user-new.php') . '">' . __( 'Create a New User' ) . '</a>'; 
    441  
     441        if ( current_user_can( 'promote_users' ) && !wp_is_large_network( 'users' ) ) 
     442                wp_enqueue_script( 'user-search' ); 
     443        if ( current_user_can( 'manage_sites' ) && !wp_is_large_network( 'sites' ) ) 
     444                wp_enqueue_script( 'site-search' ); 
     445                 
    442446        $c_users = get_user_count(); 
    443447        $c_blogs = get_blog_count(); 
    444448 
     
    463467 
    464468        <form name="searchform" action="<?php echo network_admin_url('users.php'); ?>" method="get"> 
    465469                <p> 
    466                         <input type="text" name="s" value="" size="17" /> 
     470                        <input type="text" name="s" value="" size="17" id="user-search-input" /> 
    467471                        <?php submit_button( __( 'Search Users' ), 'button', 'submit', false, array( 'id' => 'submit_users' ) ); ?> 
    468472                </p> 
    469473        </form> 
    470474 
    471475        <form name="searchform" action="<?php echo network_admin_url('sites.php'); ?>" method="get"> 
    472476                <p> 
    473                         <input type="text" name="s" value="" size="17" /> 
     477                        <input type="text" name="s" value="" size="17" id="site-search-input" /> 
    474478                        <?php submit_button( __( 'Search Sites' ), 'button', 'submit', false, array( 'id' => 'submit_sites' ) ); ?> 
    475479                </p> 
    476480        </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 ( current_user_can( 'promote_users' ) && !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'] ) ) { 
  • wp-admin/network/sites.php

     
    284284 
    285285$wp_list_table->prepare_items(); 
    286286 
     287if ( current_user_can( 'manage_sites' ) && !wp_is_large_network( 'sites' ) ) 
     288        wp_enqueue_script( 'site-search' ); 
     289 
    287290require_once( '../admin-header.php' ); 
    288291?> 
    289292 
  • 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/*------------------------------------------------------------------------------