Usuario:User unavailable826/common.js

De Wikilibros, la colección de libros de texto de contenido libre.

Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.

  • Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
  • Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
  • Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
  • Opera: Presiona Ctrl+F5.
/*
 * @name:               Rollback
 * @description:        Perform rollbacks without needing to be in the usergroup
 * @author:             Ozank Cx <dev.wikia.com/wiki/User:Ozank_Cx>
 *                      Cleanup/+i18n by Count of Howard <dev.wikia.com/wiki/User:Count_of_Howard>
 */
 
(function() {
    if ($('.mw-rollback-link').length) {
        return;
    }
 
    var config = mw.config.get([
        'wgAction',
        'wgPageName',
        'wgUserLanguage',
        'wgCanonicalSpecialPageName'
    ]),
    i18n = {
        'en': {
            title: 'Rollback reverts edit(s) to this page of the last contributor in one click',
            failGeneral: 'Unable to rollback',
            failRevisions: 'Failed to get revisions',
            failContent: 'Failed to get page content',
            failEditor: 'No different editor found',
            failPublish: 'Failed to publish edit',
            success: 'Rollback successful',
            rollback: 'rollback',
            summary1: 'Reverted edits by',
            summary2: 'to last version by',
            script: 'script',
            talk: 'talk',
            block: 'block'
        },
'kn': {
            title: 'ಒಂದು ಕ್ಲಿಕ್ನಲ್ಲಿ ಕೊನೆಯ ಕೊಡುಗೆದಾರರ ಈ ಪುಟಕ್ಕೆ ರೋಲ್ಬ್ಯಾಕ್ ಸಂಪಾದನೆ (ಗಳು) ಹಿಂದಿರುಗಿಸುತ್ತದೆ',
            failGeneral: 'ರೋಲ್ಬ್ಯಾಕ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ',
            failRevisions: 'ಪರಿಷ್ಕರಣೆಗಳನ್ನು ಪಡೆಯುವಲ್ಲಿ ವಿಫಲವಾಗಿದೆ',
            failContent: 'ಪುಟ ವಿಷಯ ಪಡೆಯಲು ವಿಫಲವಾಗಿದೆ',
            failEditor: 'ಬೇರೆ ಬೇರೆ ಸಂಪಾದಕರೂ ಕಂಡುಬಂದಿಲ್ಲ',
            failPublish: 'ಸಂಪಾದನೆ ಪ್ರಕಟಿಸಲು ವಿಫಲವಾಗಿದೆ',
            success: 'ರೋಲ್ಬ್ಯಾಕ್ ಯಶಸ್ವಿ',
            rollback: 'ರೋಲ್ಬ್ಯಾಕ್',
            summary1: 'ಹಿಂದಿರುಗಿಸಿದ ಸಂಪಾದನೆಗಳು',
            summary2: 'ಕೊನೆಯ ಆವೃತ್ತಿಗೆ',
            script: 'ಸ್ಕ್ರಿಪ್ಟ್',
            talk: 'ಚರ್ಚೆ',
            block: 'ಬ್ಲಾಕ್'
        },       
    },
    lang = i18n[config.wgUserLanguage] || i18n[config.wgUserLanguage.split('-')[0]] || i18n.en;
 
    function init() {
        var rollbackLinkParams = {
            style: 'cursor: pointer',
            title: lang.title
        };
 
        if (
            config.wgAction === 'history' &&
            $('#pagehistory li').length > 1
        ) {
            rollbackLinkParams['data-id'] = config.wgPageName;
            $('#pagehistory li:first .mw-history-undo a').before(
                $('<span/>', {
                    class: 'mw-custom-rollback-link'
                }).html(
                    buildElement('a', lang.rollback, rollbackLinkParams) + ' | '
                )
            );
        } else if (
            config.wgCanonicalSpecialPageName === 'Contributions'
        ) {
            rollbackLinkParams['data-id'] = $('#mw-content-text ul').find('a:first').attr('title');
            $('#mw-content-text ul').find('li').each(
                function() {
                    if ($(this).find('.mw-uctop').length) {
                        $(this).append(
                            $('<span/>', {
                                class: 'mw-custom-rollback-link'
                            }).html(
                                '[' + buildElement('a', lang.rollback, rollbackLinkParams) + ']'
                            )
                        );
                    }
                }
            );
        } else if (
            $('#differences-nextlink').length === 0 &&
            (
                $.getUrlVar('diff') || 
                $.getUrlVar('oldid')
            )
        ) {
            rollbackLinkParams['data-id'] = config.wgPageName;
            $('.mw-usertoollinks:last').after(
                '&nbsp;&nbsp;&nbsp;&nbsp;<span class="mw-custom-rollback-link">' +
                '[' + buildElement('a', lang.rollback, rollbackLinkParams) + ']</span>'
            );
        }
 
        $('.mw-custom-rollback-link a').click(
            function() {
                getRevisionIdAndContent($(this).attr('data-id'), handleData);
                $(this).parent().remove();
            }
        );
    }
 
    function buildElement(tag, html, attrs) {
        if (typeof(html) !== 'string') {
            attrs = html;
            html = null;
        }
 
        var h = '<' + tag;
        for (var attr in attrs) {
            if (attrs[attr] === false) {
                continue;
            }
 
            h += ' ' + attr + '="' + attrs[attr] + '"';
        }
        return h += html ? ">" + html + "</" + tag + ">" : "/>";
    }
 
    function getRevisionIdAndContent(title, callback) {
        new mw.Api().get({
            action: 'query',
            prop: 'revisions',
            titles: title,
            rvprop: 'user|ids',
            rvlimit: 500,
            cb: new Date().getTime()
        }).done(
            function(d) {
                if (!d.error) {
                    callback(title, d);
                } else {
                    new BannerNotification(
                        lang.failGeneral + ' (' + lang.failRevisions + '): ' + d.error.code, 'error'
                    ).show();
                }
            }
        ).fail(
            function() {
                new BannerNotification(
                    lang.failGeneral + ' (' + lang.failRevisions + ')', 'error'
                ).show();
            }
        );
    }
 
    function handleData(title, data) {
        var revisions;
 
        for (var i in data.query.pages) {
            revisions = data.query.pages[i].revisions;
        }
 
        var currentUser = revisions[0].user,
            lastUser,
            revId;
 
        for (var i in revisions) {
            if (revisions[i].user != currentUser) {
                lastUser = revisions[i].user;
                revId = revisions[i].revid;
                break;
            }
        }
 
        if (lastUser) {
            new mw.Api().get({
                action: 'query',
                prop: 'revisions',
                rvprop: 'content',
                revids: revId,
                cb: new Date().getTime()
            }).done(
                function(d) {
                    if (!d.error) {
                        var content = "";
                        for (var i in d.query.pages) {
                            if (d.query.pages[i].revisions) {
                                content = d.query.pages[i].revisions[0]["*"];
                            }
                        }
                        performRollback(title, content, currentUser, lastUser);
                    } else {
                        new BannerNotification(
                            lang.failGeneral + ' (' + lang.failContent + '): ' + d.error.code,'error'
                        ).show();
                    }
                }
            ).fail(
                function() {
                    new BannerNotification(
                        lang.failGeneral + ' (' + lang.failContent + ')','error'
                    ).show();
                }
            );
        } else {
            new BannerNotification(
                lang.failGeneral + ' (' + lang.failEditor + ')','error'
            ).show();
        }
    }
 
    function performRollback(page, text, user, user2) {
        var summary = lang.summary1 + ' [[Special:Contributions/' + user + '|' + user + ']] ([[User_talk:' + user + '|' + lang.talk +
                ']] | [[Special:Block/' + user + '|' + lang.block + ']]) ' + lang.summary2 +
                ' [[User:' + user2 + '|' + user2 + ']] (Rollback|' + lang.script + ')';
 
        if (summary.length > 150) {
            summary = lang.summary1 + ' ' + user + ' (Rollback|' + lang.script + ')';
        }
 
        new mw.Api().post({
            action: 'edit',
            title: page,
            text: text,
            summary: summary,
            token: mw.user.tokens.values.editToken
        }).done(
            function(d) {
                if (!d.error) {
                    new BannerNotification(
                        lang.success + '!', 'confirm'
                    ).show();
                } else {
                    new BannerNotification(
                        lang.failGeneral + ' (' + lang.failPublish + '): ' + d.error.code,'error'
                    ).show();
                }
            }
        ).fail(
            function() {
                new BannerNotification(
                    lang.failGeneral + ' (' + lang.failPublish + ')', 'error'
                ).show();
            }
        );
    }
 
    init();
})();

/*	
if (wgAction == 'view' && wgNamespaceNumber >=0)
	addOnloadHook(function(){
	 var h2s = document.getElementsByTagName('H2');
	 var h2 = h2s[0];
	 if (!h2) return;
	 if (h2.parentNode.id == 'toctitle') h2 = h2s[1];
	 if (!h2) return;
	 var span = h2.firstChild;
	 if (!span || span.className != 'editsection') return;
	 var zero = span.cloneNode(true);
	 if (document.getElementById('featured-star')) zero.style.marginRight = '25px'
	 var parent = document.getElementsByTagName('H1')[0];
	 parent.insertBefore(zero, parent.firstChild);
	 var a = zero.getElementsByTagName('A')[0];
	 a.title = a.title.replace(/:.*$/,': 0');
	 a.setAttribute('href', a.href.replace(/&section=1/,'&section=0'));
	})