MediaWiki:Gadget-MassReview.js
Nota: Depois de publicar, poderá ter de contornar a cache do seu navegador para ver as alterações.
- Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
- Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
- Internet Explorer / Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5
- Opera: Pressione Ctrl-F5.
/* Script para verificar em massa as páginas editadas pela última vez por admins */
var done, max,
admins = [
'Dante Cardoso Pinto de Almeida',
'He7d3r',
'Jorge Morais',
'Lightningspirit',
'MGFE Júnior',
'Marcos Antônio Nunes de Moura',
'Raylton P. Sousa'
];
function review( id, level, comment ){
var data = {
'format': 'json',
'action': 'review',
'revid': id,
'token': mw.user.tokens.get( 'csrfToken' ),
'comment': comment,
//'unapprove': '',
'flag_accuracy': (level || 1)
};
console.debug( 'A revisão cujo id é ' + id + ' será verificada (com o nível ' + level + ' e o sumário "'+ comment +'"' );
$.ajax({
url: mw.util.wikiScript( 'api' ),
type: 'POST',
dataType: 'json',
data: data,
success: function( data ) {
if ( !data ) {
alert( 'Erro: a API não retornou dados.' );
} else if ( 'error' in data ) {
alert( 'Erro da API: ' + data.error.code + '. ' + data.error.info );
} else if ( 'review' in data && data.review.result == 'Success' ) {
console.debug('A página foi revisada!');
} else {
console.debug('Aconteceu algo inesperado ao revisar a página...');
}
},
error: function() {
alert( 'Houve uma falha ao usar ajax para tentar marcar a página como revisada.' );
}
});
}
function processUnreviewedPages( from ){
var data = {
'format': 'json',
'action': 'query',
'generator': 'unreviewedpages',
'urnamespace': 0,
'gurlimit': 100,
'prop': 'revisions',
'rvprop': 'ids|user|flags',
'indexpageids': true
};
if ( from ){
data.gurstart = from;
}
$.ajax({
url: mw.util.wikiScript( 'api' ),
dataType: 'json',
data: data,
success: function( data ) {
var cont;
if ( !data ) {
alert( 'Erro: a API não retornou dados.' );
} else if ( 'error' in data ) {
alert( 'Erro da API: ' + data.error.code + '. ' + data.error.info );
} else if ( data.query && data.query.pageids && data.query.pages) {
$.each( data.query.pageids, function(pos, id){
var page = data.query.pages[id],
title = page.title,
lastEditor = page.revisions[0].user;
if( $.inArray( lastEditor, admins ) != -1 && done < max ){
console.debug( 'O script tentará verificar a revisão da página "' + title + '"cujo id é ' + id + ', pois foi editada por: '+ lastEditor +'' );
done++;
review(
page.revisions[0].revid,
1 /* = level */,
'Página verificada por um script, pois o último a editá-la é um admininstrador (' + lastEditor + ')'
);
mw.notify(
'A última edição da página "' +
page.title +
'" foi feita por um administrador (' +
lastEditor +
').'
);
}
});
cont = data[ 'query-continue' ] &&
data[ 'query-continue' ].unreviewedpages &&
data[ 'query-continue' ].unreviewedpages.gurstart;
if( cont && done < max ){
processUnreviewedPages( cont );
} else {
mw.notify( 'Concluída a verificação em massa de páginas não revisadas. Foram processadas ' + done + ' páginas cuja última revisão foi feita por um administrador.' );
}
} else {
alert( 'Houve um erro desconhecido ao consultar a lista de páginas não revisadas.' );
}
},
error: function() {
alert( 'Houve uma falha ao usar ajax para consultar a lista de páginas não revisadas.' );
}
});
}
$(function(){
$(mw.util.addPortletLink(
'p-cactions',
'#',
'Processar páginas não revisadas',
'ca-unreviewedpages',
'Consulta a lista de páginas que ainda não foram avaliadas, [[Especial:Páginas a analisar]]'
)).click( function( e ) {
done = 0;
max = prompt('Quantas das páginas cuja última edição foi feita por um administrador deseja que o script verifique automáticamente?\n\n(escolha quantidades bem pequenas, pois o script ainda é experimental. Após a revisão, confira os logs para ver se tudo saiu conforme o esperado. Se notar algum bug, feche o navegador e informe o problema ;-)', 2);
if (!max) {
return;
}
e.preventDefault();
processUnreviewedPages();
});
});
// [[Categoria:Gadgets|MassReview.js]]
// [[Categoria:Scripts do Wikilivros|MassReview.js]]