利用者:Angol Mois/common.js

出典: フリー教科書『ウィキブックス(Wikibooks)』

注意: 保存した後、ブラウザのキャッシュをクリアする必要があります。Mozilla / Firefox / Safari: [Shift] を押しながら [再読み込み] をクリック、または [Shift]-[Ctrl]-[R] (Macでは [Cmd]-[Shift]-[R]); IE: [Ctrl] を押しながら [更新] をクリック、または [Ctrl]-[F5]; Konqueror: [再読み込み] をクリック、または [F5]; Opera: 「ツール」→「設定」からキャッシュをクリア。

// Custom Edit Tools
// https://ja.wikipedia.org/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Waiesu/CustomEdittools.js&oldid=61325060 より拝借
var state = mw.config.get('wgAction');
if (state == 'edit' || state == 'submit') {
	$.ajax({
		url: '//ja.wikibooks.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の読み込みに失敗しました');
	});
}