User:KnightMiner/editSummaryPresets.js

var editsummOriginalSummary = "";

function editsummAddOptionToDropdown(dropdown, optionText) { var option = document.createElement("option"); var optionTextNode = document.createTextNode(optionText); option.appendChild(optionTextNode); dropdown.appendChild(option); }

function editsummAddCatToDropdown(dropdown, catText, selected) { var option = document.createElement("option"); option.disabled = true; option.selected = selected; var optionTextNode = document.createTextNode(catText); option.appendChild(optionTextNode); dropdown.appendChild(option); }

// Save the original value of the edit summary field function editsummOnCannedSummarySelected { editsummOriginalSummary = document.getElementById("wpSummary"); if (editsummOriginalSummary) { editsummOriginalSummary = editsummOriginalSummary.value; } else { editsummOriginalSummary = ""; }	var idx = this.selectedIndex; var canned = this.options[idx].text; var 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; document.getElementById("wpSummary").value = newSummary; }

// Loop through siblings, looking for editCheckboxes class $( function {	var insertBeforeThis = document.getElementById("wpSummary");	while (insertBeforeThis) {		if (insertBeforeThis.className === "editCheckboxes") {			break;		}		insertBeforeThis = insertBeforeThis.nextSibling;	}

// If we failed to find the editCheckboxes class, or insertBeforeThis is null if (!insertBeforeThis || insertBeforeThis.className !== "editCheckboxes") { return; }	editsummOriginalSummary = editsummOriginalSummary.value;

// For convenience, add a dropdown box with some canned edit summaries to the form. var dropdown = document.createElement("select"); dropdown.style.width = "50%"; dropdown.style.margin = "0 4px 0 0"; dropdown.onchange = editsummOnCannedSummarySelected; editsummAddCatToDropdown(dropdown, "Summary presets", true);

// Add support for the {user} keyword var username; mw.loader.using( 'mediawiki.api', function {		new mw.Api.get( { action: 'query', titles: mw.config.get( 'wgPageName' ), prop: 'revisions' } ).done( function( data ) { username = data.query.pages[mw.config.get( 'wgArticleId' )].revisions[0].user;

// Add summaries based on user's variable for ( var i=0; i<customSummaries.length; i++ ) { if ( typeof customSummaries[i] !== 'undefined' ) { if ( customSummaries[i].search( '== ' ) === 0 ) { editsummAddCatToDropdown( dropdown, customSummaries[i].replace( '== ', '' ), false ); } else { editsummAddOptionToDropdown( dropdown, customSummaries[i].replace( /\{user\}/g, username ) ); }				}			}

var theParent = insertBeforeThis.parentNode; theParent.insertBefore(dropdown, insertBeforeThis); theParent.insertBefore(document.createElement("br"), dropdown); } );	} ); } );