MediaWiki:CharInsert.js

From Team Fortress Wiki
Jump to: navigation, search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
// START charInsert by WindPower
// <pre><nowiki>
function addCharacter(character)
{
	var textarea = document.getElementById('wpTextbox1');
	var scrollTop = textarea.scrollTop;
	var scrollLeft = textarea.scrollLeft;
	if (document.selection)
	{
		textarea.focus();
		var sel = document.selection.createRange();
		sel.moveStart ('character', -textarea.value.length);
		var strPos = sel.text.length;
		sel.text = character;
		sel = document.selection.createRange();
		sel.moveStart('character', -textarea.value.length);
		sel.moveStart('character', strPos);
		sel.moveEnd('character', 0);
		sel.select();
	}
	else if (textarea.selectionStart || textarea.selectionStart == '0')
	{
		var startPos = textarea.selectionStart;
		var endPos = textarea.selectionEnd;
		textarea.value = textarea.value.substring(0, startPos) + character + textarea.value.substr(endPos);
		textarea.selectionStart = startPos + character.length;
		textarea.selectionEnd = startPos + character.length;
	}
	else
	{
		textarea.value += character;
		try
		{
			textarea.selectionStart = textarea.value.length;
			textarea.selectionEnd = textarea.value.length;
		}
		catch(e) {}
	}
	textarea.focus();
	textarea.scrollTop = scrollTop;
	textarea.scrollLeft = scrollLeft;
}
function insertCharacters(characters)
{
	if(!document.getElementById('wpTextbox1')) return;
	var charsDiv = document.createElement('div');
	charsDiv.setAttribute('id', 'wpCharInsert1');
	document.getElementById('wpTextbox1').parentNode.insertBefore(charsDiv, document.getElementById('wpTextbox1').nextSibling);
	var a = [];
	var c, s, l;
	for(c in characters)
	{
		if(typeof(characters[c]) == typeof([]))
		{
			s = characters[c][0];
			l = characters[c][1];
		}
		else
		{
			s = characters[c];
			l = s
		}
		if(!s)
		{
			a[c] = document.createElement('span');
			a[c].setAttribute('class', 'wpCharInsertText');
			a[c].appendChild(document.createTextNode(l));
		}
		else
		{
			a[c] = document.createElement('a');
			a[c].appendChild(document.createTextNode(l));
			a[c].href = '#';
			a[c].setAttribute('class', 'wpCharInsertLink');
			a[c].setAttribute('character', s);
			a[c].addEventListener('click', function(){addCharacter(this.getAttribute('character')); this.blur(); return false;}, false);
		}
		charsDiv.appendChild(a[c]);
	}
}
function initCharInsert(){
	// Modify the list below.
	// To put a custom label for the link, use ['Inserted text', 'Link label'] instead of a string.
	// Use '' (empty string) as inserted text to create a text label instead of a link.
	insertCharacters([
		['', 'Sign your name:'],
		['~~~~', 'Insert signature'],
		['', 'Tags:'],
		'{{cleanup}}',
		'{{stub}}'
	]);
}
addOnloadHook(initCharInsert);
// </nowiki></pre>
// END charInsert