MediaWiki:Common.js

/* Any JavaScript here will be loaded for all users on every page load. */

/** * Extra toolbar options * * Description: Adds extra buttons to the editing toolbar. * Due to the way this works, it has to be loaded before the * toolbar loads (so it can't be in the onload function). *  * Maintainers: wikipedia:User:MarkS, wikipedia:User:Voice of All, wikipedia:User:R. Koot */ var buttons = ;

$.each( buttons, function { mwCustomEditButtons.push( this ); } );

$( function { 'use strict';

/** * Collapsible tables * * Based on http://www.mediawiki.org/wiki/Manual:Collapsible_tables#Common.js_script_.28before_1.18.29 * * @maintainers User:Ultradude25 */ if ( $( 'table.collapsible' ).length ) { var collapseText = 'Collapse', expandText = 'Expand', collapseButton, buttonText = ' [ ' + collapseText + ' ] '; $( 'table.collapsible' ).each( function {       var table = $( this ), header;        if ( table.find( '.collapse-button' ).length ) {            header = table.find( 'tr:first .collapse-button' );        } else {            header = table.find( 'tr:first th:first' );        }        if ( !header.length || !table.find( 'tr' ).not( 'tr:first' ).text.replace( /\n/g, '' ).length ) {           return true;        }        if ( table.hasClass( 'collapse-button-none' ) ) {            header.append( buttonText );        } else {            header.prepend( buttonText );        }        collapseButton = table.find( '.collapsible-button .jslink' );        if ( table.hasClass( 'collapsed' ) ) {            collapseButton.text( expandText );        }        collapseButton.click( function( e ) { // Stop table sorting activating when clicking link e.stopPropagation; if ( table.hasClass( 'collapsed' ) ) { table.removeClass( 'collapsed' ).addClass( 'expanded' ); $( this ).text( collapseText ); } else { table.removeClass( 'expanded' ).addClass( 'collapsed' ); $( this ).text( expandText ); }       } );    } ); }

/** * Fix edit summary prompt for undo * * Fixes the fact that the undo function combined with the "no edit summary prompter" * causes problems if leaving the edit summary unchanged. * Added by wikipedia:User:Deskana, code by wikipedia:User:Tra. * See https://bugzilla.wikimedia.org/show_bug.cgi?id=8912 */ if ( document.location.search.indexOf( "undo=" ) !== -1 && document.getElementsByName( 'wpAutoSummary' )[0] ) { document.getElementsByName( 'wpAutoSummary' )[0].value='1'; }

/** * Element animator (used in Template:Grid) * * Will cycle the active class on any child elements within an element with the animated class. */ if ( $( '.animated' ).length ) { setInterval( function {       $( '.animated' ).each( function { var current = $( this ).find( '.active' ).removeClass( 'active' ), next = current.next; if ( !current.next.length ) { next = $( this ).children.eq( 0 ); }           next.addClass( 'active' ); } );   }, 2000 ); }

/** * Pause grid templates with lots of cells in them (e.g. Template:Grid/Crafting Table) on mouseover * * This is so people have a chance to look at each image on the cell * and click on pages they want to view. */ function pauseGrid( grid ) { $( grid ).hover( function {        $( this ).find( '.grid .animated' ).removeClass( 'animated' ).addClass( 'paused' );    }, function {        $( this ).find( '.grid .paused' ).removeClass( 'paused' ).addClass( 'animated' );    } ); } pauseGrid( '.grid-Crafting_Table' ); pauseGrid( '.grid-Furnace' ); pauseGrid( '.grid-Brewing_Stand' );

/** * Add fake last-child class in navboxes for IE8 */ if ( $.client.profile.name === 'msie' && $.client.profile.versionBase === '8' ) { $( '.navbox-list li:last' ).addClass( 'last-child' ); }

/** * Collapsible details for Template:History * * On click, this hides any rows with the overview class, and shows any rows with * the details class, and visa versa. */ if ( $( '.history .details' ).length ) { var histExpandText = 'Expand details', histCollapseText = 'Collapse details';

$( '.history th:first' ).append( ' [ ' + histExpandText + ' ] ' );

var histLink = $( '.toggleHistDetails .jslink' ); histLink.click( function {       $( '.overview' ).toggle;        $( '.details' ).toggle;        if ( histLink.text === histExpandText) {            histLink.text( histCollapseText );        } else {            histLink.text( histExpandText );        }    } ); }

/** * Page loader * * Allows a page to be downloaded and shown within another page. * Use with Template:LoadPage */ var baseURL = '/', loadText = 'Load content', showText = 'Expand content', hideText = 'Collapse content';

$( '.load-page' ).find( '.mw-headline:first' ).append( ' [ ' + loadText + ' ] ' );

$( '.load-page-button > .jslink' ).live( 'click', function {   var $this = $( this ), $body = $this.closest( '.load-page' ), $content = $body.find( '.load-page-content' );    if ( $body.hasClass( 'loading' ) ) {        return;    }    if ( $this.text === loadText ) {        $body.addClass( 'loading' );        $( 'body' ).css( 'cursor', 'wait' );        $.ajax( { url: baseURL + 'api.php?format=json&action=parse&prop=text&redirects=1&page=' + mw.util.wikiUrlencode( $body.data( 'page' ) ), dataType: 'json', timeout: 20000 } ).done( function( data ) { if ( data.error ) { if ( $( '#error-dialog' ).length ) { return; }               mw.loader.using( 'jquery.ui.dialog', function {                    $body.removeClass( 'loading' );                    $( 'body' ).css( 'cursor', 'auto' );                    $( '#netbar' ).after( ' ' );                    $( '#error-dialog' ).html( ' Error: ' + data.error.info + ' ' ).dialog( { title: 'Hey! Listen!', resizable: false, width: 400, modal: true, buttons: { 'Retry': function { $this.click; $( this ).dialog( 'destroy' ); $( '#error-dialog' ).remove; },                           Cancel: function { $( this ).dialog( 'destroy' ); $( '#error-dialog' ).remove; return; }                       }                    } );                } );                return; }           $content.html( data.parse.text['*'] ); $this.text( hideText ); $body.removeClass( 'loading' ); $( 'body' ).css( 'cursor', 'auto' ); } ).fail( function( error ) { if ( $( '#error-dialog' ).length ) { return; }           mw.loader.using( 'jquery.ui.dialog', function {                $body.removeClass( 'loading' );                $( 'body' ).css( 'cursor', 'auto' );                $( '#netbar' ).after( ' ' );                if ( !error.responseText ){                    $( '#error-dialog' ).html( ' Error: No response from the server ' );                } else {                    $( '#error-dialog' ).html( ' Error: ' + error.responseText + ' ' );                }                $( '#error-dialog' ).dialog( { title: 'Hey! Listen!', resizable: false, width: 400, modal: true, buttons: { 'Retry': function { $this.click; $( this ).dialog( 'destroy' ); $( '#error-dialog' ).remove; },                       Cancel: function { $( this ).dialog( 'destroy' ); $( '#error-dialog' ).remove; return; }                   }                } );            } );        } );    } else if ( $this.text === showText ) {        $content.show;        $this.text( hideText );    } else {        $content.hide;        $this.text( showText );    } } );

/** * Fix missing toolbar images */ $( '#mw-editbutton-bold' )    .prop( 'src', '//upload.wikimedia.org/wikipedia/commons/e/e2/Button_bold.png' ); $( '#mw-editbutton-italic' )  .prop( 'src', '//upload.wikimedia.org/wikipedia/commons/1/1d/Button_italic.png' ); $( '#mw-editbutton-link' )    .prop( 'src', '//upload.wikimedia.org/wikipedia/commons/c/c0/Button_link.png' ); $( '#mw-editbutton-extlink' ) .prop( 'src', '//upload.wikimedia.org/wikipedia/commons/e/ec/Button_extlink.png' ); $( '#mw-editbutton-headline' ) .prop( 'src', '//upload.wikimedia.org/wikipedia/commons/f/fb/Button_headline.png' ); $( '#mw-editbutton-image' )   .prop( 'src', '//upload.wikimedia.org/wikipedia/commons/d/de/Button_image.png' ); $( '#mw-editbutton-media' )   .prop( 'src', '//upload.wikimedia.org/wikipedia/commons/1/19/Button_media.png' ); $( '#mw-editbutton-nowiki' )  .prop( 'src', '//upload.wikimedia.org/wikipedia/commons/8/82/Nowiki_icon.png' ); $( '#mw-editbutton-signature' ).prop( 'src', '//upload.wikimedia.org/wikipedia/commons/6/6d/Button_sig.png' ); $( '#mw-editbutton-hr' )      .prop( 'src', '//upload.wikimedia.org/wikipedia/commons/0/0d/Button_hr.png' );

} );