User:Mooeypoo/tools/article.gender.flip.js

/** * A script to add a button that can replace gender pronouns through the article. * Uses the neutrality.wtf API (Github: https://github.com/neutralitywtf/ConceptReplacer) * ********************************************************* * To use, copy this line to your User:YourName/common.js: * mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Mooeypoo/tools/article.gender.flip.js&action=raw&ctype=text/javascript'); ********************************************************* */ $.when( mw.loader.using( [ 'mediawiki.util' ] ), $.ready ).then( function {	var $button;

if ( mw.config.get( 'wgCanonicalNamespace' ) !== '' ) { // Only work in article namespace return; }

$button = $( ' ' ) .addClass( 'mw-ui-button' ) .addClass( 'neutralitywtf-button' ) .text( 'Swap gender pronouns' ) .css( { display: 'none' } ) .insertBefore( '.mw-body .firstHeading' );

// We want to load the CSS stylesheet before we display the button. // mw.loader.load doesn't return a promise, and mw.loader.using can't load a file // So we cheat: // (would have been: mw.loader.load( '/w/index.php?title=User:Mooeypoo/tools/article.gender.flip.css&action=raw&ctype=text/css', 'text/css' ); ) $.ajax( {		url: '/w/index.php?title=User:Mooeypoo/tools/article.gender.flip.css&action=raw&ctype=text/css'	} ) .then( function ( stylesheet ) {		mw.util.addCSS( stylesheet );		$button.css( { display: 'block' } );	} );

$button.on( 'click', function {			if ( !$( 'body' ).hasClass( 'neutralitywtf-already-run' ) ) {				$button.prop( 'disabled', true );				$( 'div#mw-content-text' ).addClass( 'neutralitywtf-loading' );

// Get neutrality.wtf to give us the new content: $.ajax( {					url: 'https://www.neutrality.wtf/api/api.php',					data: {						module: 'swapgender',						url: window.location.href					}				} ) .then( function ( response ) {					// Success					$html = $( $.parseHTML( response ) );					$( 'div#mw-content-text' ).empty.append( $html.find( 'div#mw-content-text' ) );					$( 'body' ).addClass( 'neutralitywtf-already-run' );

$button.replaceWith(						$( ' ' )							.addClass( 'neutralitywtf-success-label' )							.text( '(Swapped gender pronouns)' )					); }, function { // Show error message mw.notify( 'Could not load the swapped content. Please try again later.' ); // Enable the button and text $button.prop( 'disabled', false ); } )				.always( function { $( 'div#mw-content-text' ).removeClass( 'neutralitywtf-loading' ); } );			}		} ); } );