Usuario:88 csq/Gadget-reversion.js
Apariencia
Nota: Después de guardar, debes refrescar la caché de tu navegador para ver los cambios. Internet Explorer: mantén presionada Ctrl mientras pulsas Actualizar. Firefox: mientras presionas Mayús pulsas el botón Actualizar, (o presiona Ctrl-Shift-R). Los usuarios de Google Chrome y Safari pueden simplemente pulsar el botón Recargar. Para más detalles e instrucciones acerca de otros exploradores, véase Ayuda:Cómo limpiar la caché.
/*** Restaurador ***/
// Restaurar fácilmente una versión anterior de una página
// Por [[es:w:Usuario:88 csq]]
$(function() {
if (mw.config.get('wgAction') != 'history') return;
window.restauradorResumen = window.restauradorResumen ||
'Restaurada revisión $ID por [[Special:Contributions/$USER|$USER]] ([[es:w:Usuario:88 csq/Restaurador|Restaurador]])';
function restaurar(revid) {
var api = new mw.Api();
return api.get({
action: 'query',
revids: revid,
prop: 'revisions',
rvprop: 'user',
format: 'json',
formatversion: '2'
}).then(function(res) {
var user = res.query.pages[0].revisions[0].user;
return api.postWithEditToken({
action: 'edit',
pageid: mw.config.get('wgArticleId'),
undo: mw.config.get('wgCurRevisionId'),
undoafter: revid,
summary: window.restauradorResumen.replace(/\$ID/g, revid).replace(/\$USER/g, user)
});
}).then(
function() {
mw.notify('Revisión restaurada exitosamente.');
location.reload();
},
function(_, data) {
mw.notify(api.getErrorMessage(data), {type: 'error'});
}
);
}
function agregarEnlace(item) {
var revid = item.getAttribute('data-mw-revid');
if (revid == mw.config.get('wgCurRevisionId')) return;
var links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
var parent = links.parentNode;
var link = document.createElement('a');
link.textContent = 'Restaurar';
link.href = '#';
link.onclick = function() {
restaurar(revid);
return false;
};
parent.appendChild(document.createTextNode(' | '));
parent.appendChild(link);
}
$('.mw-changeslist').on('DOMNodeInserted', function(e) {
if ($(e.target).is('.mw-changeslist > li')) {
agregarEnlace(e.target);
}
});
$('.mw-changeslist > li').each(function() {
agregarEnlace(this);
});
});