_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

Utilisateur:Alexisdepris/Mes scripts/DiffIndicator.js

Dans le monde d'aujourd'hui, Utilisateur:Alexisdepris/Mes scripts/DiffIndicator.js est un sujet d'une grande pertinence et d'un grand intérêt pour un large éventail de personnes. En savoir plus sur Utilisateur:Alexisdepris/Mes scripts/DiffIndicator.js nous permet de mieux comprendre le monde qui nous entoure et les différentes perspectives qui existent. Que ce soit à travers l'histoire, la science, la culture ou l'actualité, Utilisateur:Alexisdepris/Mes scripts/DiffIndicator.js est devenu un point central de discussion et de réflexion. Dans cet article, nous explorerons différents aspects de Utilisateur:Alexisdepris/Mes scripts/DiffIndicator.js, de ses origines à son impact sur la société moderne, dans le but de fournir une vision complète et enrichissante de ce sujet important.
mw.loader.using(, function () {
    $(document).ready(function () {
        if (mw.config.get('wgAction') === 'view' && mw.util.getParamValue('diff')) {
            var diffId = mw.util.getParamValue('diff');
            var oldId = mw.util.getParamValue('oldid');
            var newId = mw.config.get('wgRevisionId');

            // Fonction pour extraire l'oldid à partir du lien "Version du XXXX"
            function getOldIdFromLink() {
                var oldIdLink = $('#mw-diff-ntitle1 a').attr('href');
                if (oldIdLink) {
                    var oldIdMatch = oldIdLink.match(/oldid=(\d+)/);
                    if (oldIdMatch) {
                        return oldIdMatch;
                    }
                }
                return null;
            }

            // Fonction pour afficher les informations des versions
            function displayVersionIds(oldId, newId) {
                var oldIdInfo = $('<div>').css({
                    'background-color': '#FFE49C',
                    'border': '1px solid #d1d1d1',
                    'padding': '10px',
                    'margin-bottom': '15px',
                    'border-radius': '5px',
                    'box-shadow': '0 2px 4px rgba(0, 0, 0, 0.1)',
                    'cursor': 'pointer'
                }).text('ID de l\'ancienne version : ' + oldId).click(function() {
                    // Copier dans le presse-papiers
                    copyToClipboard(oldId);
                });

                var newIdInfo = $('<div>').css({
                    'background-color': '#A3D3FF',
                    'border': '1px solid #d1d1d1',
                    'padding': '10px',
                    'margin-bottom': '15px',
                    'border-radius': '5px',
                    'box-shadow': '0 2px 4px rgba(0, 0, 0, 0.1)',
                    'cursor': 'pointer'
                }).text('ID de la nouvelle version : ' + newId).click(function() {
                    // Copier dans le presse-papiers
                    copyToClipboard(newId);
                });

                $('#mw-diff-otitle1').before(oldIdInfo);
                $('#mw-diff-ntitle1').before(newIdInfo);
            }

            // Fonction pour afficher une boîte de dialogue d'easter egg
            function showEasterEgg() {
                var dialog = new OO.ui.MessageDialog();
                var windowManager = new OO.ui.WindowManager();
                $(document.body).append(windowManager.$element);
                windowManager.addWindows();
                windowManager.openWindow(dialog, {
                    title: 'Easter Egg 🎉',
                    message: 'Félicitations, vous avez trouvé l\'easter egg !',
                    actions: [
                        { action: 'accept', label: 'Merci!', flags: 'primary' }
                    ]
                });
            }

            // Fonction pour copier dans le presse-papiers et afficher une notification
            function copyToClipboard(text) {
                var tempInput = $('<input>');
                $('body').append(tempInput);
                tempInput.val(text).select();
                document.execCommand('copy');
                tempInput.remove();
                showCopyNotification();
            }

            // Fonction pour afficher une notification de copie
            function showCopyNotification() {
                mw.notify('L\'ID a été copié dans le presse-papiers.', {
                    autoHide: true,
                    tag: 'clipboard-copy',
                    classes: 'clipboard-notify'
                });
            }

            // Ajout d'un bouton caché pour l'easter egg
            var easterEggButton = $('<button>').css({
                'position': 'fixed',
                'bottom': '10px',
                'right': '10px',
                'padding': '5px',
                'background-color': '#000000',
                'border': 'none',
                'border-radius': '50%',
                'color': '#ffffff',
                'cursor': 'pointer',
                'opacity': '0.2',
                'font-size': '10px'
            }).text('?').click(function() {
                showEasterEgg();
            });

            $('body').append(easterEggButton);

            // Si oldId est null, essayer de l'extraire du lien "Version du XXXX"
            if (!oldId) {
                oldId = getOldIdFromLink();
            }

            // Si diffId est 'prev', obtenir l'ID de la version précédente via l'API
            if (diffId === 'prev') {
                mw.notify('Récupération des informations de révision...', { autoHide: true });
                new mw.Api().get({
                    action: 'query',
                    prop: 'revisions',
                    titles: mw.config.get('wgPageName'),
                    rvlimit: 2,
                    rvprop: 'ids|timestamp',
                    rvdir: 'older',
                    rvstartid: newId
                }).done(function (data) {
                    var pages = data.query.pages;
                    var pageId = Object.keys(pages);
                    var revisions = pages.revisions;
                    if (revisions && revisions.length === 2) {
                        oldId = revisions.revid;
                        diffId = newId;  // Le diffId est le même que la nouvelle révision dans ce cas
                    }
                    displayVersionIds(oldId, newId);
                    mw.notify('Informations de révision récupérées avec succès.', { type: 'success' });
                }).fail(function () {
                    mw.notify('Erreur lors de la récupération des informations de révision.', { type: 'error' });
                });
            } else {
                displayVersionIds(oldId, newId);
            }
        }
    });
});

// Ajouter des styles pour la notification violette
mw.util.addCSS('\
    .mw-notification-container .clipboard-notify {\
        background-color: #800080;\
        color: white;\
    }\
');