mw.widgets.TitleWidget.js: Share interwikiPrefixes between multiple instances
authorFomafix <fomafix@googlemail.com>
Wed, 27 Jan 2016 15:31:07 +0000 (15:31 +0000)
committerFlorianschmidtwelzow <florian.schmidt.stargatewissen@gmail.com>
Thu, 24 Mar 2016 19:25:18 +0000 (19:25 +0000)
The interwikiPrefixes are static and do not need to load separately for every instance.

Bug: T124899
Change-Id: I316bdcc67ba176d22a70cd30fc3eb72bfe0be509

resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js

index b805e65..8b02443 100644 (file)
@@ -6,6 +6,17 @@
  */
 ( function ( $, mw ) {
 
+       var interwikiPrefixes = [],
+               interwikiPrefixesPromise = new mw.Api().get( {
+                       action: 'query',
+                       meta: 'siteinfo',
+                       siprop: 'interwikimap'
+               } ).done( function ( data ) {
+                       $.each( data.query.interwikimap, function ( index, interwiki ) {
+                               interwikiPrefixes.push( interwiki.prefix );
+                       } );
+               } );
+
        /**
         * Mixin for title widgets
         *
@@ -28,8 +39,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 */
                        } };
 
                if ( mw.Title.newFromText( query ) ) {
-                       return this.interwikiPrefixesPromise.then( function () {
+                       return interwikiPrefixesPromise.then( function () {
                                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: [ {