User:Deisenbe/Gadget-defaultsummaries.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 as of 09/06/2011 from User:ErrantX/defaultsummaries.js

* Edited version from User:MC10/defaultsummaries.js

* Implements default edit summary dropdown boxes

*/

/* global mw, ve */

/* eslint-disable no-jquery/no-global-selector */

( function () { // Wrap with anonymous function

var $summaryBox = $( '#wpSummary' ),

minorSummaries = [

'Spelling/grammar/punctuation/typographical correction',

'Fixing style/layout errors',

'Reverting vandalism or test edit',

'Reverting unexplained content removal',

'Copyedit (minor)'

],

articleSummaries = [

'Expanding article',

'Adding/improving reference(s)',

'Adding/removing wikilink(s)',

'Clean up/copyedit',

'Adding/removing category/ies',

'Adding/removing external link(s)',

'Removing unsourced content'

],

nonArticleSummaries = [

'Reply',

'Comment',

'Suggestion'

],

talkPageSummaries = [

'WikiProject tagging',

'WikiProject assessment'

];

function addOptionsToDropdown( dropdown, optionTexts ) {

dropdown.menu.addItems( optionTexts.map( function ( optionText ) {

return new OO.ui.MenuOptionWidget( { label: optionText } );

} ) );

}

function onSummarySelect( option ) {

// Save the original value of the edit summary field

var editsummOriginalSummary = $summaryBox.val(),

canned = option.getLabel(),

newSummary = editsummOriginalSummary;

// Append old edit summary with space, if exists,

// and last character != space

if ( newSummary.length !== 0 && newSummary.charAt( newSummary.length - 1 ) !== ' ' ) {

newSummary += ' ';

}

newSummary += canned;

$summaryBox.val( newSummary ).trigger( 'change' );

}

function getSummaryDropdowns() {

// For convenience, add a dropdown box with some canned edit

// summaries to the form.

var namespace = mw.config.get( 'wgNamespaceNumber' ),

dropdown = new OO.ui.DropdownWidget( {

label: 'Common edit summaries – click to use'

} ),

minorDropdown = new OO.ui.DropdownWidget( {

label: 'Common minor edit summaries – click to use'

} );

dropdown.menu.on( 'select', onSummarySelect );

minorDropdown.menu.on( 'select', onSummarySelect );

addOptionsToDropdown( minorDropdown, minorSummaries );

if ( namespace === 0 ) {

addOptionsToDropdown( dropdown, articleSummaries );

} else {

addOptionsToDropdown( dropdown, nonArticleSummaries );

if ( namespace % 2 !== 0 && namespace !== 3 ) {

addOptionsToDropdown( dropdown, talkPageSummaries );

}

}

return dropdown.$element.add( minorDropdown.$element );

}

// VisualEditor

mw.hook( 've.saveDialog.stateChanged' ).add( function () {

var target, $saveOptions, $dropdowns;

// .ve-init-mw-viewPageTarget-saveDialog-checkboxes

if ( $( 'body' ).data( 'wppresent' ) ) {

return;

}

$( 'body' ).data( 'wppresent', 'true' );

target = ve.init.target;

$saveOptions = target.saveDialog.$saveOptions;

$summaryBox = target.saveDialog.editSummaryInput.$input;

if ( !$saveOptions.length ) {

return;

}

$dropdowns = getSummaryDropdowns();

$saveOptions.before( $dropdowns );

} );

// WikiEditor

$.when( mw.loader.using( 'oojs-ui-core' ), $.ready ).then( function () {

var $dropdowns,

$editCheckboxes = $( '.editCheckboxes' );

// If we failed to find the editCheckboxes class

if ( !$editCheckboxes.length ) {

return;

}

$dropdowns = getSummaryDropdowns();

$dropdowns.css( {

width: '48%',

'padding-bottom': '1em'

} );

$editCheckboxes.before( $dropdowns );

} );

}() );