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>