MediaWiki:Gadget-DiscussionToolsWikify.js

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
  • Opera: натисніть Ctrl-F5
if (mw.config.get('skin') != 'minerva') {
	importScript('MediaWiki:Wikificator.js');
	function Wikify_selected () {
		var input = document.getElementsByClassName('ve-ce-documentNode')[0];
		var selection = window.getSelection();
		var focus1 = selection.anchorOffset;
		var focus2 = selection.focusOffset;
		var selected_text = "";
		if (selection.anchorOffset == selection.focusOffset) {
			selected_text = selection.anchorNode.data;
		}
		else {
			if (selection.anchorOffset > selection.focusOffset) {
				focus1 = selection.anchorOffset;
				focus2 = selection.focusOffset;
			}
			else {
				focus2 = selection.anchorOffset;
				focus1 = selection.focusOffset;
			}
			var selection_range = focus1 - focus2;
			selected_text = input.textContent.slice(focus2, focus1);
		}
		var txt = selected_text;
		Wikify();
	}
	var target = document.querySelector('#mw-content-text');
	var observer = new MutationObserver(function(mutation) {
		mutation.forEach(function(mutation) {
			if (mutation.target.className == 'oo-ui-toolbar-bar') {
				$('.ve-ui-toolbar-group-other .oo-ui-toolGroup-tools').append('<div style="display:inline-block; vertical-align: middle; box-sizing: border-box;"><div style="line-height: 1;"><span><a id="wikify-button" title="Вікіфікатор" role="button" style="background-image: url(//upload.wikimedia.org/wikipedia/commons/0/06/Wikify-toolbutton.png); background-position: center; width: 42px; height: 42px; display:block; background-repeat: no-repeat; text-indent: -9999px;"></a></span></div></div>');
				$("a#wikify-button").mousedown(function(e){
					e.preventDefault();
					Wikify_selected();
				});
			}
		});
	});
	var config = {childList: true, subtree: true};
	observer.observe(target, config);
}