Santhosh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/323502

Change subject: Allow API endpoint customization for mw.widgets.TitleWidget
......................................................................

Allow API endpoint customization for mw.widgets.TitleWidget

Currently the API is not customizable in subclasses and always
points to current wiki's api returned by mw.Api().

This patch allows subclasses to override the API so that a subclass
can use a different API endpoint for querying titles. For example,
searching for titles in a different language wikipedia in contexts
such as translation of pages.

Change-Id: I81811cdd1a0750a8335432eee8f971ab9e0b8ee7
---
M resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
1 file changed, 24 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/02/323502/1

diff --git a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js 
b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
index e1e50ea..cf2cd3c 100644
--- a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
+++ b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
@@ -6,16 +6,6 @@
  */
 ( 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
         *
@@ -93,6 +83,18 @@
                this.namespace = namespace;
        };
 
+       mw.widgets.TitleWidget.prototype.getInterwikiPrefixesPromise = 
function() {
+               return this.getApi().get( {
+                       action: 'query',
+                       meta: 'siteinfo',
+                       siprop: 'interwikimap'
+               } ).then( function ( data ) {
+                       return $.map( data.query.interwikimap, function ( 
interwiki ) {
+                               return interwiki.prefix;
+                       } );
+               } );
+       };
+
        /**
         * Get a promise which resolves with an API repsonse for suggested
         * links for the current query.
@@ -108,7 +110,7 @@
                        } };
 
                if ( mw.Title.newFromText( query ) ) {
-                       return interwikiPrefixesPromise.then( function ( 
interwikiPrefixes ) {
+                       return this.getInterwikiPrefixesPromise().then( 
function ( interwikiPrefixes ) {
                                var params,
                                        interwiki = query.substring( 0, 
query.indexOf( ':' ) );
                                if (
@@ -142,11 +144,11 @@
                                                params.prop.push( 'pageterms' );
                                                params.wbptterms = 
'description';
                                        }
-                                       req = new mw.Api().get( params );
+                                       req = widget.getApi().get( params );
                                        promiseAbortObject.abort = 
req.abort.bind( req ); // TODO ew
                                        return req.then( function ( ret ) {
                                                if ( ret.query === undefined ) {
-                                                       ret = new mw.Api().get( 
{ action: 'query', titles: query } );
+                                                       ret = 
widget.getApi().get( { action: 'query', titles: query } );
                                                        
promiseAbortObject.abort = ret.abort.bind( ret );
                                                }
                                                return ret;
@@ -161,6 +163,15 @@
        };
 
        /**
+        * Get the api for the title requests
+        *
+        * @return {mw.Api} MediaWiki API
+        */
+       mw.widgets.TitleWidget.prototype.getApi = function () {
+               return new mw.Api();
+       };
+
+       /**
         * Get option widgets from the server response
         *
         * @param {Object} data Query result

-- 
To view, visit https://gerrit.wikimedia.org/r/323502
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I81811cdd1a0750a8335432eee8f971ab9e0b8ee7
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to