Merge "Avoid DBPerformance warnings on PURGE/TRACE requests"
[lhc/web/wiklou.git] / resources / src / mediawiki.widgets / mw.widgets.CategorySelector.js
index dffcbdd..45f52b7 100644 (file)
@@ -9,7 +9,7 @@
                NS_CATEGORY = mw.config.get( 'wgNamespaceIds' ).category;
 
        /**
-        * Category selector widget. Displays an OO.ui.CapsuleMultiSelectWidget
+        * Category selector widget. Displays an OO.ui.CapsuleMultiselectWidget
         * and autocompletes with available categories.
         *
         *     var selector = new mw.widgets.CategorySelector( {
         *
         *     $( '#content' ).append( selector.$element );
         *
-        *     selector.setSearchType( [ mw.widgets.CategorySelector.SearchType.SubCategories ] );
+        *     selector.setSearchTypes( [ mw.widgets.CategorySelector.SearchType.SubCategories ] );
         *
         * @class mw.widgets.CategorySelector
         * @uses mw.Api
-        * @extends OO.ui.CapsuleMultiSelectWidget
+        * @extends OO.ui.CapsuleMultiselectWidget
         * @mixins OO.ui.mixin.PendingElement
         *
         * @constructor
@@ -67,7 +67,7 @@
 
        /* Setup */
 
-       OO.inheritClass( CategorySelector, OO.ui.CapsuleMultiSelectWidget );
+       OO.inheritClass( CategorySelector, OO.ui.CapsuleMultiselectWidget );
        OO.mixinClass( CategorySelector, OO.ui.mixin.PendingElement );
        CSP = CategorySelector.prototype;
 
                switch ( searchType ) {
                        case CategorySelector.SearchType.OpenSearch:
                                this.api.get( {
+                                       formatversion: 2,
                                        action: 'opensearch',
                                        namespace: NS_CATEGORY,
                                        limit: this.limit,
 
                        case CategorySelector.SearchType.InternalSearch:
                                this.api.get( {
+                                       formatversion: 2,
                                        action: 'query',
                                        list: 'allpages',
                                        apnamespace: NS_CATEGORY,
                                }
 
                                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 ) );
                                }
 
                                this.api.get( {
+                                       formatversion: 2,
                                        action: 'query',
                                        list: 'categorymembers',
                                        cmtype: 'subcat',
                                }
 
                                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 ) );