Utilisateur:Laurent04000/revertdiffs.js
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./*
* RevertDiffS
* Fournit des liens dans les diffs pour révoquer rapidement
* Auteurs originaux : Lorian (en), Chphe (fr)
* Version simplifiée : sans avertissements ni messages
* Auteur : Google Gemini pour Laurent04000
* {{Catégorisation JS|RevertDiffS}}
*/
//<nowiki>
function isDiffPage() {
return !!mw.config.get( 'wgDiffNewId' );
}
if ( isDiffPage() ) {
mw.loader.using( [ 'mediawiki.api' ], function () {
$( function ( $ ) {
const api = new mw.Api( { userAgent: 'Laurent04000-RevertDiffS/1.0 (https://fr.wikipedia.org/wiki/Utilisateur:Laurent04000/revertdiffs.js)' } );
const Texts = {
Annul : 'Annuler',
Revert : 'Révoquer',
AnnulResume : 'Annulation de la modification 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]])',
};
function createLink( label, onClick, title ) {
const a = document.createElement( 'a' );
a.href = '#';
a.textContent = label;
if ( title ) a.title = title;
a.addEventListener( 'click', function ( e ) {
e.preventDefault();
onClick( e );
});
return a;
}
// Récupération des noms d'utilisateurs
const user1Sel = document.querySelector( 'td.diff-otitle a.mw-userlink bdi' );
const user2Sel = document.querySelector( 'td.diff-ntitle a.mw-userlink bdi' );
if ( !user1Sel || !user2Sel ) return;
const user1 = user1Sel.textContent;
const user2 = user2Sel.textContent;
function processAnnulOrRevert( action ) {
let summary;
if ( action === 'annul' ) {
summary = Texts.AnnulResume;
} else if ( action === 'revert' ) {
summary = Texts.RevertResume;
}
summary = summary.replace( /\$1/g, user1 ).replace( /\$2/g, user2 );
api.postWithEditToken({
title: mw.config.get( 'wgPageName' ),
action: 'edit',
undoafter: mw.config.get( 'wgDiffOldId' ),
undo: action === 'revert' ? mw.config.get( 'wgCurRevisionId' ) : mw.config.get( 'wgDiffNewId' ),
summary: summary
}).then( () => mw.notify( 'Modification annulée.', { type: 'success' } ) );
}
const linkAnnul = createLink( Texts.Annul, () => processAnnulOrRevert( 'annul' ) );
const linkRevert = createLink( Texts.Revert, () => processAnnulOrRevert( 'revert' ) );
const links = document.createElement( 'span' );
// Affichage : (Annuler) (Révoquer)
links.append( '(', linkAnnul, ') (', linkRevert, ')' );
let contentSub = document.getElementById( 'contentSub' );
if ( !contentSub ) {
contentSub = document.createElement( 'div' );
contentSub.id = 'contentSub';
document.getElementById( 'mw-content-text' ).before( contentSub );
}
contentSub.append( links );
});
});
}
//</nowiki>