Usuário:Juan90264/DesabilitarRollback.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)
- Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5.
/*
* DesabilitarRollback.js
*
* Cria um botão no menu "Ferramentas", que permite desabilitar o botão reverter somente de edições
* feitas por usuários Autorrevisores
* Script baseado na sugestão feita na "Lista de desejos tecnológicos da lusofonia",
* em [[meta:Lista de desejos tecnológicos da lusofonia/Propostas/Opção de desabilitar Rollback em edição de editores regulares]]
* @author: [[pt:User:Juan90264]]
*
*/
/// Carregar o CSS do script
mw.loader.load( 'https://pt.wikipedia.org/w/index.php?title=User:Juan90264/DesabilitarRollback.css&action=raw&ctype=text/css', 'text/css' );
/// Carrega o titulo da página
var title = $("h1#firstHeading").text();
var regexTitle = /(?<title>[a-z A-Z0-9á-úÁ-Ú()\[\]:-]*):/gm;
var resultTitle = regexTitle.exec(title);
var resultTitle1 = resultTitle.groups.title;
/// Função para identificar o último usuário que editou
function userRevision(title) {
var params = {
action: 'query',
prop: 'revisions',
formatversion: "2",
titles: title,
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done(function(data){
userAutorreviewer(data.query.pages[0].revisions[0].user);
});
}
function userAutorreviewer(userEdit) {
var params = {
action: "query",
format: "json",
list: "users",
formatversion: "2",
usprop: "groups",
ususers: userEdit
},
api = new mw.Api();
api.post( params ).done(function(r){
var userGroups = r.query.users[0].groups;
/// Verifica também se é administrador, levando em consideração que esse estatuto
/// acaba deixando obsoleto o estatuto de autorrevisor em alguns casos,
/// e não aparecendo nos grupos de usuários do último usuário que editou uma página
var userGroupsConditions = ["autoreviewer", "sysop"];
var resultAutorreviewer = userGroupsConditions.some(r => userGroups.toString().includes(r));
/// Se for verdadeiro que o último usuário que editou
/// for um Autorrevisor, o código permite o botão
if (resultAutorreviewer) {
/// Cria botão para desabilitar
var menu = mw.util.addPortlet( 'p-cactions' );
document.body.appendChild(menu);
var menuButton = mw.util.addPortletLink(
'p-cactions',
'#',
'DesabilitarRollback (' + ( localStorage.getItem( 'desabilitarollbackHidden' ) == 'true' ? 'esconder' : 'exibir' ) + ')',
"ca-desabilitarollback" );
var buttonRollback = "span.mw-rollback-link";
var separatorRollback = "li.before > .mw-changeslist-links.mw-pager-tools";
if (localStorage.getItem( 'desabilitarollbackHidden' ) == 'true') {
$(buttonRollback).removeClass("RollbackNone");
$(separatorRollback).removeClass("RollbackNone");
} else {
$(buttonRollback).addClass("RollbackNone");
$(separatorRollback).addClass("RollbackNone");
}
/// Exibe/esconde o botão "Reverter"
$("#ca-desabilitarollback").click(function(){
if (localStorage.getItem( 'desabilitarollbackHidden' ) == 'true') {
localStorage.setItem( 'desabilitarollbackHidden', false );
$("#ca-desabilitarollback > a" ).text("DesabilitarRollback (exibir)");
$(buttonRollback).addClass("RollbackNone");
$(separatorRollback).addClass("RollbackNone");
} else {
localStorage.setItem( 'desabilitarollbackHidden', true );
$("#ca-desabilitarollback > a" ).text("DesabilitarRollback (esconder)");
$(buttonRollback).removeClass("RollbackNone");
$(separatorRollback).removeClass("RollbackNone");
}
});
} else {
}
});
}
/// Inicia o script
userRevision(resultTitle1);