TitleWidget: Add missing return documentation
[lhc/web/wiklou.git] / resources / src / mediawiki.widgets / mw.widgets.TitleWidget.js
index b805e65..1732407 100644 (file)
@@ -6,6 +6,16 @@
  */
 ( function ( $, mw ) {
 
+       var interwikiPrefixesPromise = new mw.Api().get( {
+                       action: 'query',
+                       meta: 'siteinfo',
+                       siprop: 'interwikimap'
+               } ).then( function ( data ) {
+                       return $.map( data.query.interwikimap, function ( interwiki ) {
+                               return interwiki.prefix;
+                       } );
+               } );
+
        /**
         * Mixin for title widgets
         *
@@ -28,8 +38,6 @@
         * @cfg {Object} [cache] Result cache which implements a 'set' method, taking keyed values as an argument
         */
        mw.widgets.TitleWidget = function MwWidgetsTitleWidget( config ) {
-               var widget = this;
-
                // Config initialization
                config = $.extend( {
                        maxLength: 255,
 
                // Initialization
                this.$element.addClass( 'mw-widget-titleWidget' );
-               this.interwikiPrefixes = [];
-               this.interwikiPrefixesPromise = new mw.Api().get( {
-                       action: 'query',
-                       meta: 'siteinfo',
-                       siprop: 'interwikimap'
-               } ).done( function ( data ) {
-                       $.each( data.query.interwikimap, function ( index, interwiki ) {
-                               widget.interwikiPrefixes.push( interwiki.prefix );
-                       } );
-               } );
        };
 
        /* Setup */
@@ -98,6 +96,8 @@
        /**
         * Get a promise which resolves with an API repsonse for suggested
         * links for the current query.
+        *
+        * @return {jQuery.Promise} Suggestions promise
         */
        mw.widgets.TitleWidget.prototype.getSuggestionsPromise = function () {
                var req,
                        } };
 
                if ( mw.Title.newFromText( query ) ) {
-                       return this.interwikiPrefixesPromise.then( function () {
+                       return interwikiPrefixesPromise.then( function ( interwikiPrefixes ) {
                                var params,
                                        interwiki = query.substring( 0, query.indexOf( ':' ) );
                                if (
                                        interwiki && interwiki !== '' &&
-                                       widget.interwikiPrefixes.indexOf( interwiki ) !== -1
+                                       interwikiPrefixes.indexOf( interwiki ) !== -1
                                ) {
                                        return $.Deferred().resolve( { query: {
                                                pages: [ {
                                disambiguation: OO.getProp( suggestionPage, 'pageprops', 'disambiguation' ) !== undefined,
                                imageUrl: OO.getProp( suggestionPage, 'thumbnail', 'source' ),
                                description: OO.getProp( suggestionPage, 'terms', 'description' ),
-                               // sort index
+                               // Sort index
                                index: suggestionPage.index
                        };
 
                                        missing: false,
                                        redirect: true,
                                        disambiguation: false,
-                                       description: mw.msg( 'mw-widgets-titleinput-description-redirect', suggestionPage.title )
+                                       description: mw.msg( 'mw-widgets-titleinput-description-redirect', suggestionPage.title ),
+                                       // Sort index, just below its target
+                                       index: suggestionPage.index + 0.5
                                };
                                titles.push( redirects[ i ] );
                        }