*/
( 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
*
* @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 */
/**
* 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 ] );
}