From 7b57752e65c3cac62d973f43d1060b6bd0ab2a2f Mon Sep 17 00:00:00 2001 From: Fomafix Date: Fri, 5 Feb 2016 22:21:51 +0000 Subject: [PATCH] mediawiki.widgets: Use formatversion=2 for API requests MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit With formatversion=2 the JSON response uses UTF-8 instead of escape sequences with hex for encoding of non-ASCII characters (e.g. "\u00e4" for "ä"). The processing of the response is adapted to the new format. Change-Id: I2fc0a696a8aa4486c497ac25763f8e4ece671a26 --- .../mw.widgets.CategoryCapsuleItemWidget.js | 11 ++++--- .../mw.widgets.CategorySelector.js | 29 ++++++++++--------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js b/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js index 6db7c12c74..29eaaad126 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js @@ -46,17 +46,16 @@ return; } this.currentRequest = this.api.get( { + formatversion: 2, action: 'query', prop: [ 'info' ], titles: titles } ).done( function ( response ) { - var index, curr, title; - for ( index in response.query.pages ) { - curr = response.query.pages[ index ]; - title = new ForeignTitle( curr.title ).getPrefixedText(); - this.existenceCache[ title ] = curr.missing === undefined; + $.each( response.query.pages, function ( index, page ) { + var title = new ForeignTitle( page.title ).getPrefixedText(); + this.existenceCache[ title ] = !page.missing; queue[ title ].resolve( this.existenceCache[ title ] ); - } + } ); }.bind( this ) ); }; diff --git a/resources/src/mediawiki.widgets/mw.widgets.CategorySelector.js b/resources/src/mediawiki.widgets/mw.widgets.CategorySelector.js index c242b6c111..5d7d115a3e 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.CategorySelector.js +++ b/resources/src/mediawiki.widgets/mw.widgets.CategorySelector.js @@ -265,6 +265,7 @@ switch ( searchType ) { case CategorySelector.SearchType.OpenSearch: this.api.get( { + formatversion: 2, action: 'opensearch', namespace: NS_CATEGORY, limit: this.limit, @@ -277,6 +278,7 @@ case CategorySelector.SearchType.InternalSearch: this.api.get( { + formatversion: 2, action: 'query', list: 'allpages', apnamespace: NS_CATEGORY, @@ -298,18 +300,18 @@ } this.api.get( { + formatversion: 2, action: 'query', prop: 'info', titles: 'Category:' + input } ).done( function ( res ) { - var page, - categories = []; + var categories = []; - for ( page in res.query.pages ) { - if ( parseInt( page, 10 ) > -1 ) { - categories.push( res.query.pages[ page ].title ); + $.each( res.query.pages, function ( index, page ) { + if ( !page.missing ) { + categories.push( page.title ); } - } + } ); deferred.resolve( categories ); } ).fail( deferred.reject.bind( deferred ) ); @@ -322,6 +324,7 @@ } this.api.get( { + formatversion: 2, action: 'query', list: 'categorymembers', cmtype: 'subcat', @@ -342,23 +345,23 @@ } this.api.get( { + formatversion: 2, action: 'query', prop: 'categories', cllimit: this.limit, titles: 'Category:' + input } ).done( function ( res ) { - var page, - categories = []; + var categories = []; - for ( page in res.query.pages ) { - if ( parseInt( page, 10 ) > -1 ) { - if ( $.isArray( res.query.pages[ page ].categories ) ) { - categories.push.apply( categories, res.query.pages[ page ].categories.map( function ( category ) { + $.each( res.query.pages, function ( index, page ) { + if ( !page.missing ) { + if ( $.isArray( page.categories ) ) { + categories.push.apply( categories, page.categories.map( function ( category ) { return category.title; } ) ); } } - } + } ); deferred.resolve( categories ); } ).fail( deferred.reject.bind( deferred ) ); -- 2.20.1