پرش به محتوا

مدیاویکی:Gadget-Extra-Editbuttons.js: تفاوت میان نسخه‌ها

از سورسکال
ایجاد اسکریپت
 
اصلاح پیوندها
 
(۶ نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد)
خط ۱۳: خط ۱۳:
(function ($, mw) {
(function ($, mw) {
'use strict';
'use strict';
function getEditorContents() {
return $('#wpTextbox1').textSelection('getContents');
}
function setEditorContents(value) {
$('#wpTextbox1').textSelection('setContents', value);
}
function insertTags(pre, post, sample) {
$('#wpTextbox1').textSelection('encapsulateSelection', {
pre: pre || '',
peri: sample || '',
post: post || ''
});
}


// ابزار در حالت نمایش
// ابزار در حالت نمایش
خط ۱۰۱: خط ۱۱۸:
mw.notify('ویرایش با موفقیت انجام پذیرفت');
mw.notify('ویرایش با موفقیت انجام پذیرفت');
// Loading diff page
// Loading diff page
window.location = new mw.Uri(mw.config.get('wgScript')).extend({
var diffUrl = new URL(
title: mw.config.get('wgPageName'),
    mw.config.get('wgScript'),
diff: data.edit.newrevid
    window.location.href
});
);
diffUrl.searchParams.set('title', mw.config.get('wgPageName'));
diffUrl.searchParams.set('diff', data.edit.newrevid);
window.location = diffUrl.href;
}
}
} else {
} else {
خط ۱۸۸: خط ۲۰۸:
*/
*/
function applyOnSelection(callback) {
function applyOnSelection(callback) {
var txtarea, range, startPos, endPos, selText;
var $editor, txtarea, range, startPos, endPos, selText, replacement;
 
if (document.getElementById('editform') || $('.ns-446').length) {
if (document.getElementById('editform') || $('.ns-446').length) {
txtarea = document.getElementById('wpTextbox1');
$editor = $('#wpTextbox1');
} else if ($('[name=wpNewTitleMain]')[0]) {
if (!$editor.length) {
txtarea = $('[name=wpNewTitleMain]')[0];
return;
} else {
}
 
selText = $editor.textSelection('getSelection');
if (selText) {
$editor.textSelection('replaceSelection', callback(selText));
} else {
$editor.textSelection(
'setContents',
callback($editor.textSelection('getContents'))
);
}
return;
return;
}
}
txtarea = $('[name=wpNewTitleMain]')[0];
if (!txtarea) return;
if (document.selection && document.selection.createRange) { // IE/Opera
if (document.selection && document.selection.createRange) { // IE/Opera
// get current selection
txtarea.focus();
txtarea.focus();
range = document.selection.createRange();
range = document.selection.createRange();
خط ۲۰۷: خط ۲۴۱:
txtarea.value = callback(txtarea.value);
txtarea.value = callback(txtarea.value);
}
}
} else if (txtarea.selectionStart || txtarea.selectionStart === 0) { // Mozilla
} else if (
// get current selection
typeof txtarea.selectionStart === 'number' &&
typeof txtarea.selectionEnd === 'number'
) {
txtarea.focus();
txtarea.focus();
startPos = txtarea.selectionStart;
startPos = txtarea.selectionStart;
endPos = txtarea.selectionEnd;
endPos = txtarea.selectionEnd;
selText = txtarea.value.substring(startPos, endPos);
selText = txtarea.value.substring(startPos, endPos);
// insert tags
 
if (selText) {
if (selText) {
txtarea.value = txtarea.value.substring(0, startPos) + callback(selText) + txtarea.value.substring(endPos, txtarea.value.length);
replacement = callback(selText);
txtarea.selectionStart = startPos + selText.length;
txtarea.value =
txtarea.value.substring(0, startPos) +
replacement +
txtarea.value.substring(endPos);
txtarea.selectionStart = startPos + replacement.length;
txtarea.selectionEnd = txtarea.selectionStart;
txtarea.selectionEnd = txtarea.selectionStart;
} else {
} else {
txtarea.value = callback(txtarea.value);
txtarea.value = callback(txtarea.value);
}
}
} else {
txtarea.value = callback(txtarea.value);
}
}
}
}
خط ۲۳۴: خط ۲۷۶:
'اصلاح نویسه\u200cهای عربی',
'اصلاح نویسه\u200cهای عربی',
false,
false,
'//upload.wikimedia.org/wikipedia/commons/8/88/Button_YehKeh.png',
'//commons.islamical.org/w/images/8/88/Button_YehKeh.png',
'اصلاح ی و ک',
'اصلاح ی و ک',
'ی و ک',
'ی و ک',
خط ۲۴۷: خط ۲۸۹:
'اصلاح فاصلهٔ مجازی',
'اصلاح فاصلهٔ مجازی',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_ZWNJ.png',
'//commons.islamical.org/w/images/d/d0/Button_ZWNJ.png',
'فاصلهٔ مجازی',
'فاصلهٔ مجازی',
'فاصلهٔ مجازی',
'فاصلهٔ مجازی',
خط ۲۶۰: خط ۳۰۲:
'اصلاح نویسه',
'اصلاح نویسه',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/9/94/Button_non_standard.png',
'//commons.islamical.org/w/images/9/94/Button_non_standard.png',
'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
خط ۲۷۳: خط ۳۱۵:
'اصلاح ارقام',
'اصلاح ارقام',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png',
'//commons.islamical.org/w/images/4/4a/Button_numbers.png',
'اصلاح ارقام',
'اصلاح ارقام',
'ارقام',
'ارقام',
خط ۲۸۶: خط ۳۲۸:
'اصلاح ارقام',
'اصلاح ارقام',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png',
'//commons.islamical.org/w/images/4/4a/Button_numbers.png',
'اصلاح ارقام',
'اصلاح ارقام',
'ارقام',
'ارقام',
خط ۳۰۱: خط ۳۴۳:
'حذف پیوند تاریخ‌ها',
'حذف پیوند تاریخ‌ها',
false,
false,
'//upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_link_remove.png',
'//commons.islamical.org/w/images/1/11/Btn_toolbar_link_remove.png',
'حذف پیوند تاریخ‌ها',
'حذف پیوند تاریخ‌ها',
'پیوند تاریخ‌ها',
'پیوند تاریخ‌ها',
خط ۳۱۵: خط ۳۵۷:
'اصلاح نشانی وب',
'اصلاح نشانی وب',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/b/ba/Button_decode_URI.png',
'//commons.islamical.org/w/images/b/ba/Button_decode_URI.png',
'یونی\u200cکدسازی نشانی\u200cها',
'یونی\u200cکدسازی نشانی\u200cها',
'یونی\u200cکدسازی',
'یونی\u200cکدسازی',
خط ۳۳۰: خط ۳۷۲:
'اصلاح @',
'اصلاح @',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/7/7f/Button_at_sign.png',
'//commons.islamical.org/w/images/7/7f/Button_at_sign.png',
'اصلاح علامت @',
'اصلاح علامت @',
'@',
'@',
خط ۳۴۳: خط ۳۸۵:
'ابرابزار',
'ابرابزار',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png',
'//commons.islamical.org/w/images/f/fc/Button_super_tool.png',
'ابرابزار',
'ابرابزار',
'ابرابزار',
'ابرابزار',
خط ۳۵۶: خط ۳۹۸:
'اصلاح املا',
'اصلاح املا',
false,
false,
'//upload.wikimedia.org/wikipedia/commons/a/a3/Button_Dictation-fa.png',
'//commons.islamical.org/w/images/a/a3/Button_Dictation-fa.png',
'املا',
'املا',
'املا',
'املا',
خط ۳۶۹: خط ۴۱۱:
'ابرابزار',
'ابرابزار',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png',
'//commons.islamical.org/w/images/f/fc/Button_super_tool.png',
'ابرابزار',
'ابرابزار',
'ابرابزار',
'ابرابزار',
خط ۳۸۲: خط ۴۲۴:
'اصلاح سجاوندی',
'اصلاح سجاوندی',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/e/ed/Button_punctuation.png',
'//commons.islamical.org/w/images/e/ed/Button_punctuation.png',
'نقطه\u200cگذاری',
'نقطه\u200cگذاری',
'نقطه\u200cگذاری',
'نقطه\u200cگذاری',
خط ۳۹۲: خط ۴۳۴:
tools.wikify = buttonGenerator(
tools.wikify = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('{{ویکی\u200cسازی}}\n' + $('#wpTextbox1').val());
setEditorContents('{{ویکی\u200cسازی}}\n' + getEditorContents());
},
},
'برچسب ویکی\u200cسازی',
'برچسب ویکی\u200cسازی',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/3/38/Button_wikify.png',
'//commons.islamical.org/w/images/3/38/Button_wikify.png',
'برچسب ویکی\u200cسازی',
'برچسب ویکی\u200cسازی',
'ویکی\u200cسازی',
'ویکی\u200cسازی',
خط ۴۰۵: خط ۴۴۷:
tools.noSource = buttonGenerator(
tools.noSource = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('{{بدون منبع}}\n' + $('#wpTextbox1').val());
setEditorContents('{{بدون منبع}}\n' + getEditorContents());
},
},
'برچسب منبع',
'برچسب منبع',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/8/8a/Button_no_source_fa.png',
'//commons.islamical.org/w/images/8/8a/Button_no_source_fa.png',
'برچسب بدون منبع',
'برچسب بدون منبع',
'بدون منبع',
'بدون منبع',
خط ۴۱۸: خط ۴۶۰:
tools.speedyDel = buttonGenerator(
tools.speedyDel = buttonGenerator(
function () {
function () {
var temp = $('#wpTextbox1').val();
var temp = getEditorContents();
$('#wpTextbox1').val('');
setEditorContents('');
mw.toolbar.insertTags('{{' + 'حذف سریع|', '}}\n' + temp, 'معیار');
insertTags('{{' + 'حذف سریع|', '}}\n' + temp, 'معیار');
},
},
'حذف سریع',
'حذف سریع',
true,
true,
'//upload.wikimedia.org/wikipedia/fa/c/c1/Button_delete_vote.png',
'//commons.islamical.org/w/images/c/c1/Button_delete_vote.png',
'برچسب حذف سریع',
'برچسب حذف سریع',
'حذف سریع',
'حذف سریع',
خط ۴۳۳: خط ۴۷۵:
tools.prod = buttonGenerator(
tools.prod = buttonGenerator(
function () {
function () {
var temp = $('#wpTextbox1').val();
var temp = getEditorContents();
$('#wpTextbox1').val('');
setEditorContents('');
mw.toolbar.insertTags('{{' + 'جا:حذف زمان\u200cدار|', '}}\n' + temp, 'معیار');
insertTags('{{' + 'جا:حذف زمان\u200cدار|', '}}\n' + temp, 'معیار');
},
},
'حذف زمان\u200cدار',
'حذف زمان\u200cدار',
true,
true,
'//upload.wikimedia.org/wikipedia/commons/3/3f/Button_attendre.png',
'//commons.islamical.org/w/images/3/3f/Button_attendre.png',
'برچسب حذف زمان\u200cدار',
'برچسب حذف زمان\u200cدار',
'حذف زمان\u200cدار',
'حذف زمان\u200cدار',
خط ۴۴۸: خط ۴۹۰:
tools.picSource = buttonGenerator(
tools.picSource = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('{{' + 'جا:منبع تصویر نامعلوم' + '}}\n' + $('#wpTextbox1').val());
setEditorContents('{{' + 'جا:منبع تصویر نامعلوم' + '}}\n' + getEditorContents());
},
},
'برچسب منبع',
'برچسب منبع',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/5/59/Button_image_source.png',
'//commons.islamical.org/w/images/5/59/Button_image_source.png',
'برچسب منبع تصویر نامعلوم',
'برچسب منبع تصویر نامعلوم',
'منبع تصویر نامعلوم',
'منبع تصویر نامعلوم',
خط ۴۶۱: خط ۵۰۳:
tools.picCopy = buttonGenerator(
tools.picCopy = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('{{' + 'جا:حق تکثیر تصویر نامعلوم}}\n' + $('#wpTextbox1').val());
setEditorContents('{{' + 'جا:حق تکثیر تصویر نامعلوم}}\n' + getEditorContents());
},
},
'برچسب حق تکثیر',
'برچسب حق تکثیر',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/7/7e/Button_image_copyright.png',
'//commons.islamical.org/w/images/7/7e/Button_image_copyright.png',
'برچسب حق تکثیر تصویر نامعلوم',
'برچسب حق تکثیر تصویر نامعلوم',
'حق تکثیر تصویر نامعلوم',
'حق تکثیر تصویر نامعلوم',
خط ۴۷۴: خط ۵۱۶:
tools.cleanup = buttonGenerator(
tools.cleanup = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('{{تمیزکاری}}\n' + $('#wpTextbox1').val());
setEditorContents('{{تمیزکاری}}\n' + getEditorContents());
},
},
'برچسب تمیزکاری',
'برچسب تمیزکاری',
false,
false,
'//upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png',
'//commons.islamical.org/w/images/2/2e/Button_broom.png',
'برچسب تمیزکاری',
'برچسب تمیزکاری',
'تمیزکاری',
'تمیزکاری',
خط ۴۸۷: خط ۵۲۹:
tools.imgWarn = buttonGenerator(
tools.imgWarn = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('');
setEditorContents('');
mw.toolbar.insertTags(
insertTags(
'{{' + 'جا:اخطار نگاره|',
'{{' + 'جا:اخطار نگاره|',
'}}',
'}}',
خط ۴۹۶: خط ۵۳۸:
'برچسب نگاره',
'برچسب نگاره',
false,
false,
'//upload.wikimedia.org/wikipedia/commons/e/ec/Button_aviso.png',
'//commons.islamical.org/w/images/e/ec/Button_aviso.png',
'اخطار نگاره',
'اخطار نگاره',
'اخطار نگاره',
'اخطار نگاره',
خط ۵۰۵: خط ۵۴۷:
tools.sus = buttonGenerator(
tools.sus = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('{{حق تکثیر مشکوک}}\n' + $('#wpTextbox1').val());
setEditorContents('{{حق تکثیر مشکوک}}\n' + getEditorContents());
},
},
'برچسب حق تکثیر',
'برچسب حق تکثیر',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/c/c7/Button_Sus.png',
'//commons.islamical.org/w/images/c/c7/Button_Sus.png',
'برچسب حق تکثیر مشکوک',
'برچسب حق تکثیر مشکوک',
'حق تکثیر مشکوک',
'حق تکثیر مشکوک',
خط ۵۱۸: خط ۵۶۰:
tools.copyR = buttonGenerator(
tools.copyR = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('');
setEditorContents('');
mw.toolbar.insertTags(
insertTags(
'{{' + 'جا:نقض حق تکثیر|url=',
'{{' + 'جا:نقض حق تکثیر|url=',
'}}',
'}}',
خط ۵۲۷: خط ۵۶۹:
'برچسب حق تکثیر',
'برچسب حق تکثیر',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/6/6f/Button_CopyR.png',
'//commons.islamical.org/w/images/6/6f/Button_CopyR.png',
'برچسب نقض حق تکثیر',
'برچسب نقض حق تکثیر',
'نقض حق تکثیر',
'نقض حق تکثیر',
خط ۵۳۶: خط ۵۷۸:
tools.tone = buttonGenerator(
tools.tone = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('{{لحن نامناسب}}\n' + $('#wpTextbox1').val());
setEditorContents('{{لحن نامناسب}}\n' + getEditorContents());
},
},
'برچسب لحن',
'برچسب لحن',
false,
false,
'//upload.wikimedia.org/wikipedia/fa/f/fc/Button_Tone.png',
'//commons.islamical.org/w/images/f/fc/Button_Tone.png',
'برچسب لحن نامناسب',
'برچسب لحن نامناسب',
'لحن',
'لحن',
خط ۵۵۰: خط ۵۹۲:
tools.toggleDirection = buttonGenerator(
tools.toggleDirection = buttonGenerator(
function () {
function () {
$('#wpTextbox1, [name=wpNewTitleMain], .ace_editor').css({
var $targets = $(
'#wpTextbox1, [name=wpNewTitleMain], .ace_editor, ' +
'.cm-editor, .cm-editor .cm-content'
);
var $active = $(
'.cm-editor .cm-content:visible, #wpTextbox1:visible, ' +
'[name=wpNewTitleMain]:visible, .ace_editor:visible'
).first();
 
if (!$active.length) {
$active = $targets.first();
}
 
var direction = $active.css('direction') === 'rtl' ? 'ltr' : 'rtl';
$targets.css({
'text-align': 'start',
'text-align': 'start',
'direction': $('#wpTextbox1, [name=wpNewTitleMain]').css('direction') === 'rtl' ? 'ltr' : 'rtl'
'direction': direction
});
});
},
},
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_toggle_dir.png',
'//commons.islamical.org/w/images/d/d0/Button_toggle_dir.png',
'تغییر جهت جعبهٔ ویرایش',
'تغییر جهت جعبهٔ ویرایش',
'تغییرجهت',
'تغییرجهت',
'toggle-dir'
'toggle-dir'
);
);
/* پیوند درونی */
/* پیوند درونی */
tools.wikiLink = buttonGenerator(
tools.wikiLink = buttonGenerator(
function () {
function () {
mw.toolbar.insertTags('[[', ']]', 'مقاله');
insertTags('[[', ']]', 'مقاله');
},
},
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_in_wikify.png',
'//commons.islamical.org/w/images/d/d0/Button_in_wikify.png',
'پیوند',
'پیوند',
'پیوند',
'پیوند',
خط ۵۷۹: خط ۶۳۴:
tools.strikeTextButton = buttonGenerator(
tools.strikeTextButton = buttonGenerator(
function () {
function () {
mw.toolbar.insertTags('<s>', '</s>', 'متن خط خورده');
insertTags('<s>', '</s>', 'متن خط خورده');
},
},
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png',
'//commons.islamical.org/w/images/c/c9/Button_strike.png',
'متن خط\u200cخورده',
'متن خط\u200cخورده',
'متن خط\u200cخورده',
'متن خط\u200cخورده',
خط ۵۹۲: خط ۶۴۷:
tools.commentButton = buttonGenerator(
tools.commentButton = buttonGenerator(
function () {
function () {
mw.toolbar.insertTags('<!--', '-->', 'توضیح');
insertTags('<!--', '-->', 'توضیح');
},
},
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/commons/3/34/Button_hide_comment.png',
'//commons.islamical.org/w/images/3/34/Button_hide_comment.png',
'توضیح',
'توضیح',
'توضیح',
'توضیح',
خط ۶۰۵: خط ۶۶۰:
tools.addEssentialThings = buttonGenerator(
tools.addEssentialThings = buttonGenerator(
function () {
function () {
mw.toolbar.insertTags('== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}', '', '');
insertTags('== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}', '', '');
},
},
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/commons/e/ef/Add_note.jpg',
'//commons.islamical.org/w/images/e/ef/Add_note.jpg',
'ملزومات مقاله',
'ملزومات مقاله',
'ملزومات مقاله',
'ملزومات مقاله',
خط ۶۱۷: خط ۶۷۲:
tools.welcome = buttonGenerator(
tools.welcome = buttonGenerator(
function () {
function () {
mw.toolbar.insertTags(
insertTags(
'{{' + 'جا:خوشامدید|~~' + '~~}}',
'{{' + 'جا:خوشامدید|~~' + '~~}}',
'',
'',
خط ۶۲۵: خط ۶۸۰:
'خوشامدگویی',
'خوشامدگویی',
true,
true,
'//upload.wikimedia.org/wikipedia/commons/4/4a/Smilies_Alien_cool.png',
'//commons.islamical.org/w/images/4/4a/Smilies_Alien_cool.png',
'خوشامدگویی',
'خوشامدگویی',
'خوشامد',
'خوشامد',
خط ۶۳۳: خط ۶۸۸:
tools.chapChin = buttonGenerator(
tools.chapChin = buttonGenerator(
function () {
function () {
mw.toolbar.insertTags(
insertTags(
'{{چپ\u200cچین}}\n',
'{{چپ\u200cچین}}\n',
'\n{{پایان چپ\u200cچین}}',
'\n{{پایان چپ\u200cچین}}',
خط ۶۴۱: خط ۶۹۶:
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/en/e/ea/Button_align_left.png',
'//commons.islamical.org/w/images/e/ea/Button_align_left.png',
'چپ\u200cچین\u200cکردن متن',
'چپ\u200cچین\u200cکردن متن',
'چپ\u200cچین',
'چپ\u200cچین',
خط ۶۵۰: خط ۷۰۵:
tools.upperText = buttonGenerator(
tools.upperText = buttonGenerator(
function () {
function () {
mw.toolbar.insertTags('<sup>', '</sup>', 'اندیس');
insertTags('<sup>', '</sup>', 'اندیس');
},
},
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png',
'//commons.islamical.org/w/images/6/6a/Button_sup_letter.png',
'اندیس بالا',
'اندیس بالا',
'اندیس بالا',
'اندیس بالا',
خط ۶۶۳: خط ۷۱۸:
tools.lowerText = buttonGenerator(
tools.lowerText = buttonGenerator(
function () {
function () {
mw.toolbar.insertTags('<sub>', '</sub>', 'اندیس');
insertTags('<sub>', '</sub>', 'اندیس');
},
},
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png',
'//commons.islamical.org/w/images/a/aa/Button_sub_letter.png',
'اندیس پایین',
'اندیس پایین',
'اندیس پایین',
'اندیس پایین',
خط ۶۷۶: خط ۷۳۱:
tools.redirectButton = buttonGenerator(
tools.redirectButton = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val('');
setEditorContents('');
mw.toolbar.insertTags(
insertTags(
'#تغییرمسیر [[',
'#تغییرمسیر [[',
']]',
']]',
خط ۶۸۵: خط ۷۴۰:
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png',
'//commons.islamical.org/w/images/c/c8/Button_redirect.png',
'تغییرمسیر',
'تغییرمسیر',
'تغییرمسیر',
'تغییرمسیر',
خط ۶۹۴: خط ۷۴۹:
tools.gregYear = buttonGenerator(
tools.gregYear = buttonGenerator(
function () {
function () {
mw.toolbar.insertTags(
insertTags(
'[[',
'[[',
' (میلادی)|]]',
' (میلادی)|]]',
خط ۷۰۲: خط ۷۵۷:
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/fa/a/a7/Button_cal.png',
'//commons.islamical.org/w/images/a/a7/Button_cal.png',
'سال میلادی',
'سال میلادی',
'میلادی',
'میلادی',
خط ۷۱۵: خط ۷۷۰:
'',
'',
true,
true,
'//upload.wikimedia.org/wikipedia/fa/3/33/Button_sort.png',
'//commons.islamical.org/w/images/3/33/Button_sort.png',
'مرتب\u200cسازی بر اساس الفبا',
'مرتب\u200cسازی بر اساس الفبا',
'مرتب\u200cسازی',
'مرتب\u200cسازی',
خط ۷۲۴: خط ۷۷۹:
tools.shod = buttonGenerator(
tools.shod = buttonGenerator(
function () {
function () {
$('#wpTextbox1').val($('#wpTextbox1').val().trimRight() + '\n:{{شد}} ~~' + '~~');
setEditorContents(getEditorContents().trimRight() + '\n:{{شد}} ~~' + '~~');
},
},
'شد',
'شد',
true,
true,
'//upload.wikimedia.org/wikipedia/commons/5/5b/Button_check.png',
'//commons.islamical.org/w/images/5/5b/Button_check.png',
'شد',
'شد',
'شد',
'شد',
خط ۷۴۰: خط ۷۹۵:
'عدد انگلیسی',
'عدد انگلیسی',
false,
false,
'//upload.wikimedia.org/wikipedia/commons/f/f5/Button_enNum.png',
'//commons.islamical.org/w/images/f/f5/Button_enNum.png',
'عدد انگلیسی',
'عدد انگلیسی',
'عدد انگلیسی',
'عدد انگلیسی',
خط ۷۵۰: خط ۸۰۵:
var surface = ve.init.target.getSurface();
var surface = ve.init.target.getSurface();
if (surface.getMode() === 'source') {
if (surface.getMode() === 'source') {
$('#firstHeading').append($('<img>', { src: '//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png' }).click(function () {
$('#firstHeading').append($('<img>', { src: '//commons.islamical.org/w/images/f/fc/Button_super_tool.png' }).click(function () {
$('.ve-ce-contentBranchNode').get().forEach(function (x) {
$('.ve-ce-contentBranchNode').get().forEach(function (x) {
x.innerText = persianWikiTools.superTool(x.innerText);
x.innerText = persianWikiTools.superTool(x.innerText);

نسخهٔ کنونی تا ۴ نوامبر ۲۰۲۶، ساعت ۲۰:۳۴

// <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 getEditorContents() {
		return $('#wpTextbox1').textSelection('getContents');
	}

	function setEditorContents(value) {
		$('#wpTextbox1').textSelection('setContents', value);
	}

	function insertTags(pre, post, sample) {
		$('#wpTextbox1').textSelection('encapsulateSelection', {
			pre: pre || '',
			peri: sample || '',
			post: post || ''
		});
	}


	// ابزار در حالت نمایش
	/**
	 * Fetch a page
	 */

    /**
	function loadPage(title) {
		return new mw.Api().get({
			action: 'query',
			prop: 'revisions',
			titles: title,
			rvprop: 'content',
			format: 'json'
		}).then(function (data) {
			return data.query.pages[Object.keys(data.query.pages)[0]].revisions[0]['*'];
		});
	}

	
	// Save a page
	
	function savePage(title, text, summary) {
		return new mw.Api().post({
			action: 'edit',
			title: title,
			text: text,
			summary: summary,
			nocreate: '',
			minor: '',
			token: mw.user.tokens.get('csrfToken')
		});
	}

	
	// Load and save a page
	
	function loadSavePage(editorDelegate, summary) {
		return loadPage(mw.config.get('wgPageName')).then(function (text) {
			return savePage(mw.config.get('wgPageName'), editorDelegate(text), summary);
		});
	}

	if (mw.config.get('wgAction') === 'view' &&
		mw.config.get('wgIsArticle') &&
		!mw.config.get('wgIsMainPage')) {
		$.when($.ready, mw.loader.using('jquery.ui')).then(function () {
			$('#ca-abar-abzar').remove();
			if ($('#mw-imagepage-nofile, #noarticletext').length !== 0 ||
				mw.config.get('wgNamespaceNumber') === 6 ||
				mw.config.get('wgNamespaceNumber') === 8) {
				return;
			}
			var interwikiFix = false;
			if (!$('#t-wikibase').length && $('.interlanguage-link').length && $('.wbc-editpage').length) {
				interwikiFix = true;
			}
			$(mw.util.addPortletLink('p-views', '#', interwikiFix ? 'ابرابزار+انتقال میان‌ویکی' : 'ابرابزار', 'ca-abar-abzar', interwikiFix ? 'ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میان‌ویکی سنتی به ویکی‌داده' : 'ابزار پیشرفتهٔ ویرایش متن')).click(function (e) {
				e.preventDefault();
				$(
					'<div><div>مطمئنید می\u200cخواهید ویرایشی خودکار جهت اصلاح متن این صفحه به کمک ابرابزار داشته باشید؟</h6><br><br>بعد از انجام ویرایش باید ویرایش انجام\u200cشده را از نظر درستی بررسی کنید <b>زیرا مسئولیت تغییرات ابرابزار با شماست!</b></div>'
				).dialog({
					modal: true,
					title: 'ابرابزار',
					resizable: false,
					buttons: {
						'بله': function () {
							loadSavePage(
								persianWikiTools.superTool,
								'/' + '* ویرایش به وسیلهٔ [[' + (mw.config.get('wgServerName') !== 'fa.wikipedia.org' ? ':w:fa:' : '') + 'وپ:ابرابزار|ابرابزار]] *' + '/'
							).then(function (data) {
								// افزودن میان‌ویکی سنتی به ویکی‌داده به صورت خودکار
								if (interwikiFix) {
									$.get('//tools.wmflabs.org/dexbot/interwikidata.php', { page: mw.config.get('wgPageName') })
										.then(function () {}, function () {});
								}
								//اجرای کدهای ربات
								botworks.trigFillcat();
								botworks.trigMissedFileUpload();
								botworks.trigMissedRef();
								if (data.error) {
									mw.notify('ویرایش موفقیت آمیز نبود، دوباره تلاش کنید: ' + data.error.info);
								} else if (data.edit && data.edit.result === 'Success') {
									if (data.edit.nochange !== undefined) {
										mw.notify('تغییری در صفحه ایجاد نشد.');
									} else {
										mw.notify('ویرایش با موفقیت انجام پذیرفت');
										// Loading diff page
										var diffUrl = new URL(
    mw.config.get('wgScript'),
    window.location.href
);
diffUrl.searchParams.set('title', mw.config.get('wgPageName'));
diffUrl.searchParams.set('diff', data.edit.newrevid);
window.location = diffUrl.href;
									}
								} else {
									mw.notify('ویرایش در صفحه موفقیت\u200cآمیر نبود.');
								}
							}, function (error) {
								mw.notify(error);
							});
							$(this).dialog('close');
						},
						'خیر': function () {
							$(this).dialog('close');
						}
					},
					close: function () {
						$(this).remove();
					}
				});
			});
		});
	}
     */

	// ابزار در حالت ویرایش
	/**
	 * Adds edit summary
	 */
	function addEditSummary(summaryText, replaceSummary) {
		if (summaryText === '') {
			return;
		}
		var summary = $('.editOptions #wpSummary'),
			summaryPrefix = '',
			pos;
		if (summary.length === 0) {
			return;
		}
		if (summary.val().indexOf('*/ ') > -1) {
			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().indexOf(summaryText) === -1) { // 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($('<button>', {
				text: alt
			}));
		}).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 $editor, txtarea, range, startPos, endPos, selText, replacement;

		if (document.getElementById('editform') || $('.ns-446').length) {
			$editor = $('#wpTextbox1');
			if (!$editor.length) {
				return;
			}

			selText = $editor.textSelection('getSelection');
			if (selText) {
				$editor.textSelection('replaceSelection', callback(selText));
			} else {
				$editor.textSelection(
					'setContents',
					callback($editor.textSelection('getContents'))
				);
			}
			return;
		}

		txtarea = $('[name=wpNewTitleMain]')[0];
		if (!txtarea) return;

		if (document.selection && document.selection.createRange) { // IE/Opera
			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 (
			typeof txtarea.selectionStart === 'number' &&
			typeof txtarea.selectionEnd === 'number'
		) {
			txtarea.focus();
			startPos = txtarea.selectionStart;
			endPos = txtarea.selectionEnd;
			selText = txtarea.value.substring(startPos, endPos);

			if (selText) {
				replacement = callback(selText);
				txtarea.value =
					txtarea.value.substring(0, startPos) +
					replacement +
					txtarea.value.substring(endPos);
				txtarea.selectionStart = startPos + replacement.length;
				txtarea.selectionEnd = txtarea.selectionStart;
			} else {
				txtarea.value = callback(txtarea.value);
			}
		} else {
			txtarea.value = callback(txtarea.value);
		}
	}

	var tools = {};

	// Buttons that FIX wikitext
	/* ی ک */
	tools.ykArabic = buttonGenerator(
		function () {
			applyOnSelection(persianTools.toStandardPersianCharacters);
		},
		'اصلاح نویسه\u200cهای عربی',
		false,
		'//commons.islamical.org/w/images/8/88/Button_YehKeh.png',
		'اصلاح ی و ک',
		'ی و ک',
		'YehKeh'
	);

	/* فاصلهٔ مجازی */
	tools.zwnj = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.wikiApplyZwnj);
		},
		'اصلاح فاصلهٔ مجازی',
		false,
		'//commons.islamical.org/w/images/d/d0/Button_ZWNJ.png',
		'فاصلهٔ مجازی',
		'فاصلهٔ مجازی',
		'ZWNJ'
	);

	/* اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد */
	tools.applyOrthography = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.wikiApplyOrthography);
		},
		'اصلاح نویسه',
		false,
		'//commons.islamical.org/w/images/9/94/Button_non_standard.png',
		'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
		'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
		'apply-orthography'
	);

	/* اصلاح ارقام */
	tools.dig = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.wikiTextDigitsToPersian);
		},
		'اصلاح ارقام',
		false,
		'//commons.islamical.org/w/images/4/4a/Button_numbers.png',
		'اصلاح ارقام',
		'ارقام',
		'numbers'
	);

	/* اصلاح ارقام مخصوص صفحه انتقال */
	tools.digMove = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters);
		},
		'اصلاح ارقام',
		false,
		'//commons.islamical.org/w/images/4/4a/Button_numbers.png',
		'اصلاح ارقام',
		'ارقام',
		'numbers'
	);
	
	//عدم تغییر در متن بحث‌ها، سیاست‌ها در فضاهای نام دیگر
	if (mw.config.get('wgNamespaceNumber') === 0) {
		/* برداشتن پیوند تاریخ‌ها */
		tools.fixBadLinks = buttonGenerator(
			function () {
				applyOnSelection(persianWikiTools.fixBadLinks);
			},
			'حذف پیوند تاریخ‌ها',
			false,
			'//commons.islamical.org/w/images/1/11/Btn_toolbar_link_remove.png',
			'حذف پیوند تاریخ‌ها',
			'پیوند تاریخ‌ها',
			'datelinks'
		);
	}

	/* یونیکد نشانی وب */
	tools.urlFix = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.wikiUrlMinifier);
		},
		'اصلاح نشانی وب',
		false,
		'//commons.islamical.org/w/images/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,
		'//commons.islamical.org/w/images/7/7f/Button_at_sign.png',
		'اصلاح علامت @',
		'@',
		'at-sign'
	);

	/* ابرابزار */
	tools.superTool = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.superTool);
		},
		'ابرابزار',
		false,
		'//commons.islamical.org/w/images/f/fc/Button_super_tool.png',
		'ابرابزار',
		'ابرابزار',
		'super-tool'
	);

	/* ابزار املا */
	tools.dictation = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.wikiDictation);
		},
		'اصلاح املا',
		false,
		'//commons.islamical.org/w/images/a/a3/Button_Dictation-fa.png',
		'املا',
		'املا',
		'dictation'
	);

	/* ابرابزار مخصوص صفحه انتقال */
	tools.superToolMove = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.superToolMove);
		},
		'ابرابزار',
		false,
		'//commons.islamical.org/w/images/f/fc/Button_super_tool.png',
		'ابرابزار',
		'ابرابزار',
		'super-tool'
	);

	/* اصلاحات قراردادن نقطه */
	tools.punc = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.wikiPunctuation);
		},
		'اصلاح سجاوندی',
		false,
		'//commons.islamical.org/w/images/e/ed/Button_punctuation.png',
		'نقطه\u200cگذاری',
		'نقطه\u200cگذاری',
		'punctuation'
	);

	// Buttons that add tags
	/* برچسب ویکی\u200cسازی */
	tools.wikify = buttonGenerator(
		function () {
			setEditorContents('{{ویکی\u200cسازی}}\n' + getEditorContents());
		},
		'برچسب ویکی\u200cسازی',
		false,
		'//commons.islamical.org/w/images/3/38/Button_wikify.png',
		'برچسب ویکی\u200cسازی',
		'ویکی\u200cسازی',
		'wikify'
	);

	/* بدون منبع */
	tools.noSource = buttonGenerator(
		function () {
			setEditorContents('{{بدون منبع}}\n' + getEditorContents());
		},
		'برچسب منبع',
		false,
		'//commons.islamical.org/w/images/8/8a/Button_no_source_fa.png',
		'برچسب بدون منبع',
		'بدون منبع',
		'no-source'
	);

	/* حذف سریع */
	tools.speedyDel = buttonGenerator(
		function () {
			var temp = getEditorContents();
			setEditorContents('');
			insertTags('{{' + 'حذف سریع|', '}}\n' + temp, 'معیار');
		},
		'حذف سریع',
		true,
		'//commons.islamical.org/w/images/c/c1/Button_delete_vote.png',
		'برچسب حذف سریع',
		'حذف سریع',
		'delete-vote'
	);

	/* حذف زماندار */
	tools.prod = buttonGenerator(
		function () {
			var temp = getEditorContents();
			setEditorContents('');
			insertTags('{{' + 'جا:حذف زمان\u200cدار|', '}}\n' + temp, 'معیار');
		},
		'حذف زمان\u200cدار',
		true,
		'//commons.islamical.org/w/images/3/3f/Button_attendre.png',
		'برچسب حذف زمان\u200cدار',
		'حذف زمان\u200cدار',
		'attendre'
	);

	/* منبع تصویر نامعلوم */
	tools.picSource = buttonGenerator(
		function () {
			setEditorContents('{{' + 'جا:منبع تصویر نامعلوم' + '}}\n' + getEditorContents());
		},
		'برچسب منبع',
		false,
		'//commons.islamical.org/w/images/5/59/Button_image_source.png',
		'برچسب منبع تصویر نامعلوم',
		'منبع تصویر نامعلوم',
		'image-source'
	);

	/* حق تکثیر تصویر نامعلوم */
	tools.picCopy = buttonGenerator(
		function () {
			setEditorContents('{{' + 'جا:حق تکثیر تصویر نامعلوم}}\n' + getEditorContents());
		},
		'برچسب حق تکثیر',
		false,
		'//commons.islamical.org/w/images/7/7e/Button_image_copyright.png',
		'برچسب حق تکثیر تصویر نامعلوم',
		'حق تکثیر تصویر نامعلوم',
		'image-copyright'
	);

	/* تمیزکاری */
	tools.cleanup = buttonGenerator(
		function () {
			setEditorContents('{{تمیزکاری}}\n' + getEditorContents());
		},
		'برچسب تمیزکاری',
		false,
		'//commons.islamical.org/w/images/2/2e/Button_broom.png',
		'برچسب تمیزکاری',
		'تمیزکاری',
		'broom'
	);

	/* اخطار نگاره */
	tools.imgWarn = buttonGenerator(
		function () {
			setEditorContents('');
			insertTags(
				'{{' + 'جا:اخطار نگاره|',
				'}}',
				'نگاره'
			);
		},
		'برچسب نگاره',
		false,
		'//commons.islamical.org/w/images/e/ec/Button_aviso.png',
		'اخطار نگاره',
		'اخطار نگاره',
		'aviso'
	);

	/* حق تکثیر مشکوک */
	tools.sus = buttonGenerator(
		function () {
			setEditorContents('{{حق تکثیر مشکوک}}\n' + getEditorContents());
		},
		'برچسب حق تکثیر',
		false,
		'//commons.islamical.org/w/images/c/c7/Button_Sus.png',
		'برچسب حق تکثیر مشکوک',
		'حق تکثیر مشکوک',
		'sus'
	);

	/* نقض حق تکثیر */
	tools.copyR = buttonGenerator(
		function () {
			setEditorContents('');
			insertTags(
				'{{' + 'جا:نقض حق تکثیر|url=',
				'}}',
				'نشانی ایرنتنتی'
			);
		},
		'برچسب حق تکثیر',
		false,
		'//commons.islamical.org/w/images/6/6f/Button_CopyR.png',
		'برچسب نقض حق تکثیر',
		'نقض حق تکثیر',
		'copyr'
	);

	/* لحن نامناسب */
	tools.tone = buttonGenerator(
		function () {
			setEditorContents('{{لحن نامناسب}}\n' + getEditorContents());
		},
		'برچسب لحن',
		false,
		'//commons.islamical.org/w/images/f/fc/Button_Tone.png',
		'برچسب لحن نامناسب',
		'لحن',
		'tone'
	);

	// Buttons that help with wiki writing
	/* تغییر جهت */
	tools.toggleDirection = buttonGenerator(
		function () {
			var $targets = $(
				'#wpTextbox1, [name=wpNewTitleMain], .ace_editor, ' +
				'.cm-editor, .cm-editor .cm-content'
			);
			var $active = $(
				'.cm-editor .cm-content:visible, #wpTextbox1:visible, ' +
				'[name=wpNewTitleMain]:visible, .ace_editor:visible'
			).first();

			if (!$active.length) {
				$active = $targets.first();
			}

			var direction = $active.css('direction') === 'rtl' ? 'ltr' : 'rtl';
			$targets.css({
				'text-align': 'start',
				'direction': direction
			});
		},
		'',
		true,
		'//commons.islamical.org/w/images/d/d0/Button_toggle_dir.png',
		'تغییر جهت جعبهٔ ویرایش',
		'تغییرجهت',
		'toggle-dir'
	);
	/* پیوند درونی */
	tools.wikiLink = buttonGenerator(
		function () {
			insertTags('[[', ']]', 'مقاله');
		},
		'',
		true,
		'//commons.islamical.org/w/images/d/d0/Button_in_wikify.png',
		'پیوند',
		'پیوند',
		'wikify'
	);

	/* متن خطخورده */
	tools.strikeTextButton = buttonGenerator(
		function () {
			insertTags('<s>', '</s>', 'متن خط خورده');
		},
		'',
		true,
		'//commons.islamical.org/w/images/c/c9/Button_strike.png',
		'متن خط\u200cخورده',
		'متن خط\u200cخورده',
		'strike'
	);

	/* توضیح */
	tools.commentButton = buttonGenerator(
		function () {
			insertTags('<!--', '-->', 'توضیح');
		},
		'',
		true,
		'//commons.islamical.org/w/images/3/34/Button_hide_comment.png',
		'توضیح',
		'توضیح',
		'hide-comment'
	);

	/* ملزومات مقاله */
	tools.addEssentialThings = buttonGenerator(
		function () {
			insertTags('== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}', '', '');
		},
		'',
		true,
		'//commons.islamical.org/w/images/e/ef/Add_note.jpg',
		'ملزومات مقاله',
		'ملزومات مقاله',
		'add-note'
	);
	/* خوشامدید */
	tools.welcome = buttonGenerator(
		function () {
			insertTags(
				'{{' + 'جا:خوشامدید|~~' + '~~}}',
				'',
				''
			);
		},
		'خوشامدگویی',
		true,
		'//commons.islamical.org/w/images/4/4a/Smilies_Alien_cool.png',
		'خوشامدگویی',
		'خوشامد',
		'alien-cool'
	);
	/* چپچین */
	tools.chapChin = buttonGenerator(
		function () {
			insertTags(
				'{{چپ\u200cچین}}\n',
				'\n{{پایان چپ\u200cچین}}',
				'متن چپ\u200cچین\u200cشده'
			);
		},
		'',
		true,
		'//commons.islamical.org/w/images/e/ea/Button_align_left.png',
		'چپ\u200cچین\u200cکردن متن',
		'چپ\u200cچین',
		'align-left'
	);

	/* اندیس بالا */
	tools.upperText = buttonGenerator(
		function () {
			insertTags('<sup>', '</sup>', 'اندیس');
		},
		'',
		true,
		'//commons.islamical.org/w/images/6/6a/Button_sup_letter.png',
		'اندیس بالا',
		'اندیس بالا',
		'upper-letter'
	);

	/* اندیس پایین */
	tools.lowerText = buttonGenerator(
		function () {
			insertTags('<sub>', '</sub>', 'اندیس');
		},
		'',
		true,
		'//commons.islamical.org/w/images/a/aa/Button_sub_letter.png',
		'اندیس پایین',
		'اندیس پایین',
		'lower-letter'
	);

	/* تغییرمسیر */
	tools.redirectButton = buttonGenerator(
		function () {
			setEditorContents('');
			insertTags(
				'#تغییرمسیر [[',
				']]',
				'پیوند'
			);
		},
		'',
		true,
		'//commons.islamical.org/w/images/c/c8/Button_redirect.png',
		'تغییرمسیر',
		'تغییرمسیر',
		'redirect'
	);

	/* سال میلادی */
	tools.gregYear = buttonGenerator(
		function () {
			insertTags(
				'[[',
				' (میلادی)|]]',
				'سال'
			);
		},
		'',
		true,
		'//commons.islamical.org/w/images/a/a7/Button_cal.png',
		'سال میلادی',
		'میلادی',
		'cal'
	);

	/* مرتبسازی */
	tools.sortText = buttonGenerator(
		function () {
			applyOnSelection(persianTools.persianSortText);
		},
		'',
		true,
		'//commons.islamical.org/w/images/3/33/Button_sort.png',
		'مرتب\u200cسازی بر اساس الفبا',
		'مرتب\u200cسازی',
		'sort'
	);

	/* شد! */
	tools.shod = buttonGenerator(
		function () {
			setEditorContents(getEditorContents().trimRight() + '\n:{{شد}} ~~' + '~~');
		},
		'شد',
		true,
		'//commons.islamical.org/w/images/5/5b/Button_check.png',
		'شد',
		'شد',
		'check'
	);
   /* عدد انگلیسی */
	tools.toEnNumRobust = buttonGenerator(
		function () {
			applyOnSelection(persianWikiTools.robustToEnglishDigits);
		},
		'عدد انگلیسی',
		false,
		'//commons.islamical.org/w/images/f/f5/Button_enNum.png',
		'عدد انگلیسی',
		'عدد انگلیسی',
		'ToEnNumberRobust'
	);
	$(function () {
		// کد مناسب ویرایشگر جدید متنی
		/*mw.hook('ve.activationComplete').add(function () {
			var surface = ve.init.target.getSurface();
			if (surface.getMode() === 'source') {
				$('#firstHeading').append($('<img>', { src: '//commons.islamical.org/w/images/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, space, tools.ykArabic, tools.dig, space, tools.urlFix, tools.fixBadLinks, space, tools.welcome,
			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);

		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 !== 0) {
			$('<div>', {
				id: 'persian-wiki-tools',
				dir: 'rtl',
				style: 'float:right;'
			}).append(extraEditButtons).insertBefore('#wpTextbox1');
		}
		if ($('#movepage').length !== 0) {
			$('<span>', {
				id: 'persian-wiki-tools'
			}).append(extraMoveButtons).insertAfter('#wpNewTitle');
		}
	});
}(jQuery, mediaWiki));