Usuario:88 csq/Gadget-reversion.js

De Wikipedia, la enciclopedia libre

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);
    });
});