Jump to content

User:Edokter/FontSizer.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/**
 * Add an experimental fontsizer applet to the Tools menu.
 *
 * @dependencies: mediawiki.cookie
 * @source: [[User:Edokter/FontSizer.js]] / [[User:Edokter/FontSizer.css]]
 * @revision 3.1
 * @author: Edokter ([[User:Edokter]])
 **/

/* Load dependencies (remove when loading through ResourceLoader) */
mw.loader.load( '//en.wikipedia.org/w/index.php?title=User:Edokter/FontSizer.css&action=raw&ctype=text/css', 'text/css' );
mw.loader.using( 'mediawiki.cookie', function() {
/* Begin of mw.loader.using callback */

$( document ).ready( function() {

	var fontsizerButtons =
		'<li id="t-fontsizer">' +
			'<input type="submit" id="t-fontsizer-minus" name="minus" title="Decrease fontsize [alt--]" accesskey="-" value="−">' +
			'<input type="submit" id="t-fontsizer-reset" name="reset" title="Reset fontsize [alt-0]" accesskey="0" value="100%">' +
			'<input type="submit" id="t-fontsizer-plus" name="plus" title="Increase fontsize [alt-+]" accesskey="+" value="+">' +
		'</li>';

	var bodyStyle = document.getElementsByTagName( 'body' )[0].style;

	function getSize() {
		return parseInt( bodyStyle.fontSize.replace( '%', '' ) );
	}

	function setSize( size ) {
		bodyStyle.fontSize = size == 100 ? '' : size + '%';
		mw.cookie.set( 'fontSizer.size', size == 100 ? null : size, { prefix: '' } );
		$( '#t-fontsizer-reset' ).attr( 'value', size + '%' );
	}

	/* Initialize */
	$( '#p-tb' ).find( 'ul' ).prepend( fontsizerButtons );

	var cookie = mw.cookie.get( 'fontSizer.size', '' );
	if ( cookie ) {
		setSize( cookie );
	}

	$( '#t-fontsizer-minus' ).click( function() {
		var newSize = getSize();
		if ( !newSize ) {
			newSize = 100;
		}
		if ( newSize > 50 ) {
			newSize <= 100 ? newSize -= 5 : newSize -= 10;
		}
		setSize( newSize );
	});

	$( '#t-fontsizer-plus' ).click( function() {
		var newSize = getSize();
		if ( !newSize ) {
			newSize = 100;
		}
		if ( newSize < 200 ) {
			newSize < 100 ? newSize += 5 : newSize += 10;
		}
		setSize(newSize);
	});

	$( '#t-fontsizer-reset' ).click( function() {
		setSize( 100 );
	});
});

/* End of mw.loader.using callback */
} );
/* DO NOT ADD CODE BELOW THIS LINE */