Jump to content

User:Svick/SectionInput.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// This script creates new text box for the name of the edited section.
// This way, the browser's autocomplete for edit summary doesn't contain section name and becomes much more useful.
// Tested in Firefox.
$(function()
{
	if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit')
	{
		var summary = document.getElementById('wpSummary');
		var sectionIdInput = where(summary.form.elements, function(el) { return el.name == 'wpSection' });
		if (sectionIdInput)
		{
			if (sectionIdInput.value == 'new')
				return;
		}
		summary.style.width = '74%';
		var section = document.createElement('input');
		section.id = section.name = 'section';
		section.style.width = '23.7%';
		section.style.setProperty('margin-right', '1%', '');
		section.tabIndex = 1;
		summary.parentNode.insertBefore(document.createElement('br'), summary);
		summary.parentNode.insertBefore(section, summary);
		var re = RegExp('/\\*\\s*(.*?)\\s*\\*/\\s*');
		var result = re.exec(summary.value);
		if (result)
			section.value = result[1];
		summary.value = summary.value.replace(re, '');
		summary.form.onsubmit = function(){
			if (section.value)
				summary.value = '/* ' + section.value + ' */ ' + summary.value;
		};
	}
});

function where(array, predicate)
{
	for (var i = 0; i < array.length; i++)
		if (predicate(array[i]))
			return array[i];
}