WordPress.org

Make WordPress Core

Ticket #19810: 19810.7.patch

File 19810.7.patch, 6.9 KB (added by DrewAPicture, 17 months ago)

Adds autocomplete to site-users.php, several other small bits

  • wp-includes/user.php

     
    378378                                'include' => array(), 
    379379                                'exclude' => array(), 
    380380                                'search' => '', 
     381                                'search_columns' => array(), 
    381382                                'orderby' => 'login', 
    382383                                'order' => 'ASC', 
    383384                                'offset' => '', 
     
    476477                        if ( $wild ) 
    477478                                $search = trim($search, '*'); 
    478479 
    479                         if ( false !== strpos( $search, '@') ) 
    480                                 $search_columns = array('user_email'); 
    481                         elseif ( is_numeric($search) ) 
    482                                 $search_columns = array('user_login', 'ID'); 
    483                         elseif ( preg_match('|^https?://|', $search) ) 
    484                                 $search_columns = array('user_url'); 
    485                         else 
    486                                 $search_columns = array('user_login', 'user_nicename'); 
     480                        $search_columns = array(); 
     481                        if ( $qv['search_columns'] ) 
     482                                $search_columns = array_intersect( $qv['search_columns'], array( 'ID', 'user_login', 'user_email', 'user_url', 'user_nicename' ) ); 
     483                        if ( ! $search_columns ) { 
     484                                if ( false !== strpos( $search, '@') ) 
     485                                        $search_columns = array('user_email'); 
     486                                elseif ( is_numeric($search) ) 
     487                                        $search_columns = array('user_login', 'ID'); 
     488                                elseif ( preg_match('|^https?://|', $search) ) 
     489                                        $search_columns = array('user_url'); 
     490                                else 
     491                                        $search_columns = array('user_login', 'user_nicename'); 
     492                        } 
    487493 
    488494                        $this->query_where .= $this->get_search_sql( $search, $search_columns, $wild ); 
    489495                } 
  • wp-includes/script-loader.php

     
    260260 
    261261        $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'jquery', 'password-strength-meter' ), false, 1 ); 
    262262 
     263        $scripts->add( 'user-search', "/wp-admin/js/user-search$suffix.js", array( 'jquery-ui-autocomplete' ), false, 1 ); 
     264 
    263265        $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", array(), false, 1 ); 
    264266 
    265267        $scripts->add( 'wplink', "/wp-includes/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), false, 1 ); 
  • wp-admin/admin-ajax.php

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

     
    146146        wp_die( $return ); 
    147147} 
    148148 
     149function wp_ajax_autocomplete_user() { 
     150        if ( !current_user_can( 'promote_users' ) ) 
     151                wp_die( -1 ); 
     152//      if ( wp_is_large_network('users') ) 
     153//              wp_die( -1 ); 
     154         
     155        $return = array(); 
     156 
     157        // Exclude current users of this blog 
     158        if ( !is_network_admin() ) { 
     159                $this_blog_users = get_users( array( 'blog_id' => get_current_blog_id(), 'fields' => 'ID' ) ); 
     160        } else { 
     161                global $id; 
     162                $this_blog_users = get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ); 
     163        } 
     164 
     165        $users = get_users( array( 
     166                'blog_id' => false, 
     167                'search'  => '*' . $_REQUEST['term'] . '*', 
     168                'exclude' => $this_blog_users, 
     169                'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ), 
     170        ) );     
     171 
     172        foreach ( $users as $user ) { 
     173                $return[] = array( 
     174                        /* translators: 1: user_login, 2: user_email */ 
     175                        'label' => sprintf( __( '%1$s (%2$s)' ), $user->user_login, $user->user_email ), 
     176                        'value' => $user->user_login, 
     177                ); 
     178        } 
     179 
     180        wp_die( json_encode( $return ) ); 
     181} 
     182 
    149183/* 
    150184 * Ajax helper. 
    151185 */ 
  • wp-admin/js/user-search.dev.js

     
     1(function($){    
     2 
     3        $(document).ready(function() { 
     4 
     5                var ainput = $('#adduser-email, #newuser'); 
     6                                 
     7                var options = { 
     8                        source: ajaxurl + '?action=autocomplete-user', 
     9                        appendTo: 'form#adduser', 
     10                        select: function( event, ui ){ $(ainput).val( ui.item.value ); }, 
     11                        delay: 500, // milliseconds 
     12                        minLength: 2, // Don't want to match a crazy number of items. 
     13                }; 
     14 
     15                a = $(ainput).autocomplete(options); 
     16        }); 
     17 
     18})(jQuery); 
  • wp-admin/user-new.php

     
    178178 
    179179wp_enqueue_script('wp-ajax-response'); 
    180180wp_enqueue_script('user-profile'); 
     181if ( is_multisite() && is_super_admin() ) 
     182        wp_enqueue_script('user-search'); 
    181183 
    182184require_once ('admin-header.php'); 
    183185 
  • wp-admin/network/site-users.php

     
    171171$parent_file = 'sites.php'; 
    172172$submenu_file = 'sites.php'; 
    173173 
     174wp_enqueue_script('user-search'); 
     175 
    174176require('../admin-header.php'); ?> 
    175177 
    176178<div class="wrap"> 
  • wp-admin/css/wp-admin.dev.css

     
    892892        margin: 0; 
    893893} 
    894894 
     895#wpcontent input[type="text"].ui-autocomplete-loading { 
     896        background: transparent url('../images/loading.gif') no-repeat right center; 
     897        visibility: visible; 
     898} 
    895899 
     900ul#add-to-blog-users { 
     901        margin: 0 0 0 14px; 
     902} 
     903 
     904form#adduser ul.ui-autocomplete { 
     905        padding: 0; 
     906        margin: 0; 
     907        list-style: none; 
     908        position: absolute; 
     909        z-index: 10000; 
     910        border-width: 1px; 
     911        border-style: solid; 
     912 
     913        background-color: #ffffff; 
     914        border-color: gray; 
     915} 
     916 
     917form#adduser .ui-widget-content {  
     918        background: #ececec; 
     919} 
     920 
     921form#adduser .ui-widget-content li {  
     922        padding: 2px 5px; 
     923        white-space: nowrap; 
     924        text-align: left; 
     925        color: #101010; 
     926} 
     927 
     928form#adduser .ui-widget-content li a { 
     929        display: block; 
     930        height: 100%; 
     931        padding: 2px 5px; 
     932        color: #333; 
     933} 
     934 
     935form#adduser .ui-widget-content li a.ui-state-hover { 
     936        background-color: #f0f0b8; 
     937} 
     938 
     939form#adduser a.remove { 
     940        margin: 6px 0pt 0pt -12px; 
     941        cursor: pointer; 
     942        width: 10px; 
     943        height: 10px; 
     944        display: block; 
     945        float: left; 
     946        text-indent: -9999px; 
     947        overflow: hidden; 
     948        position: absolute; 
     949        background: transparent url(../images/xit.gif) no-repeat; 
     950} 
     951 
     952form#adduser a.remove:hover { 
     953        background: transparent url(../images/xit.gif) no-repeat -10px 0; 
     954} 
     955 
     956 
    896957/*------------------------------------------------------------------------------ 
    897958  3.0 - Actions 
    898959------------------------------------------------------------------------------*/