Ticket #19810: 19810.16.patch

File 19810.16.patch, 8.2 KB (added by Japh, 15 months ago)

Adjustment to the first pass at implementing site autocomplete. It will now user the search term in the query, and inserts the domain for searching.

  • 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

     
    150150} 
    151151 
    152152function wp_ajax_autocomplete_user() { 
    153         if ( !is_multisite() || !current_user_can( 'promote_users' ) || wp_is_large_network( 'users' ) || !is_super_admin() && apply_filters( 'autocomplete_users_for_site_admins', false ) ) 
     153        if ( !is_multisite() || !current_user_can( 'promote_users' ) || wp_is_large_network( 'users' ) || !is_super_admin() ) 
    154154                wp_die( -1 ); 
    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( 
     
    181189        wp_die( json_encode( $return ) ); 
    182190} 
    183191 
     192function wp_ajax_autocomplete_site() { 
     193        if ( !is_multisite() || !current_user_can( 'promote_users' ) || wp_is_large_network( 'sites' ) || !is_super_admin() ) 
     194                wp_die( -1 ); 
     195 
     196        $return = array(); 
     197 
     198        global $wpdb; 
     199        $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", '%' . $_REQUEST['term'] . '%' ), ARRAY_A ); 
     200 
     201        if ( !empty( $sites ) ) { 
     202 
     203                foreach ( (array) $sites as $details ) { 
     204                        $blogname = $wpdb->get_var( $wpdb->prepare( "SELECT option_value FROM " . $wpdb->get_blog_prefix( $details['blog_id'] ) . "options WHERE option_name = 'blogname'" ) ); 
     205                        $return[] = array( 
     206                                /* translators: 1: blogname */ 
     207                                'label' => sprintf( __( '%1$s' ), $blogname ), 
     208                                'value' => $details['domain'] 
     209                        ); 
     210                } 
     211        } else { 
     212                wp_die( -1 ); 
     213        } 
     214 
     215        wp_die( json_encode( $return ) ); 
     216} 
     217 
    184218/* 
    185219 * Ajax helper. 
    186220 */ 
     
    16751709 
    16761710        update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed ); 
    16771711        wp_die( 1 ); 
    1678 } 
    1679  No newline at end of file 
     1712} 
  • 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                 
    442444        $c_users = get_user_count(); 
    443445        $c_blogs = get_blog_count(); 
    444446 
     
    463465 
    464466        <form name="searchform" action="<?php echo network_admin_url('users.php'); ?>" method="get"> 
    465467                <p> 
    466                         <input type="text" name="s" value="" size="17" /> 
     468                        <input type="text" name="s" value="" size="17" id="user-search-input" /> 
    467469                        <?php submit_button( __( 'Search Users' ), 'button', 'submit', false, array( 'id' => 'submit_users' ) ); ?> 
    468470                </p> 
    469471        </form> 
    470472 
    471473        <form name="searchform" action="<?php echo network_admin_url('sites.php'); ?>" method="get"> 
    472474                <p> 
    473                         <input type="text" name="s" value="" size="17" /> 
     475                        <input type="text" name="s" value="" size="17" id="site-search-input" /> 
    474476                        <?php submit_button( __( 'Search Sites' ), 'button', 'submit', false, array( 'id' => 'submit_sites' ) ); ?> 
    475477                </p> 
    476478        </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 
     16        $( '#site-search-input' ).autocomplete({ 
     17                source:   ajaxurl + '?action=autocomplete-site' + id, 
     18                delay:    500, 
     19                minLength: 2 
     20        }); 
     21}); 
  • wp-admin/index.php

     
    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/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 ( current_user_can( 'promote_users' ) && !wp_is_large_network( 'users' ) ) 
    175175        wp_enqueue_script( 'user-search' ); 
    176176 
    177177require('../admin-header.php'); ?> 
  • 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( 'user-search' ); 
     289 
    287290require_once( '../admin-header.php' ); 
    288291?> 
    289292