Aller au contenu

MediaWiki:Gadget-RevertDiff.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * Outils pour réverter
 *
 * fournit des liens dans les pages de diff pour révoquer facilement une modification et avertir son auteur
 *
 * Auteurs : Lorian (en), Chphe (fr)
 * Dernière révision : 28 octobre 2018
 * {{Projet:JavaScript/Script|RevertDiff}}
 */
//<nowiki>

mw.loader.using('mediawiki.util', function () {
    $(function ($) {

        var Texts = {
            Annul        : 'Annuler',
            Revert       : 'Révoquer',
            Message      : 'Message',
            Warn         : 'Avertir',
            MessageAlert : 'Quel message faut-il laisser ?',
            AnnulResume  : 'Annulation des modifications de [[Special:Contributions/$2|$2]] (retour à la version précédente de [[Special:Contributions/$1|$1]])',
            RevertResume : 'Révocation des modifications de [[Special:Contributions/$2|$2]] (retour à la version précédente de [[Special:Contributions/$1|$1]])',
        };

        var Warns = [
            {text: 'Test1',        template: '{{subst:Test 1|$page}} ~~~~'},
            {text: 'Test2',        template: '{{subst:Test 2}} ~~~~'},
            {text: 'Test3',        template: '{{subst:Test 3}} ~~~~'},
            {text: 'Test4',        template: '{{subst:Seul avertissement}} ~~~~'},
            {text: 'Lien externe', template: '{{subst:Bienvenue spammeur|$page}} ~~~~'},
            {text: 'Faut sourcer', template: '{{subst:Faut sourcer|$page}} ~~~~'},
            {text: 'Bienvenue',    template: '{{Bienvenue nouveau|sign=~~~~}}'},
            {text: 'BienvenueIP',  template: '{{subst:Bienvenue IP}} ~~~~'},
            {text: 'MerciIP',      template: '{{Bienvenue IP méritante|sign=~~~~}}'},
        ];

        function isDiffPage() {
            return !!mw.config.get('wgDiffNewId');
        }

        function processAnnulOrRevert(oldid, action, user1, user2, withMessage) {
            var params = {
                action: 'edit',
                oldid: oldid,
                revertdiff_action: action,
                revertdiff_user1: user1,
                revertdiff_user2: user2,
            };
            if (withMessage) {
                var message = prompt(Texts.MessageAlert);
                if (message) {
                    params.revertdiff_message = message;
                } else {
                    return;
                }
            }
            window.location = mw.util.getUrl(null, params);
        }

        function submitOldRevision(summaryTemplate) {
            var summary = summaryTemplate
                .split('$1').join(mw.util.getParamValue('revertdiff_user1'))
                .split('$2').join(mw.util.getParamValue('revertdiff_user2'));
            var message = mw.util.getParamValue('revertdiff_message');
            if (message) {
                summary += '\xA0: ' + message;
            }
            var summaryEl = document.getElementById('wpSummary');
            // only possible if using standard editor
            if(summaryEl) {
            	summaryEl.value = summary;
            }
            var editform = document.getElementById('editform');

            if(editform)editform.submit();
        }

        if (isDiffPage()) {
            // Get username of submitter
            var $user1TD = $('td.diff-otitle');
            var $user2TD = $('td.diff-ntitle');
            if (!$user1TD.length || !$user2TD.length) return;

            // Récupération du oldid de la version à rétablir
            var chemin = $user1TD.find('span.mw-diff-edit a').attr('href');
            var oldid = mw.util.getParamValue('oldid', chemin);

            var user1 = $user1TD.find('a.mw-userlink').text();
            var user2 = $user2TD.find('a.mw-userlink').text();

            var $linkAnnulDirect = $('<a>')
                .attr('href', '#')
                .text(Texts.Annul)
                .click(function (e) {
                    e.preventDefault();
                    processAnnulOrRevert(oldid, 'annul', user1, user2, false);
                });

            var $linkAnnulMessage = $('<a>')
                .attr('href', '#')
                .text(Texts.Message)
                .click(function (e) {
                    e.preventDefault();
                    processAnnulOrRevert(oldid, 'annul', user1, user2, true);
                });

            var $linkRevertDirect = $('<a>')
                .attr('href', '#')
                .text(Texts.Revert)
                .click(function (e) {
                    e.preventDefault();
                    processAnnulOrRevert(oldid, 'revert', user1, user2, false);
                });

            var $linkRevertMessage = $('<a>')
                .attr('href', '#')
                .text(Texts.Message)
                .click(function (e) {
                    e.preventDefault();
                    processAnnulOrRevert(oldid, 'revert', user1, user2, true);
                });

            var $links = $('<span>');

            $links.append('(', $linkAnnulDirect, ' / ', $linkAnnulMessage, ') (', $linkRevertDirect, ' / ', $linkRevertMessage, ')');

            $links.append(' (' + Texts.Warn + ' : ');

            Warns.forEach(function (Warn, index) {
                if (index !== 0) {
                    $links.append(' / ');
                }

                var href = mw.util.getUrl('User_talk:' + user2, {
                    action: 'edit',
                    section: 'new',
                    revertdiff_action: 'warn',
                    revertdiff_warn: index,
                    revertdiff_src: mw.config.get('wgPageName'),
                });

                var $linkWarn = $('<a>')
                    .attr('href', href)
                    .attr('title', Warn.template)
                    .text(Warn.text);

                $links.append($linkWarn);
            });

            $links.append(')');

            if (!document.getElementById('contentSub')) {
                $('<div id="contentSub"></div>').insertBefore('#mw-content-text');
            }
            $('#contentSub').append($links);

        } else {
            var action = mw.util.getParamValue('revertdiff_action');
            if (action) {
                if (action === 'annul') {
                    submitOldRevision(Texts.AnnulResume);

                } else if (action === 'revert') {
                    submitOldRevision(Texts.RevertResume);

                } else if (action === 'warn') {
                    var warnIndex = mw.util.getParamValue('revertdiff_warn');

                    if (warnIndex && Warns[warnIndex]) {
                        var Template = Warns[warnIndex].template;
                        Template = Template.split('$page').join(mw.util.getParamValue('revertdiff_src').replace(/_/g, ' '));
                        Template = Template.split('$user').join(mw.config.get('wgUserName'));

                        var tb = document.getElementById('wpTextbox1');

                        var editform = document.getElementById('editform');
                        if(tb)tb.value = Template;
                        if(editform) editform.submit();
                    }
                }
            }
        }

    });
});

//</nowiki>
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy