MediaWiki:Gadget-MonobookToolbarGotoThisLine.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 () {

		function openMenu() {
			var LineNumber = prompt( 'Quelle ligne ?' );
			if ( !LineNumber ) return;
			LineNumber = parseInt( LineNumber );
			if ( !LineNumber ) return;
			getLine( LineNumber );
		}

		function getLine( LineNumber ) {
			var TextArea = MonobookToolbar.getCurrentFocused();
			if ( !TextArea ) return;
			var Text = TextArea.value;
			var TextLines = Text.split( '\n' );
			var CharacterCount = 0;
			// Cap to last line
			if ( LineNumber > TextLines.length ) {
				LineNumber = TextLines.length;
			}
			for ( var a = 0, l = TextLines.length; a < l; ++a ) {
				if ( a + 1 === LineNumber ) {
					selectLine( TextArea, CharacterCount );
					return;
				}
				CharacterCount += ( TextLines[ a ].length + 1 );
			}
		}

		function selectLine( TextArea, Count ) {
			$( TextArea )
				.focus()
				.textSelection( 'setSelection', { start: Count } )
				.textSelection( 'scrollToCaretPosition' );
		}

		MonobookToolbar.addButton( {
			imageFile: '//upload.wikimedia.org/wikipedia/commons/0/05/Button_thisline.png',
			speedTip: 'Aller à la ligne',
			imageId: 'mw-editbutton-GotoThisLine',
			callback: openMenu
		} );

	} );
}