User:Nemo bis/citations.js

/* _____________________________________________________________________________ * |                                                                             | * |                    === WARNING: GLOBAL GADGET FILE ===                      | * |                 Changes to this page affect many users. | * | Please discuss changes on the talk page or on WT:Gadget before editing. | * |_____________________________________________________________________________| * * Imported from version 1.0 as of 17:18, 9 April 2011 (UTC) from User:Smith609/citations.js * Adds a "Citation bot" link to the toolbox, and a button beneath edit fields, see User:Smith609/citations */

// @Version 1.0 - Adds an "Expand citations" link to the toolbox, and a button beneath edit fields. // @Version 1.1 - Modify gadget to use jQuery and Citation Bot's new gadgetapi on Tool Labs // @Version 1.2 - Make use of new oojs-ui widget style

var $spinnerspan; var cbButton;

// Add a citation bot button next to the "Show changes" button function addCitationButton { if ( document.getElementById( 'wpDiff' ) ) { var diff = document.getElementById( 'wpDiffWidget' ); cbButton = new OO.ui.ButtonWidget;

cbButton.setElementId( 'wpCitations' ) .setIcon( 'articleCheck' ) .setLabel( 'Citations' ) .setFlags( 'secondary' );

cbButton.on( 'click', function {			$.ajax( { type: 'POST', url: 'https://citations.toolforge.org/gadgetapi.php', data: { text: $( '#wpTextbox1' ).textSelection( 'getContents' ), summary: $( '#wpSummary' ).textSelection( 'getContents' ) },				beforeSend: function { $( cbButton.$element ).replaceWith( $spinnerspan ); },				success: function( data ) { expandedText = data.expandedtext; editSummary = data.editsummary; $( '#loader' ).replaceWith( cbButton.$element ); if ( expandedText ) { // Populate text box with received expanded text $( '#wpTextbox1' ).textSelection( 'setContents', expandedText ); // Populate edit summary textbox with received edit summary $( '#wpSummary' ).textSelection( 'setContents', editSummary ); // Click 'Show preview' button $( '#wpDiff' ).click; } else { $( '#loader' ).replaceWith( cbButton.$element ); alert( 'Error: Replacement text empty' ); }				},				error: function( data ) { $( '#loader' ).replaceWith( cbButton.$element ); alert( 'Error: Citations request failed' ); }			} );		} );		cbButton.$element.insertBefore( $(diff.nextSibling) ); } }

// Add a button to allow expanding citations in the text in the edit textbox mw.hook( 'wikipage.editform' ).add( function {	if( !$spinnerspan ) {		$spinnerspan = $( ' ');	}	if ( document.images ) {		// Loading gif when Citations request is processing		var spinner = new Image;		spinner.src = "//upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif";		$spinnerspan.append( spinner );	}	if( $('#wpCitations').length === 0 ){		mw.loader.using( [ 'oojs-ui-core', 'oojs-ui.styles.icons-content', 'jquery.textSelection' ] ).then( addCitationButton );	} } );