MediaWiki:Gadget-site-HideFilterBar.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
/*global jQuery:false, mediaWiki:false*/

( function( $, mw ) {
	'use strict';

	if ( mw.config.get( 'wgCanonicalSpecialPageName' ) !== 'Newimages' ) return;

	var $label,
		loadTranslation, cleanMessage, msg,
		$optBots = $( '#mw-input-showbots' ),
		optBots = $optBots[0],
		buttonOptions = {
			icons: {
				primary: 'ui-icon-gear'
			}
		};

	loadTranslation = function() {
		var messages = {};
		$( '.com-newimages-translations' ).find( 'span' ).each( function( i, elem ) {
			var $elem = $( elem ),
				key = $elem.attr( 'class' ) || '',
				message = $elem.text();

			key = key.match( /com-newimages-translation-\S*/ );
			if ( !key ) return;
			messages[key[0]] = cleanMessage( message );
		} );
		mw.messages.set( messages );
	};

	cleanMessage = function( message ) {
		return message.replace( /^\((.+)\)$/, '$1' );
	};

	msg = function( /* params */ ) {
		var args = Array.prototype.slice.call( arguments, 0 );
		args[0] = 'com-newimages-translation-' + args[0];
		var msg = mw.message.apply( mw, args );
		return msg.parse();
	};

	// Silently fail
	if ( !optBots ) return;
	loadTranslation();

	$label = $optBots.siblings( 'label' );

	// It should be visible that the button is "enabled"
	// IMHO a bug in MW UI button implementation
	// Cf. http://jqueryui.com/button/#checkbox
	if ( mw.config.get( 'skin' ) === 'vector' ) {
		mw.util.addCSS( '.ui-button.ui-state-active { background:#F0F0F0 !important; }' );
	}

	$optBots.closest( 'form' ).hide();
	$optBots.parent().children().appendTo( '#com-opt-bots-container' );
	$label.text( function ( i, val ) {
		return cleanMessage( $.trim( val ) );
	} );

	mw.loader.using( ['jquery.ui', 'mediawiki.Uri'], function() {
		if ( optBots.checked ) {
			buttonOptions.label = msg( 'hidebots' );
		}
		$optBots.button( buttonOptions );
		$optBots.on( 'change', function() {
			var uri = new mw.Uri();

			$optBots.button( { disabled: true } );

			if ( optBots.checked ) {
				uri.query.showbots = 1;
			} else {
				if ( Object.hasOwnProperty.call( uri.query, 'showbots' ) ) {
					delete uri.query.showbots;
				}
			}
			location.href = uri.toString();
		} );
	} );
}( jQuery, mediaWiki ) );