MediaWiki:Gadget-MobileCategories.js

mw.hook( 'wikipage.content' ).add( function() {

var api = new mw.Api();

var apiRequest = api.get( {

'action':'query',

'titles': mw.config.get('wgPageName'),

'prop': 'categories',

'clprop': 'sortkey|hidden',

'cllimit': 50,

'indexpageids': true,

'formatversion': 2

} );

var apiRequest2 = api.loadMessagesIfMissing( [ 'pagecategories', 'colon-separator' ] );

$.when( apiRequest, apiRequest2 ).done( function( data ) {

var categories = [],

response1Data = data[0],

response2Data = data[1];

if( !response1Data.query.pages[0].categories ) {

return;

}

function categoryHtmlGenerator(element, index, array) {

if( element.hidden ) {

return;

}

var title = new mw.Title( element.title, mw.config.get( 'wgNamespaceIds' ).file );

categories.push(

$( '' ).attr( {

'href': mw.util.getUrl( element.title )

} ).append(

document.createTextNode( title.getMainText() )

).get( 0 )

);

categories.push( ', ' );

}

response1Data.query.pages[0].categories.forEach( categoryHtmlGenerator );

if( categories.length === 0 ) {

return;

}

categories.pop(); //remove the last comma

categories.unshift( document.createTextNode(

mw.message( 'pagecategories' ).escaped() + mw.message( 'colon-separator' ).escaped() + ' '

) );

$('.printfooter')

.after( $( '

' )

.addClass( 'catlinks' )

.attr( 'id', 'catlinks' )

.data( 'mw', 'interface' )

.append( $( '

' )

.attr( 'id', 'mw-normal-catlink' )

.append( categories )

)

);

} );

} );