User:Edokter/FontSizer.js

/**

* 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 =

'

  • ' +

    '' +

    '' +

    '' +

    '

  • ';

    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 */