User:TU-G205/common.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
/* [[MediaWiki:Edittools]](text-editer markup) Alternative [[User:TU-G205/Edittools]]
copy by [[:ja:User:Waiesu/CustomEdittools.js]](VER:2016年9月28日 (水) 17:24)*/
var state = mw.config.get('wgAction');
if (state == 'edit' || state == 'submit') {
	$.ajax({
		url: '//commons.wikimedia.org/w/index.php',
		data: {
			title: 'User:' + mw.config.get('wgUserName') + '/Edittools',
			action: 'render'
		}
	}).then(function(data){
		var $textarea = $('#wpTextbox1');
		var $input = $('#wpSummary');
		
		var global = {target: $textarea};
		$textarea.focus(function(){global.target = this});
		$input.focus(function(){global.target = this});
		
		var $div = $('.mw-editTools');
		$div.html(data);
		var $item = $('.mw-charinsert-item');
		$item.click(function(){
			var target = global.target;
			
			var strStart = this.dataset.mwCharinsertStart;
			var strEnd = this.dataset.mwCharinsertEnd;
			
			var value = target.value;
			
			var numStart = target.selectionStart;
			var numEnd = target.selectionEnd;
			
			var strBefore = value.substring(0, numStart);
			var strAfter = value.substring(numEnd);
			
			var strCaret = strBefore + strStart;
			if (numStart == numEnd) {
				target.value = strCaret + strEnd + strAfter;
			} else {
				strCaret += value.substring(numStart, numEnd) + strEnd;
				target.value = strCaret + strAfter;
			}
			target.selectionStart = strCaret.length;
			target.selectionEnd = strCaret.length;
			target.focus();
			
			if (target.tagName.toLowerCase() == 'textarea') {
				$('html, body').animate({scrollTop: target.getBoundingClientRect().top + window.scrollY});
			}
		});
	}, function(){
		alert('Edittoolsの読み込みに失敗しました');
	});
}