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 stylevar $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" buttonfunction 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 textboxmw.hook( 'wikipage.editform' ).add( function() {if( !$spinnerspan ) {$spinnerspan = $( '<span id="loader"></span>');}if ( document.images ) {// Loading gif when Citations request is processingvar 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 pageif ( $.inArray( mw.config.get( 'skin' ), ['monobook', 'modern', 'vector'] ) !== -1 ) {  $( addCBToToolbox );}