Implement autocompletion for Performer field on Special:Log
authorAlex Monk <krenair@gmail.com>
Sat, 1 Feb 2014 20:49:12 +0000 (20:49 +0000)
committerKrinkle <krinklemail@gmail.com>
Tue, 30 Sep 2014 01:03:55 +0000 (01:03 +0000)
Bug: 48241
Change-Id: I5e6af5aba56de613f10f862aaf064aaa32b5b176

includes/logging/LogEventsList.php
includes/specials/SpecialLog.php
resources/Resources.php
resources/src/mediawiki/mediawiki.userSuggest.js [new file with mode: 0644]

index e1f58a4..70f1f1a 100644 (file)
@@ -223,7 +223,8 @@ class LogEventsList extends ContextSource {
                        'user',
                        'mw-log-user',
                        15,
-                       $user
+                       $user,
+                       array( 'class' => 'mw-autocomplete-user' )
                );
 
                return '<span style="white-space: nowrap">' . $label . '</span>';
index dc33801..d3aa6c4 100644 (file)
@@ -47,6 +47,7 @@ class SpecialLog extends SpecialPage {
        public function execute( $par ) {
                $this->setHeaders();
                $this->outputHeader();
+               $this->getOutput()->addModules( 'mediawiki.userSuggest' );
 
                $opts = new FormOptions;
                $opts->add( 'type', '' );
index a0ce040..07db06f 100644 (file)
@@ -962,6 +962,13 @@ return array(
                ),
                'targets' => array( 'desktop', 'mobile' ),
        ),
+       'mediawiki.userSuggest' => array(
+               'scripts' => 'resources/src/mediawiki/mediawiki.userSuggest.js',
+               'dependencies' => array(
+                       'jquery.suggestions',
+                       'mediawiki.api'
+               )
+       ),
        'mediawiki.util' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.util.js',
                'dependencies' => array(
diff --git a/resources/src/mediawiki/mediawiki.userSuggest.js b/resources/src/mediawiki/mediawiki.userSuggest.js
new file mode 100644 (file)
index 0000000..aed093c
--- /dev/null
@@ -0,0 +1,42 @@
+/*!
+ * Add autocomplete suggestions for names of registered users.
+ */
+( function ( mw, $ ) {
+       var api, config;
+
+       config = {
+               fetch: function ( userInput ) {
+                       var $textbox = this,
+                               node = this[0];
+
+                       api = api || new mw.Api();
+
+                       $.data( node, 'request', api.get( {
+                               action: 'query',
+                               list: 'allusers',
+                               // Prefix of list=allusers is case sensitive. Normalise first
+                               // character to uppercase so that "fo" may yield "Foo".
+                               auprefix: userInput.charAt( 0 ).toUpperCase() + userInput.slice( 1 )
+                       } ).done( function ( data ) {
+                               var users = $.map( data.query.allusers, function ( userObj ) {
+                                       return userObj.name;
+                               } );
+                               // Set the results as the autocomplete options
+                               $textbox.suggestions( 'suggestions', users );
+                       } ) );
+               },
+               cancel: function () {
+                       var node = this[0],
+                               request = $.data( node, 'request' );
+
+                       if ( request ) {
+                               request.abort();
+                               $.removeData( node, 'request' );
+                       }
+               }
+       };
+
+       $( function () {
+               $( '.mw-autocomplete-user' ).suggestions( config );
+       } );
+}( mediaWiki, jQuery ) );