MediaViki:Gadget-Extra-Editbuttons.js: Redaktələr arasındakı fərq

    Viki Cavab saytından
    Redaktənin izahı yoxdur
     
    k (1 dəyişiklik idxal edildi.)
     

    Səhifəsinin 10:31, 25 yanvar 2025 tarixinə olan son versiyası

    // <nowiki> // DON'T REMOVE THIS LINE EVER
    /*global jQuery, mediaWiki, persianWikiTools, persianTools*/
    /**
     * UI code for Persian tools
     * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]
     * See also:
     * * [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]
     * * [[مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js]]
     * * [[مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js]]
     * * [[مدیاویکی:Gadget-Extra-Editbuttons-autoed.js]]
     * * [[مدیاویکی:Gadget-Extra-Editbuttons-botworks.js]]
     */
    (function ($, mw) {
    	'use strict';
    
    	//
    	// ابزار در حالت نمایش
    	//
    
    	function loadPage(title) {
    		return new mw.Api().get({
    			action: 'query',
    			prop: 'revisions',
    			titles: title,
    			rvprop: 'content',
    			format: 'json'
    		}).then(function (data) {
    			return Object.values(data.query.pages)[0].revisions[0]['*'];
    		});
    	}
    	
    	function redirectPost(url, data) {
    		var form = document.createElement('form');
    		document.body.appendChild(form);
    		form.method = 'post';
    		form.action = url;
    		for (var name in data) {
    			var input = document.createElement('input');
    			input.type = 'hidden';
    			input.name = name;
    			input.value = data[name];
    			form.appendChild(input);
    		}
    		form.submit();
    	}
    	
    	function addWatchthisParamIfAlreadyIsWatched(object) {
    		// if unwatch button exists it is in the user's watchlist right now
    		if ($('#ca-unwatch').length) {
    			object.wpWatchthis = '';
    		}
    		return object;
    	}
    	
    	function bringShowChanges(page, content, summary) {
    		redirectPost(new mw.Uri(mw.config.get('wgScript')).extend({
    			title: page,
    			action: 'submit'
    		}), addWatchthisParamIfAlreadyIsWatched({
    			wpTextbox1: content,
    			wpDiff: '',
    			wpSummary: summary,
    			wpUltimateParam: 1
    		}));
    	}
    
    	if (mw.config.get('wgAction') === 'view' &&
    			mw.config.get('wgIsArticle') &&
    			mw.config.get('wgUserEditCount') > 100 &&
    			mw.config.get('wgPageName') !== 'صفحهٔ_اصلی' &&
    			$('#mw-imagepage-nofile, #noarticletext').length === 0 &&
    			mw.config.get('wgNamespaceNumber') !== 6 &&
    			mw.config.get('wgNamespaceNumber') !== 8) {
    		$('#ca-abar-abzar').remove();
    		var interwikiFix = !$('#t-wikibase').length &&
    			$('.interlanguage-link').length &&
    			$('.wbc-editpage').length;
    		$(mw.util.addPortletLink(
    			'p-views', '#',
    			interwikiFix ? 'ابرابزار+انتقال میان‌ویکی' : 'ابرابزار',
    			'ca-abar-abzar',
    			interwikiFix ?
    				'ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میان‌ویکی سنتی به ویکی‌داده' :
    				'ابزار پیشرفتهٔ ویرایش متن'
    		)).click(function (e) {
    			e.preventDefault();
    			Promise.all([
    				// افزودن میان‌ویکی سنتی به ویکی‌داده به صورت خودکار
    				interwikiFix ? 
    					$.get('//dexbot.toolforge.org/interwikidata.php', {
    						page: mw.config.get('wgPageName')
    					}) : '',
    				// اجرای کدهای ربات
    				botworks.trigFillcat,
    				botworks.trigMissedFileUpload,
    				botworks.trigMissedRef
    			]).catch(function () {}).then(function () {
    				return loadPage(mw.config.get('wgPageName'));
    			}).then(function (content) {
    				bringShowChanges(
    					mw.config.get('wgPageName'),
    					persianWikiTools.superTool(content),
    					'ابرابزار'
    				);
    			});
    		});
    	}
    
    	//
    	// ابزار در حالت ویرایش
    	//
    
    	function insertTags(pre, post, peri) {
    		if ($('#wpTextbox1').length) {
    			$('#wpTextbox1').textSelection(
    				'encapsulateSelection', { pre: pre, peri: peri, post: post }
    			);
    		}
    	}
    
    	/**
    	 * Adds edit summary
    	 */
    	function addEditSummary(summaryText, replaceSummary) {
    		var summary = $('input#wpSummary, #wpSummary > input'),
    			summaryPrefix = '',
    			pos;
    		if (mw.util.getParamValue('section') === 'new' ||
    				summaryText === '' || summary.length === 0) {
    			return;
    		}
    		if (summary.val().includes('*/ ')) {
    			pos = summary.val().indexOf('*/ ');
    			summaryPrefix = summary.val().substr(0, pos + 3);
    		}
    		if (replaceSummary) {
    			summary.val(summaryPrefix + summaryText);
    		} else {
    			if (summary.val() === summaryPrefix) {
    				summary.val(summary.val() + summaryText);
    			} else {
    				if (!summary.val().includes(summaryText)) { // do not repeat in edit summary
    					summary.val(summary.val() + '، ' + summaryText);
    				}
    			}
    		}
    	}
    
    	/**
    	 * Makes a simple button from parameters
    	 */
    	function buttonGenerator(callback, summaryText, replaceSummary, image, title, alt, idSuffix) {
    		function clickCallback(e) {
    			e.preventDefault();
    			callback();
    			addEditSummary(summaryText, replaceSummary);
    		}
    		var img = $('<img>').on('error', function () {
    			img.replaceWith($('<span>', {
    				class: 'mw-ui-button mw-ui-small mw-ui-constructive',
    				text: alt,
    				style: 'padding: 0;'
    			}));
    		}).attr({
    			src: image,
    			title: title,
    			alt: alt
    		});
    		var button = $('<span>', {
    			id: 'persian-wiki-tools-' + idSuffix
    		}).click(clickCallback).append(img);
    		return button[0];
    	}
    
    	/**
    	 * Applies the string functions defined below to the
    	 * selected text in the edit box. If no text is selected, applies
    	 * the function to the whole contents of edit box.
    	 */
    	function applyOnSelection(callback) {
    		var txtarea, range, startPos, endPos, selText;
    		if (document.getElementById('editform') || $('.ns-446').length) {
    			txtarea = document.getElementById('wpTextbox1');
    		} else if ($('[name=wpNewTitleMain]')[0]) {
    			txtarea = $('[name=wpNewTitleMain]')[0];
    		} else {
    			return;
    		}
    		if (document.selection && document.selection.createRange) { // IE/Opera
    			// get current selection	
    			txtarea.focus();
    			range = document.selection.createRange();
    			selText = range.text;
    			if (selText) {
    				range.text = callback(selText);
    				range.select();
    			} else {
    				txtarea.value = callback(txtarea.value);
    			}
    		} else if (txtarea.selectionStart || txtarea.selectionStart === 0) { // Mozilla
    			// get current selection
    			txtarea.focus();
    			startPos = txtarea.selectionStart;
    			endPos = txtarea.selectionEnd;
    			selText = txtarea.value.substring(startPos, endPos);
    			// insert tags
    			if (selText) {
    				txtarea.value = txtarea.value.substring(0, startPos) + callback(selText) + txtarea.value.substring(endPos, txtarea.value.length);
    				txtarea.selectionStart = startPos + selText.length;
    				txtarea.selectionEnd = txtarea.selectionStart;
    			} else {
    				txtarea.value = callback(txtarea.value);
    			}
    		}
    	}
    
    	var tools = {};
    
    	// Buttons that FIX wikitext
    	/* ی ک 
    	tools.ykArabic = buttonGenerator(
    		function () {
    			applyOnSelection(persianTools.toStandardPersianCharacters);
    		},
    		'اصلاح نویسه\u200cهای عربی',
    		false,
    		'//upload.wikimedia.org/wikipedia/commons/8/88/Button_YehKeh.png',
    		'اصلاح ی و ک',
    		'ی و ک',
    		'YehKeh'
    	);
    */
    	/* فاصلهٔ مجازی
    	tools.zwnj = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.wikiApplyZwnj);
    		},
    		'اصلاح فاصلهٔ مجازی',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_ZWNJ.png',
    		'فاصلهٔ مجازی',
    		'فاصلهٔ مجازی',
    		'ZWNJ'
    	);
     */
    	/* اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد 
    	tools.applyOrthography = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.wikiApplyOrthography);
    		},
    		'اصلاح نویسه',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/9/94/Button_non_standard.png',
    		'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
    		'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
    		'apply-orthography'
    	);
    */
    	/* اصلاح ارقام
    	tools.dig = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.wikiTextDigitsToPersian);
    		},
    		'اصلاح ارقام',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png',
    		'اصلاح ارقام',
    		'ارقام',
    		'numbers'
    	); */
    
    	/* اصلاح ارقام مخصوص صفحه انتقال */
    	tools.digMove = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters);
    		},
    		'اصلاح ارقام',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png',
    		'اصلاح ارقام',
    		'ارقام',
    		'numbers'
    	);
    	
    	//عدم تغییر در متن بحث‌ها، سیاست‌ها در فضاهای نام دیگر
    	/*if (mw.config.get('wgNamespaceNumber') === 0) {
    		 برداشتن پیوند تاریخ‌ها 
    		tools.fixBadLinks = buttonGenerator(
    			function () {
    				applyOnSelection(persianWikiTools.fixBadLinks);
    			},
    			'[[وپ:پیوند سال|حذف پیوند تاریخ‌ها]]',
    			false,
    			'//upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_link_remove.png',
    			'حذف پیوند تاریخ‌ها',
    			'پیوند تاریخ‌ها',
    			'datelinks'
    		);
    	}*/
    
    	/* یونیکد نشانی وب */
    	tools.urlFix = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.wikiUrlMinifier);
    		},
    		'اصلاح نشانی وب',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/b/ba/Button_decode_URI.png',
    		'یونی\u200cکدسازی نشانی\u200cها',
    		'یونی\u200cکدسازی',
    		'decode-URI'
    	);
    
    	/* اصلاح علامت @ */
    	tools.atSignFix = buttonGenerator(
    		function () {
    			applyOnSelection(function (text) {
    				return text.replace(/(\S+?)@(\S+?)/g, '$1{' + '{at}}$2');
    			});
    		},
    		'اصلاح @',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/7/7f/Button_at_sign.png',
    		'اصلاح علامت @',
    		'@',
    		'at-sign'
    	);
    
    	/* ابرابزار */
    	tools.superTool = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.superTool);
    		},
    		'ابرابزار',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png',
    		'ابرابزار',
    		'ابرابزار',
    		'super-tool'
    	);
    
    	/* ابزار املا */
    	tools.dictation = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.wikiDictation);
    		},
    		'اصلاح املا',
    		false,
    		'//upload.wikimedia.org/wikipedia/commons/a/a3/Button_Dictation-fa.png',
    		'املا',
    		'املا',
    		'dictation'
    	);
    
    	/* ابرابزار مخصوص صفحه انتقال */
    	tools.superToolMove = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.superToolMove);
    		},
    		'ابرابزار',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png',
    		'ابرابزار',
    		'ابرابزار',
    		'super-tool'
    	);
    
    	/* اصلاحات قراردادن نقطه
    	tools.punc = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.wikiPunctuation);
    		},
    		'اصلاح سجاوندی',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/e/ed/Button_punctuation.png',
    		'نقطه\u200cگذاری',
    		'نقطه\u200cگذاری',
    		'punctuation'
    	); */
    
    	// Buttons that add tags
    	/* برچسب ویکی\u200cسازی 
    	tools.wikify = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('{' + '{ویکی\u200cسازی}}\n' + $('#wpTextbox1').val());
    		},
    		'برچسب ویکی\u200cسازی',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/3/38/Button_wikify.png',
    		'برچسب ویکی\u200cسازی',
    		'ویکی\u200cسازی',
    		'wikify'
    	);
    */
    	/* بدون منبع 
    	tools.noSource = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('{' + '{بدون منبع}}\n' + $('#wpTextbox1').val());
    		},
    		'برچسب منبع',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/8/8a/Button_no_source_fa.png',
    		'برچسب بدون منبع',
    		'بدون منبع',
    		'no-source'
    	);
    */
    	/* حذف سریع 
    	tools.speedyDel = buttonGenerator(
    		function () {
    			var temp = $('#wpTextbox1').val();
    			$('#wpTextbox1').val('');
    			insertTags('{' + '{' + 'حذف سریع|', '}}\n' + temp, 'معیار');
    		},
    		'حذف سریع',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/1/13/Button_delete.png',
    		'برچسب حذف سریع',
    		'حذف سریع',
    		'delete-vote'
    	);
    */
    	/* حذف زماندار 
    	tools.prod = buttonGenerator(
    		function () {
    			var temp = $('#wpTextbox1').val();
    			$('#wpTextbox1').val('');
    			insertTags('{' + '{' + 'جا:حذف زمان\u200cدار|', '}}\n' + temp, 'معیار');
    		},
    		'حذف زمان\u200cدار',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/3/3f/Button_attendre.png',
    		'برچسب حذف زمان\u200cدار',
    		'حذف زمان\u200cدار',
    		'attendre'
    	);
    */
    	/* منبع تصویر نامعلوم 
    	tools.picSource = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('{' + '{' + 'جا:منبع تصویر نامعلوم' + '}}\n' + $('#wpTextbox1').val());
    		},
    		'برچسب منبع',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/5/59/Button_image_source.png',
    		'برچسب منبع تصویر نامعلوم',
    		'منبع تصویر نامعلوم',
    		'image-source'
    	);
    */
    	/* حق تکثیر تصویر نامعلوم 
    	tools.picCopy = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('{' + '{' + 'جا:حق تکثیر تصویر نامعلوم}}\n' + $('#wpTextbox1').val());
    		},
    		'برچسب حق تکثیر',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/7/7e/Button_image_copyright.png',
    		'برچسب حق تکثیر تصویر نامعلوم',
    		'حق تکثیر تصویر نامعلوم',
    		'image-copyright'
    	);
    */
    	/* تمیزکاری 
    	tools.cleanup = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('{' + '{تمیزکاری}}\n' + $('#wpTextbox1').val());
    		},
    		'برچسب تمیزکاری',
    		false,
    		'//upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png',
    		'برچسب تمیزکاری',
    		'تمیزکاری',
    		'broom'
    	);
    */
    	/* اخطار نگاره 
    	tools.imgWarn = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('');
    			insertTags(
    				'{' + '{' + 'جا:اخطار نگاره|',
    				'}}',
    				'نگاره'
    			);
    		},
    		'برچسب نگاره',
    		false,
    		'//upload.wikimedia.org/wikipedia/commons/e/ec/Button_aviso.png',
    		'اخطار نگاره',
    		'اخطار نگاره',
    		'aviso'
    	);
    */
    	/* حق تکثیر مشکوک 
    	tools.sus = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('{' + '{حق تکثیر مشکوک}}\n' + $('#wpTextbox1').val());
    		},
    		'برچسب حق تکثیر',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/c/c7/Button_Sus.png',
    		'برچسب حق تکثیر مشکوک',
    		'حق تکثیر مشکوک',
    		'sus'
    	);
    */
    	/* نقض حق تکثیر 
    	tools.copyR = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('');
    			insertTags(
    				'{' + '{' + 'جا:نقض حق تکثیر|url=',
    				'}}',
    				'نشانی ایرنتنتی'
    			);
    		},
    		'برچسب حق تکثیر',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/6/6f/Button_CopyR.png',
    		'برچسب نقض حق تکثیر',
    		'نقض حق تکثیر',
    		'copyr'
    	);
    */
    	/* لحن نامناسب 
    	tools.tone = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('{' + '{لحن نامناسب}}\n' + $('#wpTextbox1').val());
    		},
    		'برچسب لحن',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/f/fc/Button_Tone.png',
    		'برچسب لحن نامناسب',
    		'لحن',
    		'tone'
    	);
    */
    	// Buttons that help with wiki writing
    	/* تغییر جهت */
    	tools.toggleDirection = buttonGenerator(
    		function () {
    			$('#wpTextbox1, [name=wpNewTitleMain], .ace_editor').css({
    				'text-align': 'start',
    				'direction': $('#wpTextbox1, [name=wpNewTitleMain]').css('direction') === 'rtl' ? 'ltr' : 'rtl'
    			});
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_toggle_dir.png',
    		'تغییر جهت جعبهٔ ویرایش',
    		'تغییرجهت',
    		'toggle-dir'
    	);
    	
    	tools.putSelectionInBDI = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.putSelectionInBDI);
    		},
    		'جداسازی دوجهته',
    		false,
    		'//upload.wikimedia.org/wikipedia/commons/3/31/Button_bdi_tag.png',
    		'جداسازی دوجهته',
    		'دوجهته',
    		'put-in-bdi'
    	);
    	
    	/* پیوند درونی */
    	tools.wikiLink = buttonGenerator(
    		function () {
    			insertTags('[[', ']]', 'مقاله');
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_in_wikify.png',
    		'پیوند',
    		'پیوند',
    		'wikify'
    	);
    
    	/* متن خطخورده */
    	tools.strikeTextButton = buttonGenerator(
    		function () {
    			insertTags('<s>', '</s>', 'متن خط خورده');
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png',
    		'متن خط\u200cخورده',
    		'متن خط\u200cخورده',
    		'strike'
    	);
    
    	/* توضیح 
    	tools.commentButton = buttonGenerator(
    		function () {
    			insertTags('<!--', '-->', 'توضیح');
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/3/34/Button_hide_comment.png',
    		'توضیح',
    		'توضیح',
    		'hide-comment'
    	);
    */
    	/* ملزومات مقاله 
    	tools.addEssentialThings = buttonGenerator(
    		function () {
    			insertTags('== جستارهای وابسته ==\n\n== منابع ==\n{' + '{پانویس}}', '', '');
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/e/ef/Add_note.jpg',
    		'ملزومات مقاله',
    		'ملزومات مقاله',
    		'add-note'
    	);*/
    	/* خوشامدید 
    	tools.welcome = buttonGenerator(
    		function () {
    			insertTags(
    				'{' + '{' + 'جا:خوشامد|~~' + '~~}}',
    				'',
    				''
    			);
    		},
    		'خوشامدگویی',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/4/4a/Smilies_Alien_cool.png',
    		'خوشامدگویی',
    		'خوشامد',
    		'alien-cool'
    	);*/
    	/* چپچین */
    	tools.chapChin = buttonGenerator(
    		function () {
    			insertTags(
    				'{' + '{چپ\u200cچین}}\n',
    				'\n{' + '{پایان چپ\u200cچین}}',
    				'متن چپ\u200cچین\u200cشده'
    			);
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/e/ea/Button_align_left.png',
    		'چپ\u200cچین\u200cکردن متن',
    		'چپ\u200cچین',
    		'align-left'
    	);
    
    	/* اندیس بالا 
    	tools.upperText = buttonGenerator(
    		function () {
    			insertTags('<sup>', '</sup>', 'اندیس');
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/6/6a/Button_sup_letter.png',
    		'اندیس بالا',
    		'اندیس بالا',
    		'upper-letter'
    	);
    */
    	/* اندیس پایین 
    	tools.lowerText = buttonGenerator(
    		function () {
    			insertTags('<sub>', '</sub>', 'اندیس');
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/a/aa/Button_sub_letter.png',
    		'اندیس پایین',
    		'اندیس پایین',
    		'lower-letter'
    	);
    */
    	/* تغییرمسیر 
    	tools.redirectButton = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val('');
    			insertTags(
    				'#تغییرمسیر [[',
    				']]',
    				'پیوند'
    			);
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png',
    		'تغییرمسیر',
    		'تغییرمسیر',
    		'redirect'
    	);
    */
    	/* سال میلادی */
    	tools.gregYear = buttonGenerator(
    		function () {
    			insertTags(
    				'[[',
    				' (میلادی)|]]',
    				'سال'
    			);
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/fa/a/a7/Button_cal.png',
    		'سال میلادی',
    		'میلادی',
    		'cal'
    	);
    
    	/* مرتبسازی */
    	tools.sortText = buttonGenerator(
    		function () {
    			applyOnSelection(function (text) {
    				return persianTools.persianSort(text.split('\n')).join('\n');
    			});
    		},
    		'',
    		true,
    		'//upload.wikimedia.org/wikipedia/fa/3/33/Button_sort.png',
    		'مرتب\u200cسازی بر اساس الفبا',
    		'مرتب\u200cسازی',
    		'sort'
    	);
    
    	/* شد! 
    	tools.shod = buttonGenerator(
    		function () {
    			$('#wpTextbox1').val($('#wpTextbox1').val().trimRight() + '\n:{' + '{شد}} ~~' + '~~');
    		},
    		'شد',
    		true,
    		'//upload.wikimedia.org/wikipedia/commons/5/5b/Button_check.png',
    		'شد',
    		'شد',
    		'check'
    	);*/
    	/* عدد انگلیسی */
    	tools.toEnNumRobust = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.robustToEnglishDigits);
    		},
    		'عدد انگلیسی',
    		false,
    		'//upload.wikimedia.org/wikipedia/commons/f/f5/Button_enNum.png',
    		'عدد انگلیسی',
    		'عدد انگلیسی',
    		'ToEnNumberRobust'
    	);
    	/* حذف ویکی‌سازی 
    	tools.removeWiki = buttonGenerator(
    		function () {
    			applyOnSelection(persianWikiTools.removeWikiSigne);
    		},
    		'حذف ویکی‌سازی',
    		false,
    		'//upload.wikimedia.org/wikipedia/fa/8/88/Button_NoWiki.png',
    		'حذف ویکی‌سازی',
    		'حذف ویکی‌سازی',
    		'removeWiki'
    	);*/
    	$(function () {
    		if (typeof Array.prototype.includes !== 'function') {
    			mw.log.error('Script not supported by browser.');
    			return;
    		}
    		// کد مناسب ویرایشگر جدید متنی
    		/*mw.hook('ve.activationComplete').add(function () {
    			var surface = ve.init.target.getSurface();
    			if (surface.getMode() === 'source') {
    				$('#firstHeading').append($('<img>', { src: '//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png' }).click(function () {
    					$('.ve-ce-contentBranchNode').get().forEach(function (x) {
    						x.innerText = persianWikiTools.superTool(x.innerText);
    					});
    				}));
    			}
    		});*/
    
    		var extraEditButtons = [],
    			extraMoveButtons = [],
    			space = ' ';
    
    		extraEditButtons = extraEditButtons.concat(tools.toggleDirection, tools.putSelectionInBDI, space, tools.ykArabic, tools.zwnj, tools.applyOrthography,
    			tools.dig, tools.punc, tools.dictation, tools.superTool, space, tools.urlFix, tools.fixBadLinks, space, tools.welcome,
    			tools.addEssentialThings, tools.noSource, tools.sus, tools.tone, tools.wikify,
    			tools.shod, tools.cleanup, tools.speedyDel, tools.prod, space, tools.redirectButton,
    			tools.gregYear, tools.strikeTextButton, tools.chapChin, tools.commentButton, space, tools.sortText, space, tools.picCopy, tools.picSource, space, tools.toEnNumRobust);
    		var userGroups = mw.config.get('wgUserGroups', []);
    		// شرط برای کاربری که گشت خودکار دارد
    		// ابزار حذف الگوهای ناموجود
    		if (userGroups.includes('autopatrolled') ||
    				userGroups.includes('eliminator') ||
    				userGroups.includes('sysop')) {
    			extraEditButtons = extraEditButtons.concat(tools.removeWiki);
    		}
    		extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []);
    
    		extraMoveButtons = extraMoveButtons.concat(tools.superToolMove, space, tools.toggleDirection, space,
    			tools.ykArabic, tools.zwnj, tools.applyOrthography, tools.digMove, tools.punc, space, tools.dictation);
    
    		$('#persian-wiki-tools').remove();
    		if ($('#wpTextbox1').length) {
    			$('<div>', {
    				id: 'persian-wiki-tools',
    				dir: 'rtl',
    				style: 'float:right;'
    			}).append(extraEditButtons).insertBefore('#wpTextbox1');
    		} else if ($('#movepage').length) {
    			$('<span>', {
    				id: 'persian-wiki-tools'
    			}).append(extraMoveButtons).insertAfter('#wpNewTitle');
    		}
    	});
    }(jQuery, mediaWiki));