User:Headbomb/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;

function addCBToToolbox { if ( mw.config.get( 'wgCanonicalNamespace' ) !== 'Special' ) { var pTb = document.getElementById("p-tb"); if ( !pTb ) { return; }		var escPageName = encodeURIComponent( mw.config.get( 'wgPageName' )); mw.util.addPortletLink("p-tb", "//citations.toolforge.org/process_page.php?edit=toolbar&slow=1&page="+escPageName, 'Expand citations', 't-citationbot', "Expand citations and fix common formatting errors", 'a'); } }

// 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?slow=1', 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 );	} } );

// Add a toolbox button that runs Citation Bot on the most recent saved revision of the page if ( $.inArray( mw.config.get( 'skin' ), ['monobook', 'modern', 'vector'] ) !== -1 ) { $( addCBToToolbox ); }