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( {
*
* @class mw.widgets.CategorySelector
* @uses mw.Api
- * @extends OO.ui.CapsuleMultiSelectWidget
+ * @extends OO.ui.CapsuleMultiselectWidget
* @mixins OO.ui.mixin.PendingElement
*
* @constructor
/* 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 ) );