WordPress.org

Make WordPress Core

Ticket #19810: 19810.diff

File 19810.diff, 6.3 KB (added by nacin, 2 years ago)
  • 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', 'wp-compression-test', 'imgedit-preview', 'oembed_cache' ); 
     37$core_actions_get = array( 'fetch-list', 'ajax-tag-search', 'wp-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        $return = array(); 
     151 
     152        // Exclude current users of this blog 
     153        $this_blog_users = get_users( array( 'blog_id' => get_current_blog_id(), 'fields' => 'ID' ) ); 
     154 
     155        $users = get_users( array( 
     156                'blog_id' => false, 
     157                'search'  => '*' . $_REQUEST['term'] . '*', 
     158                'exclude' => $this_blog_users, 
     159                'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ), 
     160        ) ); 
     161 
     162        foreach ( $users as $user ) { 
     163                $return[] = array( 
     164                        /* translators: 1: user_login, 2: user_email */ 
     165                        'label' => sprintf( __( '%1$s (%2$s)' ), $user->user_login, $user->user_email ), 
     166                        'value' => $user->user_login, 
     167                ); 
     168        } 
     169 
     170        wp_die( json_encode( $return ) ); 
     171} 
     172 
    149173/* 
    150174 * Ajax helper. 
    151175 */ 
  • wp-admin/js/user-search.dev.js

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

     
    178178 
    179179wp_enqueue_script('wp-ajax-response'); 
    180180wp_enqueue_script('user-profile'); 
     181if ( is_multisite() ) 
     182        wp_enqueue_script('user-search'); 
    181183 
    182184require_once ('admin-header.php'); 
    183185 
  • 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------------------------------------------------------------------------------*/