Utilisateur:Ltrlg/scripts/barres.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.
/* Barres supplémentaires pour l’édition. */

$( function ( $ ) {
	
	var plural = '(s)';
	var emptySummary = /^(?:\/\*.*\*\/ )?$/;
	
	function $list( def ) {
		var $res = $( '<ul>' )
			.addClass( 'liste-horizontale' )
			.css( {
				display: 'inline',
				margin: 0
			} );
		
		var $li, i;
		for ( i = 0; i < def.length; ++i ) {
			$li = $( '<li>' );
			$li.append( def[i] );
			$res.append( $li );
		}
		
		return $res;
	}
	
	function $actionLink( label, onClick ) {
		return $( '<a>' )
			.attr( 'href', '#' )
			.text( label )
			.click( function ( evt ) {
				evt.preventDefault();
				onClick();
			} );
	}
	
	function $replaceLink( label, replacements ) {
		return $actionLink( label, function () {
			var $wikitext = $( '#wpTextbox1' );
			var wikitext = $wikitext.val();
			var oldWikitext = wikitext;
			
			for ( var i = 0; i < replacements.length; ++i ) {
				wikitext = wikitext.replace.apply( wikitext, replacements[i] );
			}
		
			if ( wikitext === oldWikitext ) {
				alert('Aucun changement');
			} else {
				$wikitext.val( wikitext );
			}
		} );
	}
	
	function $insertLink( label, tagOpen, tagClose, sampleText ) {
		return $actionLink( label, function () {
			mw.toolbar.insertTags( tagOpen, tagClose, sampleText );
		} );
	}
	
	var $editList = $list( [
		$insertLink( '{{en}}', '{{lang|en|', '}}', '' ),
		$insertLink( '{{de}}', '{{lang|de|', '}}', '' ),
		$actionLink( '{{lang}}', function () {
			mw.toolbar.insertTags(
				'{{lang|' + prompt( 'Code de langue ?' ) + '|',
				'}}',
				''
			);
		} ),
		[
			$insertLink( '{{cit', '{{citation|', '}}', '' ),
			document.createTextNode( ' ' ),
			$insertLink( 'bloc}}', '{{citation bloc|\n', '\n}}', '' )
		],
		$insertLink( '{{retrait}}', '{{retrait|1= ', ' }}', '' ),
		$insertLink( 'formatnum', '{{formatnum:', '}}', '' ),
		$replaceLink( 'lignes', [
			[ /[ \t]+\n/g, '\n' ], // remove spaces from line ends
			[ / +/g, ' ' ], // multiple spaces are bad
			[ /\n{2,}/g, '\n\n' ] // replace multiple empty lines by only one
		] ),
		$replaceLink( 'bris', [
			[ /\s{0,}\n+(\*|:|;|#)/g, '\n$1' ]
		] ),
		$replaceLink( '« »', [
			[ /([ '’(\n])"/g, '$1«\u00A0' ],
			[ /"([ .,)\n])/g, '\u00A0»$1' ]
		] )
	] );
	
	$( '#wpSummaryLabel' ).prepend(
		$( '<div>' ).append( $editList )
	);
} );