User:Gary/editable template examples.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.
/*
	EDITABLE TEMPLATE EXAMPLES
	Description: Converts template examples in <pre> tags to <textarea> so they can be more easily copied.
		Simply click anywhere in the box, then right-click and choose "Select All" (or use the keyboard shortcut). Then copy the text.
*/

if (typeof(unsafeWindow) != 'undefined')
{
	mw = unsafeWindow.mw;
}

$(editableTemplateExamples);

function editableTemplateExamples()
{
	if (mw.config.get('wgCanonicalNamespace') != 'Template' || mw.util.getParamValue('disable') == 'editexamples') return false;
	
	// Convert each <pre> to <textarea>
	$('#template-documentation pre').each(function()
	{
		var pre = $(this);
		
		// Continue to next if current node is color coded source code.
		if (pre.parent().parent().hasClass('mw-geshi')) return true;
		
		var contents = pre.contents().first();
		var rows = contents[0].nodeValue.split('\n').length;
		var textarea = $('<textarea rows="' + rows + '"></textarea>').append(contents);
		textarea.css('width', (textarea.attr('cols') + 5) + 'em');
		pre.replaceWith(textarea);
	});
}