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