MediaWiki:Gadget-MonobookToolbarDiacritiques.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) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
if ( [ 'edit', 'submit' ].includes( mw.config.get( 'wgAction' ) ) ) {
	mw.loader.using( [ 'ext.gadget.MonobookToolbar', 'jquery.textSelection' ], function () {

		var letters = [
			[ 'A', 'Á', 'À', 'Â', 'Ä', 'Ã', 'Å', 'Ā', 'Ă' ],
			[ 'a', 'á', 'à', 'â', 'ä', 'ã', 'å', 'ā', 'ă' ],
			[ 'C', 'Ć', '' , 'Ĉ', '' , '' , '' , '' , ''  ],
			[ 'c', 'ć', '' , 'ĉ', '' , '' , '' , '' , ''  ],
			[ 'E', 'É', 'È', 'Ê', 'Ë', '' , '' , 'Ē', 'Ĕ' ],
			[ 'e', 'é', 'è', 'ê', 'ë', '' , '' , 'ē', 'ĕ' ],
			[ 'G', '' , '' , 'Ĝ', '' , '' , '' , '' , 'Ğ' ],
			[ 'g', '' , '' , 'ĝ', '' , '' , '' , '' , 'ğ' ],
			[ 'H', '' , '' , 'Ĥ', '' , '' , '' , '' , ''  ],
			[ 'h', '' , '' , 'ĥ', '' , '' , '' , '' , ''  ],
			[ 'I', 'Í', 'Ì', 'Î', 'Ï', '' , '' , 'Ī', 'Ĭ' ],
			[ 'i', 'í', 'ì', 'î', 'ï', '' , '' , 'ī', 'ĭ' ],
			[ 'J', '' , '' , 'Ĵ', '' , '' , '' , '' , ''  ],
			[ 'j', '' , '' , 'ĵ', '' , '' , '' , '' , ''  ],
			[ 'N', '' , '' , '' , '' , 'Ñ', '' , '' , ''  ],
			[ 'n', '' , '' , '' , '' , 'ñ', '' , '' , ''  ],
			[ 'O', 'Ó', 'Ò', 'Ô', 'Ö', 'Õ', '' , 'Ō', 'Ŏ' ],
			[ 'o', 'ó', 'ò', 'ô', 'ö', 'õ', '' , 'ō', 'ŏ' ],
			[ 'S', 'Ś', '' , 'Ŝ', '' , '' , '' , '' , ''  ],
			[ 's', 'ś', '' , 'ŝ', '' , '' , '' , '' , ''  ],
			[ 'U', 'Ú', 'Ù', 'Û', 'Ü', '' , '' , 'Ū', 'Ŭ' ],
			[ 'u', 'ú', 'ù', 'û', 'ü', '' , '' , 'ū', 'ŭ' ],
			[ 'Y', 'Ý', '' , '' , 'Ÿ', '' , '' , 'Ȳ', ''  ],
			[ 'y', 'ý', '' , '' , 'ÿ', '' , '' , 'ȳ', ''  ],
			[ 'Ø', 'Ǿ', '' , '' , '' , '' , '' , '' , ''  ],
			[ 'ø', 'ǿ', '' , '' , '' , '' , '' , '' , ''  ],
		];

		var buttons = [
			{ src: '//upload.wikimedia.org/wikipedia/commons/4/41/Button_diacritique_0.png', title: 'Supprimer les diacritiques', id: 'mw-editbutton-NoDiacritique'     , type: 0 },
			{ src: '//upload.wikimedia.org/wikipedia/commons/2/2b/Button_diacritique_1.png', title: 'Accent aigu'               , id: 'mw-editbutton-Accent_aigu'       , type: 1 },
			{ src: '//upload.wikimedia.org/wikipedia/commons/e/ec/Button_diacritique_2.png', title: 'Accent grave'              , id: 'mw-editbutton-Accent_grave'      , type: 2 },
			{ src: '//upload.wikimedia.org/wikipedia/commons/b/be/Button_diacritique_3.png', title: 'Accent circonflexe'        , id: 'mw-editbutton-Accent_circonflexe', type: 3 },
			{ src: '//upload.wikimedia.org/wikipedia/commons/1/1d/Button_diacritique_4.png', title: 'Tréma'                     , id: 'mw-editbutton-Trema'             , type: 4 },
			{ src: '//upload.wikimedia.org/wikipedia/commons/2/2c/Button_diacritique_5.png', title: 'Tilde'                     , id: 'mw-editbutton-Tilde'             , type: 5 },
			{ src: '//upload.wikimedia.org/wikipedia/commons/6/66/Button_diacritique_6.png', title: 'Rond en chef'              , id: 'mw-editbutton-Rond_en_chef'      , type: 6 },
			{ src: '//upload.wikimedia.org/wikipedia/commons/a/a3/Button_diacritique_7.png', title: 'Macron'                    , id: 'mw-editbutton-Macron'            , type: 7 },
			{ src: '//upload.wikimedia.org/wikipedia/commons/7/7a/Button_diacritique_8.png', title: 'Caron'                     , id: 'mw-editbutton-Caron'             , type: 8 },
		];

		function convertText( text, type ) {
			if ( !text ) return '';
			for ( var a = 0, l = letters.length; a < l; ++a ) {
				var group = letters[ a ];
				for ( var b = 0, m = group.length; b < m; ++b ) {
					if ( b !== type && group[ b ] && group[ type ] ) {
						text = text.split( group[ b ] ).join( group[ type ] );
					}
				}
			}
			return text;
		}

		function convertSelection( type ) {
			var $textbox = $( MonobookToolbar.getCurrentFocused() );
			var selText = $textbox.textSelection( 'getSelection' );
			selText = convertText( selText, type );
			$textbox.textSelection( 'replaceSelection', selText );
			$textbox.focus();
		}

		buttons.forEach( function ( button ) {
			MonobookToolbar.addButton( {
				imageFile: button.src,
				speedTip: button.title,
				imageId: button.id,
				callback: function () {
					convertSelection( button.type );
				}
			} );
		} );

	} );
}