Saltar para o conteúdo

Ajuda:Página de testes/1

Origem: Wikipédia, a enciclopédia livre.

Lista de usuários ativos, com permissão de sysop, bureaucrat, eliminator e rollbacker, cujos scripts common.js, vector.js ou monobook.js mencionam páginas apagadas

Script

var api = new mw.Api(),
	deletedPages = [
		'WP:Software/Scripts/ArtigosParaEliminar.js',
		'WP:Software/Scripts/Botõesextrasdeedição.js',
		'WP:Software/Scripts/FastButtons.js',
		'WP:Software/Scripts/HotCat.js',
		'WP:Software/Scripts/Pesquisa por domínio.js',
		'WP:Software/Scripts/Redirecionamentos.js',
		'WP:Software/Scripts/Reversão e avisos.js',
		'WP:Software/Scripts/Traductor-Google.js',
		'WP:Software/Scripts/Tradução dos interwikis.js',
		'WP:Software/Scripts/Twinkle/morebits.js',
		'WP:Software/Scripts/Twinkle/salt.js',
		'WP:Software/Scripts/Twinkle/twinkle.js',
		'WP:Software/Scripts/Twinkle/twinklearv.js',
		'WP:Software/Scripts/Twinkle/twinklediff.js',
		'WP:Software/Scripts/Twinkle/twinklefluff.js',
		'WP:Software/Scripts/Twinkle/twinkleprod.js',
		'WP:Software/Scripts/Twinkle/twinklespeedy.js',
		'WP:Software/Scripts/Twinkle/twinklewarn.js',
		'WP:Software/Scripts/refToolbar.js',
		'WP:Software/Scripts/wikEd.js',
		'WP:Scripts/ArtigosParaEliminar.js',
		'WP:Scripts/Botõesextrasdeedição.js',
		'WP:Scripts/FastButtons.js',
		'WP:Scripts/HotCat.js',
		'WP:Scripts/Pesquisa por domínio.js',
		'WP:Scripts/Redirecionamentos.js',
		'WP:Scripts/Reversão e avisos.js',
		'WP:Scripts/Traductor-Google.js',
		'WP:Scripts/Tradução dos interwikis.js',
		'WP:Scripts/refToolbar.js',
		'WP:Scripts/wikEd.js'
	];
function showResults( outdatedPages ){
	$('<pre></pre>').append(
		$.map( outdatedPages, function( problems, title ){
			return '* [[' + title + '|]]: ' + problems.join( ', ' );
		} ).join( '\n' )
	).appendTo( '#mw-content-text' );
}

function checkJsPages( pages ){
	var reOldCode, i, j,
		outdated = {};
	for( i = 0; i < pages.length; i++ ){
		for( j = 0; j < deletedPages.length; j++ ){
			reOldCode = new RegExp(
				deletedPages[j]
					.replace( /^(?:WP|Wikip[eé]dia):/, '(?:WP|Wikip[eé]dia):' )
					.replace( /[_ ]/g, '[_ ]' )
			);
			if( reOldCode.test( pages[i].revisions[0]['*'] ) ){
				if( outdated[ pages[i].title ] ){
					outdated[ pages[i].title ].push( '[[' + deletedPages[j] + '|]]' );
				} else {
					outdated[ pages[i].title ] = [ '[[' + deletedPages[j] + '|]]' ];
				}
			}
		}
	}
	showResults( outdated );
}
function getJsPages( userList ){
	var titles = $.map( userList, function( user ){
			return 'Usuário:' +
				user + '/common.js|Usuário:' +
				user + '/vector.js|Usuário:' +
				user + '/monobook.js';
		} ),
		pages = [],
		getJsContent = function( pos ){
			pos = pos || 0;
			api.get( {
				prop: 'revisions',
				rvprop: 'content',
				titles: titles.slice( pos, pos + 50 ).join( '|' )
			} )
			.done( function ( data ) {
				$.merge( pages,
					$.map( data.query.pages, function( page, pageid ){
						if( pageid > 0 ) {
							return page;
						}
					} )
				);
				if( pos + 50 < titles.length ){
					getJsContent( pos + 50 );
				} else {
					checkJsPages( pages );
				}
			} )
			.fail( function ( data ) {
				console.log( 'Erro:', arguments );
			} );
		};
	getJsContent();
}

function getUserList(){
	api.get( {
		list: 'allusers',
		augroup: 'sysop|bureaucrat|eliminator|rollbacker',
		aulimit: 500,
		auactiveusers: true,
	} )
	.done( function ( data ) {
		getJsPages(
			$.map( data.query.allusers, function( user ){
				return user.name;
			} )
		);
	} )
	.fail( function ( data ) {
		console.log( 'Erro:', arguments );
	} );
}

$( getUserList );