public function execute( $par ) {
$this->setHeaders();
$this->outputHeader();
+ $this->getOutput()->addModules( 'mediawiki.userSuggest' );
$opts = new FormOptions;
$opts->add( 'type', '' );
),
'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(
--- /dev/null
+/*!
+ * 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 ) );