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

از مشروطه
پرش به ناوبری پرش به جستجو
 
خط ۱: خط ۱:
 
// <nowiki> // DON'T REMOVE THIS LINE EVER
 
// <nowiki> // DON'T REMOVE THIS LINE EVER
/*jslint indent: 2, browser: true*/
+
/*global jQuery, mediaWiki, persianWikiTools, persianTools*/
/*global jQuery, mediaWiki, persianWikiTools, insertTags*/
+
/**
 +
* 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) {
 
(function ($, mw) {
  'use strict';
+
'use strict';
  
 +
// ابزار در حالت نمایش
 +
/**
 +
* 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]['*'];
 +
});
 +
}
  
  // ابزار در حالت نمایش
+
/**
  function loadPage(title, callback) {
+
* Save a page
    new mw.Api().get({
+
*/
      action: 'query',
+
function savePage(title, text, summary) {
      prop: 'revisions',
+
return new mw.Api().post({
      titles: title,
+
action: 'edit',
      rvprop: 'content',
+
title: title,
      format: 'json'
+
text: text,
    }).done(function (data) {
+
summary: summary,
      callback($.map(data.query.pages, function (value) { return value; })[0].revisions[0]['*']);
+
nocreate: '',
    });
+
minor: '',
  }
+
token: mw.user.tokens.get('editToken')
  function savePage(title, text, summary, callback) {
+
});
    new mw.Api().post({
+
}
      action: 'edit',
 
      title: title,
 
      text: text,
 
      summary: summary,
 
      nocreate: '',
 
      minor: '',
 
      token: mw.user.tokens.get('editToken')
 
    }).done(function (data) {
 
      if (data.error && data.error.info) {
 
        mw.notify(data.error.info);
 
      } else {
 
        callback();
 
      }
 
    }).fail(function (data) {
 
      mw.notify(data);
 
    });
 
  }
 
  function loadSavePageRefresh(replaceCallback, summary) {
 
    loadPage(mw.config.get('wgPageName'), function (text) {
 
      savePage(mw.config.get('wgPageName'), replaceCallback(text), summary, function () {
 
        mw.notify('ویرایش با موفقیت انجام پذیرفت');
 
        // Loading diff page
 
        var uri = new mw.Uri();
 
        uri.query = {
 
          'title': mw.config.get('wgPageName'),
 
          'diff': 'cur',
 
          'oldid': 'prev'
 
        };
 
        uri.path = mw.config.get('wgScriptPath') + '/index.php';
 
        window.location = uri.toString();
 
      });
 
    });
 
  }
 
  if (mw.config.get('wgAction') === 'view' && mw.config.get('wgIsArticle') && mw.config.get('wgPageName') !== 'صفحهٔ_اصلی') {
 
    mw.loader.using('jquery.ui.dialog', function () {
 
      $(function () {
 
        $(mw.util.addPortletLink('p-views', '#', 'ابرابزار', 'ca-abar-abzar'))
 
          .click(function () {
 
            $('<div><h6>مطمئنید می\u200cخواهید ویرایشی خودکار جهت اصلاح متن این صفحه به کمک ابرابزار داشته باشید؟</h6></div>')
 
              .dialog({
 
                modal: true,
 
                title: 'ابرابزار',
 
                resizable: false,
 
                buttons: {
 
                  'بله': function () {
 
                    loadSavePageRefresh(
 
                      function (text) {
 
                        text = persianWikiTools.wikiConvertToPersianCharacters(text);
 
                        text = persianWikiTools.applyZwnj(text);
 
                        text = persianWikiTools.nonStandard(text);
 
                        if (mw.config.get('wgNamespaceNumber') !== 10) {
 
                          text = persianWikiTools.wikiTextDigitsToPersian(text);
 
                        }
 
                        text = persianWikiTools.wikiDictation(text);
 
                        text = persianWikiTools.wikiUrlMinifier(text);
 
                        return persianWikiTools.wikiPunctuation(text);
 
                      },
 
                      'ویرایش به وسیلهٔ [[وپ:ابرابزار|ابزار خودکار ابرابزار]]'
 
                    );
 
                    $(this).dialog("close");
 
                  },
 
                  'خیر': function () {
 
                    $(this).dialog("close");
 
                  }
 
                },
 
                close: function () {
 
                  $(this).remove();
 
                }
 
              });
 
          });
 
      });
 
    });
 
  }
 
  
 +
/**
 +
* 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') &&
  * Adds edit summary
+
mw.config.get('wgPageName') !== 'صفحهٔ_اصلی') {
  */
+
$.when($.ready, mw.loader.using('jquery.ui.dialog')).then(function () {
  function addEditSummary(summaryText, replaceSummary) {
+
$('#ca-abar-abzar').remove();
    if (summaryText === '') {
+
if ($('#mw-imagepage-nofile, #noarticletext').length !== 0 ||
      return;
+
mw.config.get('wgNamespaceNumber') === 6 ||
    }
+
mw.config.get('wgNamespaceNumber') === 8) {
    var summary = $('.editOptions #wpSummary'), summaryPrefix = '', pos;
+
return;
    if (summary.length === 0) {
+
}
      return;
+
var interwikiFix = false;
    }
+
if (!$('#t-wikibase').length && $('.interlanguage-link').length && $('.wbc-editpage').length) {
    if (summary.val().indexOf('*/ ') > -1) {
+
interwikiFix = true;
      pos = summary.val().indexOf('*/ ');
+
}
      summaryPrefix = summary.val().substr(0, pos + 3);
+
$(mw.util.addPortletLink('p-views', '#', interwikiFix ? 'ابرابزار+انتقال میان‌ویکی' : 'ابرابزار', 'ca-abar-abzar', interwikiFix ? 'ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میان‌ویکی سنتی به ویکی‌داده' : 'ابزار پیشرفتهٔ ویرایش متن')).click(function (e) {
    }
+
e.preventDefault();
    if (replaceSummary) {
+
$(
      summary.val(summaryPrefix + summaryText);
+
'<div><div>مطمئنید می\u200cخواهید ویرایشی خودکار جهت اصلاح متن این صفحه به کمک ابرابزار داشته باشید؟</h6><br><br>بعد از انجام ویرایش باید ویرایش انجام\u200cشده را از نظر درستی بررسی کنید <b>زیرا مسئولیت تغییرات ابرابزار با شماست!</b></div>'
    } else {
+
).dialog({
      if (summary.val() === summaryPrefix) {
+
modal: true,
        summary.val(summary.val() + summaryText);
+
title: 'ابرابزار',
      } else {
+
resizable: false,
        if (summary.val().indexOf(summaryText) === -1) { // do not repeat in edit summary
+
buttons: {
          summary.val(summary.val() + '، ' + summaryText);
+
'بله': 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
 +
window.location = new mw.Uri(mw.config.get('wgScript')).extend({
 +
title: mw.config.get('wgPageName'),
 +
diff: data.edit.newrevid
 +
});
 +
}
 +
} else {
 +
mw.notify('ویرایش در صفحه موفقیت\u200cآمیر نبود.');
 +
}
 +
}, function (error) {
 +
mw.notify(error);
 +
});
 +
$(this).dialog('close');
 +
},
 +
'خیر': function () {
 +
$(this).dialog('close');
 +
}
 +
},
 +
close: function () {
 +
$(this).remove();
 +
}
 +
});
 +
});
 +
});
 +
}
  
  /**
 
  * 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 button = $('<a />', { id: 'persian-wiki-tools-' + idSuffix }).click(clickCallback).append(
 
      $('<img />').attr({
 
        src: image,
 
        title: title,
 
        alt: alt
 
      }).error(function () {
 
        button.replaceWith($('<button />').text(alt).click(clickCallback));
 
      })
 
    );
 
    return button[0];
 
  }
 
  
  /**
+
// ابزار در حالت ویرایش
  * Applies the string functions defined below to the
+
/**
  * selected text in the edit box. If no text is selected, applies
+
* Adds edit summary
  * the function to the whole contents of edit box.
+
*/
  */
+
function addEditSummary(summaryText, replaceSummary) {
  function applyOnSelection(callback) {
+
if (summaryText === '') {
    var txtarea, range, startPos, endPos, selText;
+
return;
    if (document.getElementById('editform')) {
+
}
      txtarea = document.getElementById('wpTextbox1');
+
var summary = $('.editOptions #wpSummary'),
    } else if (document.getElementById('wpNewTitleMain')) {
+
summaryPrefix = '',
      txtarea = document.getElementById('wpNewTitleMain');
+
pos;
    } else {
+
if (summary.length === 0) {
      return;
+
return;
    }
+
}
    if (document.selection && document.selection.createRange) { // IE/Opera
+
if (summary.val().indexOf('*/ ') > -1) {
      // get current selection 
+
pos = summary.val().indexOf('*/ ');
      txtarea.focus();
+
summaryPrefix = summary.val().substr(0, pos + 3);
      range = document.selection.createRange();
+
}
      selText = range.text;
+
if (replaceSummary) {
      if (selText) {
+
summary.val(summaryPrefix + summaryText);
        range.text = callback(selText);
+
} else {
        range.select();
+
if (summary.val() === summaryPrefix) {
      } else {
+
summary.val(summary.val() + summaryText);
        txtarea.value = callback(txtarea.value);
+
} else {
      }
+
if (summary.val().indexOf(summaryText) === -1) { // do not repeat in edit summary
    } else if (txtarea.selectionStart || txtarea.selectionStart === 0) { // Mozilla
+
summary.val(summary.val() + '، ' + summaryText);
      // 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 = {};
+
/**
 +
* 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];
 +
}
  
  // Buttons that FIX wikitext
+
/**
  /* ی ک */
+
* Applies the string functions defined below to the
  tools.ykArabic = buttonGenerator(
+
* selected text in the edit box. If no text is selected, applies
    function () { applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters); },
+
* the function to the whole contents of edit box.
    'اصلاح نویسه\u200cهای عربی',
+
*/
    false,
+
function applyOnSelection(callback) {
    '//upload.wikimedia.org/wikipedia/commons/8/88/Button_YehKeh.png',
+
var txtarea, range, startPos, endPos, selText;
    'اصلاح ی و ک',
+
if (document.getElementById('editform') || $('.ns-446').length) {
    'ی و ک',
+
txtarea = document.getElementById('wpTextbox1');
    'YehKeh'
+
} 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 = {};
  tools.zwnj = buttonGenerator(
 
    function () { applyOnSelection(persianWikiTools.applyZwnj); },
 
    'اصلاح فاصلهٔ مجازی',
 
    false,
 
    '//upload.wikimedia.org/wikipedia/fa/d/d0/Button_ZWNJ.png',
 
    'فاصلهٔ مجازی',
 
    'فاصلهٔ مجازی',
 
    'ZWNJ'
 
  );
 
  
  /* نویسهٔ غیراستاندارد */
+
// Buttons that FIX wikitext
  tools.nonStandard = buttonGenerator(
+
/* ی ک */
    function () { applyOnSelection(persianWikiTools.nonStandard); },
+
tools.ykArabic = buttonGenerator(
    'اصلاح نویسه',
+
function () {
    false,
+
applyOnSelection(persianTools.toStandardPersianCharacters);
    '//upload.wikimedia.org/wikipedia/fa/9/94/Button_non_standard.png',
+
},
    'نویسه\u200cهای غیراستاندارد',
+
'اصلاح نویسه\u200cهای عربی',
    'نویسه\u200cهای غیراستاندارد',
+
false,
    'non-standard'
+
'//upload.wikimedia.org/wikipedia/commons/8/88/Button_YehKeh.png',
  );
+
'اصلاح ی و ک',
 +
'ی و ک',
 +
'YehKeh'
 +
);
  
  /* اصلاح ارقام */
+
/* فاصلهٔ مجازی */
  tools.dig = buttonGenerator(
+
tools.zwnj = buttonGenerator(
    function () { applyOnSelection(persianWikiTools.wikiTextDigitsToPersian); },
+
function () {
    'اصلاح ارقام',
+
applyOnSelection(persianWikiTools.wikiApplyZwnj);
    false,
+
},
    '//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png',
+
'اصلاح فاصلهٔ مجازی',
    'اصلاح ارقام',
+
false,
    'ارقام',
+
'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_ZWNJ.png',
    'numbers'
+
'فاصلهٔ مجازی',
  );
+
'فاصلهٔ مجازی',
 +
'ZWNJ'
 +
);
  
  /* اصلاح ارقام مخصوص صفحه انتقال */
+
/* اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد */
  tools.digMove = buttonGenerator(
+
tools.applyOrthography = buttonGenerator(
    function () { applyOnSelection(persianWikiTools.convertDigitsToPersian); },
+
function () {
    'اصلاح ارقام',
+
applyOnSelection(persianWikiTools.wikiApplyOrthography);
    false,
+
},
    '//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png',
+
'اصلاح نویسه',
    'اصلاح ارقام',
+
false,
    'ارقام',
+
'//upload.wikimedia.org/wikipedia/fa/9/94/Button_non_standard.png',
    'numbers'
+
'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
  );
+
'اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد',
 +
'apply-orthography'
 +
);
  
  /* یونیکد نشانی وب */
+
/* اصلاح ارقام */
  tools.urlFix = buttonGenerator(
+
tools.dig = buttonGenerator(
    function () { applyOnSelection(persianWikiTools.wikiUrlMinifier); },
+
function () {
    'اصلاح نشانی وب',
+
applyOnSelection(persianWikiTools.wikiTextDigitsToPersian);
    false,
+
},
    '//upload.wikimedia.org/wikipedia/fa/b/ba/Button_decode_URI.png',
+
'اصلاح ارقام',
    'یونی\u200cکدسازی نشانی\u200cها',
+
false,
    'یونی\u200cکدسازی',
+
'//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png',
    'decode-URI'
+
'اصلاح ارقام',
  );
+
'ارقام',
 +
'numbers'
 +
);
  
  /* اصلاح علامت @ */
+
/* اصلاح ارقام مخصوص صفحه انتقال */
  tools.atSignFix = buttonGenerator(
+
tools.digMove = buttonGenerator(
    function () {
+
function () {
      applyOnSelection(function (text) {
+
applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters);
        return text.replace(/(\S+?)@(\S+?)/g, '$1{{at}}$2');
+
},
      });
+
'اصلاح ارقام',
    },
+
false,
    'اصلاح @',
+
'//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png',
    false,
+
'اصلاح ارقام',
    '//upload.wikimedia.org/wikipedia/fa/7/7f/Button_at_sign.png',
+
'ارقام',
    'اصلاح علامت @',
+
'numbers'
    '@',
+
);
    'at-sign'
+
  );
+
//عدم تغییر در متن بحث‌ها، سیاست‌ها در فضاهای نام دیگر
 +
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.superTool = buttonGenerator(
+
tools.urlFix = buttonGenerator(
    function () {
+
function () {
      applyOnSelection(function (text) {
+
applyOnSelection(persianWikiTools.wikiUrlMinifier);
        text = persianWikiTools.wikiConvertToPersianCharacters(text);
+
},
        text = persianWikiTools.applyZwnj(text);
+
'اصلاح نشانی وب',
        text = persianWikiTools.nonStandard(text);
+
false,
        if (mw.config.get('wgNamespaceNumber') !== 10) {
+
'//upload.wikimedia.org/wikipedia/fa/b/ba/Button_decode_URI.png',
          text = persianWikiTools.wikiTextDigitsToPersian(text);
+
'یونی\u200cکدسازی نشانی\u200cها',
        }
+
'یونی\u200cکدسازی',
        text = persianWikiTools.wikiUrlMinifier(text);
+
'decode-URI'
        text = persianWikiTools.wikiDictation(text);
+
);
        return persianWikiTools.wikiPunctuation(text);
 
      });
 
    },
 
    'ابرابزار',
 
    false,
 
    '//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png',
 
    'ابرابزار',
 
    'ابرابزار',
 
    'super-tool'
 
  );
 
  
  /* ابزار املا */
+
/* اصلاح علامت @ */
  tools.dictation = buttonGenerator(
+
tools.atSignFix = buttonGenerator(
    function () { applyOnSelection(persianWikiTools.wikiDictation); },
+
function () {
    'اصلاح املا',
+
applyOnSelection(function (text) {
    false,
+
return text.replace(/(\S+?)@(\S+?)/g, '$1{{at}}$2');
    '//upload.wikimedia.org/wikipedia/commons/a/a3/Button_Dictation-fa.png',
+
});
    'املا',
+
},
    'املا',
+
'اصلاح @',
    'dictation'
+
false,
  );
+
'//upload.wikimedia.org/wikipedia/fa/7/7f/Button_at_sign.png',
 +
'اصلاح علامت @',
 +
'@',
 +
'at-sign'
 +
);
  
  /* ابرابزار مخصوص صفحه انتقال */
+
/* ابرابزار */
  tools.superToolMove = buttonGenerator(
+
tools.superTool = buttonGenerator(
    function () {
+
function () {
      applyOnSelection(function (text) {
+
applyOnSelection(persianWikiTools.superTool);
        text = persianWikiTools.wikiConvertToPersianCharacters(text);
+
},
        text = persianWikiTools.applyZwnj(text);
+
'ابرابزار',
        text = persianWikiTools.nonStandard(text);
+
false,
        text = persianWikiTools.wikiTextDigitsToPersian(text);
+
'//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png',
        text = persianWikiTools.wikiUrlMinifier(text);
+
'ابرابزار',
        text = persianWikiTools.wikiDictation(text);
+
'ابرابزار',
        return persianWikiTools.wikiPunctuation(text);
+
'super-tool'
      });
+
);
    },
 
    'ابرابزار',
 
    false,
 
    '//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png',
 
    'ابرابزار',
 
    'ابرابزار',
 
    'super-tool'
 
  );
 
  
  /* اصلاحات قراردادن نقطه */
+
/* ابزار املا */
  tools.punc = buttonGenerator(
+
tools.dictation = buttonGenerator(
    function () { applyOnSelection(persianWikiTools.wikiPunctuation); },
+
function () {
    'اصلاح سجاوندی',
+
applyOnSelection(persianWikiTools.wikiDictation);
    false,
+
},
    '//upload.wikimedia.org/wikipedia/fa/e/ed/Button_punctuation.png',
+
'اصلاح املا',
    'نقطه\u200cگذاری',
+
false,
    'نقطه\u200cگذاری',
+
'//upload.wikimedia.org/wikipedia/commons/a/a3/Button_Dictation-fa.png',
    'punctuation'
+
'املا',
  );
+
'املا',
 +
'dictation'
 +
);
  
  // Buttons that add tags
+
/* ابرابزار مخصوص صفحه انتقال */
  /* برچسب ویکی\u200cسازی */
+
tools.superToolMove = buttonGenerator(
  tools.wikify = buttonGenerator(
+
function () {
    function () {
+
applyOnSelection(persianWikiTools.superToolMove);
      $('#wpTextbox1').val('{{ویکی\u200cسازی}}\n' + $('#wpTextbox1').val());
+
},
    },
+
'ابرابزار',
    'برچسب ویکی\u200cسازی',
+
false,
    false,
+
'//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png',
    '//upload.wikimedia.org/wikipedia/fa/3/38/Button_wikify.png',
+
'ابرابزار',
    'برچسب ویکی\u200cسازی',
+
'ابرابزار',
    'ویکی\u200cسازی',
+
'super-tool'
    'wikify'
+
);
  );
 
  
  /* بدون منبع */
+
/* اصلاحات قراردادن نقطه */
  tools.noSource = buttonGenerator(
+
tools.punc = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val('{{بدون منبع}}\n' + $('#wpTextbox1').val());
+
applyOnSelection(persianWikiTools.wikiPunctuation);
    },
+
},
    'برچسب منبع',
+
'اصلاح سجاوندی',
    false,
+
false,
    '//upload.wikimedia.org/wikipedia/fa/8/8a/Button_no_source_fa.png',
+
'//upload.wikimedia.org/wikipedia/fa/e/ed/Button_punctuation.png',
    'برچسب بدون منبع',
+
'نقطه\u200cگذاری',
    'بدون منبع',
+
'نقطه\u200cگذاری',
    'no-source'
+
'punctuation'
  );
+
);
  
  /* حذف سریع */
+
// Buttons that add tags
  tools.speedyDel = buttonGenerator(
+
/* برچسب ویکی\u200cسازی */
    function () {
+
tools.wikify = buttonGenerator(
      var temp = $('#wpTextbox1').val();
+
function () {
      $('#wpTextbox1').val('');
+
$('#wpTextbox1').val('{{ویکی\u200cسازی}}\n' + $('#wpTextbox1').val());
      insertTags('{{حذف سریع|', '}}\n' + temp, 'معیار');
+
},
    },
+
'برچسب ویکی\u200cسازی',
    'حذف سریع',
+
false,
    true,
+
'//upload.wikimedia.org/wikipedia/fa/3/38/Button_wikify.png',
    '//upload.wikimedia.org/wikipedia/fa/c/c1/Button_delete_vote.png',
+
'برچسب ویکی\u200cسازی',
    'برچسب حذف سریع',
+
'ویکی\u200cسازی',
    'حذف سریع',
+
'wikify'
    'delete-vote'
+
);
  );
 
  
  /* حذف زماندار */
+
/* بدون منبع */
  tools.prod = buttonGenerator(
+
tools.noSource = buttonGenerator(
    function () {
+
function () {
      var temp = $('#wpTextbox1').val();
+
$('#wpTextbox1').val('{{بدون منبع}}\n' + $('#wpTextbox1').val());
      $('#wpTextbox1').val('');
+
},
      insertTags('{{جا:حذف زمان\u200cدار|', '}}\n' + temp, 'معیار');
+
'برچسب منبع',
    },
+
false,
    'حذف زمان\u200cدار',
+
'//upload.wikimedia.org/wikipedia/fa/8/8a/Button_no_source_fa.png',
    true,
+
'برچسب بدون منبع',
    '//upload.wikimedia.org/wikipedia/commons/3/3f/Button_attendre.png',
+
'بدون منبع',
    'برچسب حذف زمان\u200cدار',
+
'no-source'
    'حذف زمان\u200cدار',
+
);
    'attendre'
 
  );
 
  
  /* منبع تصویر نامعلوم */
+
/* حذف سریع */
  tools.picSource = buttonGenerator(
+
tools.speedyDel = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val('{{منبع تصویر نامعلوم}}\n' + $('#wpTextbox1').val());
+
var temp = $('#wpTextbox1').val();
    },
+
$('#wpTextbox1').val('');
    'برچسب منبع',
+
mw.toolbar.insertTags('{{' + 'حذف سریع|', '}}\n' + temp, 'معیار');
    false,
+
},
    '//upload.wikimedia.org/wikipedia/fa/5/59/Button_image_source.png',
+
'حذف سریع',
    'برچسب منبع تصویر نامعلوم',
+
true,
    'منبع تصویر نامعلوم',
+
'//upload.wikimedia.org/wikipedia/fa/c/c1/Button_delete_vote.png',
    'image-source'
+
'برچسب حذف سریع',
  );
+
'حذف سریع',
 +
'delete-vote'
 +
);
  
  /* حق تکثیر تصویر نامعلوم */
+
/* حذف زماندار */
  tools.picCopy = buttonGenerator(
+
tools.prod = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val('{{جا:حق تکثیر تصویر نامعلوم}}\n' + $('#wpTextbox1').val());
+
var temp = $('#wpTextbox1').val();
    },
+
$('#wpTextbox1').val('');
    'برچسب حق تکثیر',
+
mw.toolbar.insertTags('{{' + 'جا:حذف زمان\u200cدار|', '}}\n' + temp, 'معیار');
    false,
+
},
    '//upload.wikimedia.org/wikipedia/fa/7/7e/Button_image_copyright.png',
+
'حذف زمان\u200cدار',
    'برچسب حق تکثیر تصویر نامعلوم',
+
true,
    'حق تکثیر تصویر نامعلوم',
+
'//upload.wikimedia.org/wikipedia/commons/3/3f/Button_attendre.png',
    'image-copyright'
+
'برچسب حذف زمان\u200cدار',
  );
+
'حذف زمان\u200cدار',
 +
'attendre'
 +
);
  
  /* تمیزکاری */
+
/* منبع تصویر نامعلوم */
  tools.cleanup = buttonGenerator(
+
tools.picSource = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val('{{تمیزکاری}}\n' + $('#wpTextbox1').val());
+
$('#wpTextbox1').val('{{' + 'جا:منبع تصویر نامعلوم' + '}}\n' + $('#wpTextbox1').val());
    },
+
},
    'برچسب تمیزکاری',
+
'برچسب منبع',
    false,
+
false,
    '//upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png',
+
'//upload.wikimedia.org/wikipedia/fa/5/59/Button_image_source.png',
    'برچسب تمیزکاری',
+
'برچسب منبع تصویر نامعلوم',
    'تمیزکاری',
+
'منبع تصویر نامعلوم',
    'broom'
+
'image-source'
  );
+
);
  
  /* اخطار نگاره */
+
/* حق تکثیر تصویر نامعلوم */
  tools.imgWarn = buttonGenerator(
+
tools.picCopy = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val('');
+
$('#wpTextbox1').val('{{' + 'جا:حق تکثیر تصویر نامعلوم}}\n' + $('#wpTextbox1').val());
      insertTags(
+
},
        '{{جا:اخطار نگاره|',
+
'برچسب حق تکثیر',
        '}}',
+
false,
        'نگاره'
+
'//upload.wikimedia.org/wikipedia/fa/7/7e/Button_image_copyright.png',
      );
+
'برچسب حق تکثیر تصویر نامعلوم',
    },
+
'حق تکثیر تصویر نامعلوم',
    'برچسب نگاره',
+
'image-copyright'
    false,
+
);
    '//upload.wikimedia.org/wikipedia/commons/e/ec/Button_aviso.png',
 
    'اخطار نگاره',
 
    'اخطار نگاره',
 
    'aviso'
 
  );
 
  
  /* حق تکثیر مشکوک */
+
/* تمیزکاری */
  tools.sus = buttonGenerator(
+
tools.cleanup = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val('{{حق تکثیر مشکوک}}\n' + $('#wpTextbox1').val());
+
$('#wpTextbox1').val('{{تمیزکاری}}\n' + $('#wpTextbox1').val());
    },
+
},
    'برچسب حق تکثیر',
+
'برچسب تمیزکاری',
    false,
+
false,
    '//upload.wikimedia.org/wikipedia/fa/c/c7/Button_Sus.png',
+
'//upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png',
    'برچسب حق تکثیر مشکوک',
+
'برچسب تمیزکاری',
    'حق تکثیر مشکوک',
+
'تمیزکاری',
    'sus'
+
'broom'
  );
+
);
  
  /* نقض حق تکثیر */
+
/* اخطار نگاره */
  tools.copyR = buttonGenerator(
+
tools.imgWarn = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val('');
+
$('#wpTextbox1').val('');
      insertTags(
+
mw.toolbar.insertTags(
        '{{جا:نقض حق تکثیر|url=',
+
'{{' + 'جا:اخطار نگاره|',
        '}}',
+
'}}',
        'نشانی ایرنتنتی'
+
'نگاره'
      );
+
);
    },
+
},
    'برچسب حق تکثیر',
+
'برچسب نگاره',
    false,
+
false,
    '//upload.wikimedia.org/wikipedia/fa/6/6f/Button_CopyR.png',
+
'//upload.wikimedia.org/wikipedia/commons/e/ec/Button_aviso.png',
    'برچسب نقض حق تکثیر',
+
'اخطار نگاره',
    'نقض حق تکثیر',
+
'اخطار نگاره',
    'copyr'
+
'aviso'
  );
+
);
  
  /* لحن نامناسب */
+
/* حق تکثیر مشکوک */
  tools.tone = buttonGenerator(
+
tools.sus = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val('{{لحن نامناسب}}\n' + $('#wpTextbox1').val());
+
$('#wpTextbox1').val('{{حق تکثیر مشکوک}}\n' + $('#wpTextbox1').val());
    },
+
},
    'برچسب لحن',
+
'برچسب حق تکثیر',
    false,
+
false,
    '//upload.wikimedia.org/wikipedia/fa/f/fc/Button_Tone.png',
+
'//upload.wikimedia.org/wikipedia/fa/c/c7/Button_Sus.png',
    'برچسب لحن نامناسب',
+
'برچسب حق تکثیر مشکوک',
    'لحن',
+
'حق تکثیر مشکوک',
    'tone'
+
'sus'
  );
+
);
  
  // Buttons that help with wiki writing
+
/* نقض حق تکثیر */
  /* تغییر جهت */
+
tools.copyR = buttonGenerator(
  tools.toggleDirection = buttonGenerator(
+
function () {
    function () {
+
$('#wpTextbox1').val('');
      $('#wpTextbox1, #wpNewTitleMain').css({
+
mw.toolbar.insertTags(
        'text-align': 'start',
+
'{{' + 'جا:نقض حق تکثیر|url=',
        'direction': $('#wpTextbox1, #wpNewTitleMain').css('direction') === 'rtl' ? 'ltr' : 'rtl'
+
'}}',
      });
+
'نشانی ایرنتنتی'
    },
+
);
    '',
+
},
    true,
+
'برچسب حق تکثیر',
    '//upload.wikimedia.org/wikipedia/fa/d/d0/Button_toggle_dir.png',
+
false,
    'تغییر جهت جعبهٔ ویرایش',
+
'//upload.wikimedia.org/wikipedia/fa/6/6f/Button_CopyR.png',
    'تغییرجهت',
+
'برچسب نقض حق تکثیر',
    'toggle-dir'
+
'نقض حق تکثیر',
  );
+
'copyr'
 +
);
  
  /* پیوند درونی */
+
/* لحن نامناسب */
  tools.wikiLink = buttonGenerator(
+
tools.tone = buttonGenerator(
    function () {
+
function () {
      insertTags('[[', ']]', 'مقاله');
+
$('#wpTextbox1').val('{{لحن نامناسب}}\n' + $('#wpTextbox1').val());
    },
+
},
    '',
+
'برچسب لحن',
    true,
+
false,
    '//upload.wikimedia.org/wikipedia/fa/d/d0/Button_in_wikify.png',
+
'//upload.wikimedia.org/wikipedia/fa/f/fc/Button_Tone.png',
    'پیوند',
+
'برچسب لحن نامناسب',
    'پیوند',
+
'لحن',
    'wikify'
+
'tone'
  );
+
);
  
  /* متن خطخورده */
+
// Buttons that help with wiki writing
  tools.strikeTextButton = buttonGenerator(
+
/* تغییر جهت */
    function () {
+
tools.toggleDirection = buttonGenerator(
      insertTags('<s>', '</s>', 'متن خط خورده');
+
function () {
    },
+
$('#wpTextbox1, [name=wpNewTitleMain], .ace_editor').css({
    '',
+
'text-align': 'start',
    true,
+
'direction': $('#wpTextbox1, [name=wpNewTitleMain]').css('direction') === 'rtl' ? 'ltr' : 'rtl'
    '//upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png',
+
});
    'متن خط\u200cخورده',
+
},
    'متن خط\u200cخورده',
+
'',
    'strike'
+
true,
  );
+
'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_toggle_dir.png',
 +
'تغییر جهت جعبهٔ ویرایش',
 +
'تغییرجهت',
 +
'toggle-dir'
 +
);
  
  /* توضیح */
+
/* پیوند درونی */
  tools.commentButton = buttonGenerator(
+
tools.wikiLink = buttonGenerator(
    function () {
+
function () {
      insertTags('<!--', '-->', 'توضیح');
+
mw.toolbar.insertTags('[[', ']]', 'مقاله');
    },
+
},
    '',
+
'',
    true,
+
true,
    '//upload.wikimedia.org/wikipedia/commons/3/34/Button_hide_comment.png',
+
'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_in_wikify.png',
    'توضیح',
+
'پیوند',
    'توضیح',
+
'پیوند',
    'hide-comment'
+
'wikify'
  );
+
);
  
  /* ملزومات مقاله */
+
/* متن خطخورده */
  tools.addEssentialThings = buttonGenerator(
+
tools.strikeTextButton = buttonGenerator(
    function () {
+
function () {
      insertTags('== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}', '', '');
+
mw.toolbar.insertTags('<s>', '</s>', 'متن خط خورده');
    },
+
},
    '',
+
'',
    true,
+
true,
    '//upload.wikimedia.org/wikipedia/commons/e/ef/Add_note.jpg',
+
'//upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png',
    'ملزومات مقاله',
+
'متن خط\u200cخورده',
    'ملزومات مقاله',
+
'متن خط\u200cخورده',
    'add-note'
+
'strike'
  );
+
);
  
  /* خوشامدید */
+
/* توضیح */
  tools.welcome = buttonGenerator(
+
tools.commentButton = buttonGenerator(
    function () {
+
function () {
      insertTags(
+
mw.toolbar.insertTags('<!--', '-->', 'توضیح');
        '{{جا:خوشامدید|~~~~}}',
+
},
        '',
+
'',
        ''
+
true,
      );
+
'//upload.wikimedia.org/wikipedia/commons/3/34/Button_hide_comment.png',
    },
+
'توضیح',
    'خوشامدگویی',
+
'توضیح',
    true,
+
'hide-comment'
    '//upload.wikimedia.org/wikipedia/commons/4/4a/Smilies_Alien_cool.png',
+
);
    'خوشامدگویی',
 
    'خوشامد',
 
    'alien-cool'
 
  );
 
  
  /* چپچین */
+
/* ملزومات مقاله */
  tools.chapChin = buttonGenerator(
+
tools.addEssentialThings = buttonGenerator(
    function () {
+
function () {
      insertTags(
+
mw.toolbar.insertTags('== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}', '', '');
        '{{چپ\u200cچین}}\n',
+
},
        '\n{{پایان چپ\u200cچین}}',
+
'',
        'متن چپ\u200cچین\u200cشده'
+
true,
      );
+
'//upload.wikimedia.org/wikipedia/commons/e/ef/Add_note.jpg',
    },
+
'ملزومات مقاله',
    '',
+
'ملزومات مقاله',
    true,
+
'add-note'
    '//upload.wikimedia.org/wikipedia/en/e/ea/Button_align_left.png',
+
);
    'چپ\u200cچین\u200cکردن متن',
+
/* خوشامدید */
    'چپ\u200cچین',
+
tools.welcome = buttonGenerator(
    'align-left'
+
function () {
  );
+
mw.toolbar.insertTags(
 +
'{{' + 'جا:خوشامدید|~~' + '~~}}',
 +
'',
 +
''
 +
);
 +
},
 +
'خوشامدگویی',
 +
true,
 +
'//upload.wikimedia.org/wikipedia/commons/4/4a/Smilies_Alien_cool.png',
 +
'خوشامدگویی',
 +
'خوشامد',
 +
'alien-cool'
 +
);
 +
/* چپچین */
 +
tools.chapChin = buttonGenerator(
 +
function () {
 +
mw.toolbar.insertTags(
 +
'{{چپ\u200cچین}}\n',
 +
'\n{{پایان چپ\u200cچین}}',
 +
'متن چپ\u200cچین\u200cشده'
 +
);
 +
},
 +
'',
 +
true,
 +
'//upload.wikimedia.org/wikipedia/en/e/ea/Button_align_left.png',
 +
'چپ\u200cچین\u200cکردن متن',
 +
'چپ\u200cچین',
 +
'align-left'
 +
);
  
  /* اندیس بالا */
+
/* اندیس بالا */
  tools.upperText = buttonGenerator(
+
tools.upperText = buttonGenerator(
    function () {
+
function () {
      insertTags('<sup>', '</sup>', 'اندیس');
+
mw.toolbar.insertTags('<sup>', '</sup>', 'اندیس');
    },
+
},
    '',
+
'',
    true,
+
true,
    '//upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png',
+
'//upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png',
    'اندیس بالا',
+
'اندیس بالا',
    'اندیس بالا',
+
'اندیس بالا',
    'upper-letter'
+
'upper-letter'
  );
+
);
  
  /* اندیس پایین */
+
/* اندیس پایین */
  tools.lowerText = buttonGenerator(
+
tools.lowerText = buttonGenerator(
    function () {
+
function () {
      insertTags('<sub>', '</sub>', 'اندیس');
+
mw.toolbar.insertTags('<sub>', '</sub>', 'اندیس');
    },
+
},
    '',
+
'',
    true,
+
true,
    '//upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png',
+
'//upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png',
    'اندیس پایین',
+
'اندیس پایین',
    'اندیس پایین',
+
'اندیس پایین',
    'lower-letter'
+
'lower-letter'
  );
+
);
  
  /* تغییرمسیر */
+
/* تغییرمسیر */
  tools.redirectButton = buttonGenerator(
+
tools.redirectButton = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val('');
+
$('#wpTextbox1').val('');
      insertTags(
+
mw.toolbar.insertTags(
        '#تغییرمسیر [[',
+
'#تغییرمسیر [[',
        ']]',
+
']]',
        'پیوند'
+
'پیوند'
      );
+
);
    },
+
},
    '',
+
'',
    true,
+
true,
    '//upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png',
+
'//upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png',
    'تغییرمسیر',
+
'تغییرمسیر',
    'تغییرمسیر',
+
'تغییرمسیر',
    'redirect'
+
'redirect'
  );
+
);
  
  /* سال میلادی */
+
/* سال میلادی */
  tools.gregYear = buttonGenerator(
+
tools.gregYear = buttonGenerator(
    function () {
+
function () {
      insertTags(
+
mw.toolbar.insertTags(
        '[[',
+
'[[',
        ' (میلادی)|]]',
+
' (میلادی)|]]',
        'سال'
+
'سال'
      );
+
);
    },
+
},
    '',
+
'',
    true,
+
true,
    '//upload.wikimedia.org/wikipedia/fa/a/a7/Button_cal.png',
+
'//upload.wikimedia.org/wikipedia/fa/a/a7/Button_cal.png',
    'سال میلادی',
+
'سال میلادی',
    'میلادی',
+
'میلادی',
    'cal'
+
'cal'
  );
+
);
  
  /* مرتبسازی */
+
/* مرتبسازی */
  tools.sortText = buttonGenerator(
+
tools.sortText = buttonGenerator(
    function () {
+
function () {
      applyOnSelection(persianWikiTools.persianSortText);
+
applyOnSelection(persianTools.persianSortText);
    },
+
},
    '',
+
'',
    true,
+
true,
    '//upload.wikimedia.org/wikipedia/fa/3/33/Button_sort.png',
+
'//upload.wikimedia.org/wikipedia/fa/3/33/Button_sort.png',
    'مرتب\u200cسازی بر اساس الفبا',
+
'مرتب\u200cسازی بر اساس الفبا',
    'مرتب\u200cسازی',
+
'مرتب\u200cسازی',
    'sort'
+
'sort'
  );
+
);
  
  /* شد! */
+
/* شد! */
  tools.shod = buttonGenerator(
+
tools.shod = buttonGenerator(
    function () {
+
function () {
      $('#wpTextbox1').val($('#wpTextbox1').val() + '\n:{{شد}} ~~~~');
+
$('#wpTextbox1').val($('#wpTextbox1').val().trimRight() + '\n:{{شد}} ~~' + '~~');
    },
+
},
    'شد',
+
'شد',
    true,
+
true,
    '//upload.wikimedia.org/wikipedia/commons/5/5b/Button_check.png',
+
'//upload.wikimedia.org/wikipedia/commons/5/5b/Button_check.png',
    'شد',
+
'شد',
    'شد',
+
'شد',
    'check'
+
'check'
  );
+
);
 +
  /* عدد انگلیسی */
 +
tools.toEnNumRobust = buttonGenerator(
 +
function () {
 +
applyOnSelection(persianWikiTools.robustToEnglishDigits);
 +
},
 +
'عدد انگلیسی',
 +
false,
 +
'//upload.wikimedia.org/wikipedia/commons/f/f5/Button_enNum.png',
 +
'عدد انگلیسی',
 +
'عدد انگلیسی',
 +
'ToEnNumberRobust'
 +
);
 +
$(function () {
 +
var extraEditButtons = [],
 +
extraMoveButtons = [],
 +
space = ' ';
  
  $(function () {
+
extraEditButtons = extraEditButtons.concat(tools.toggleDirection, space, tools.ykArabic, tools.zwnj, tools.applyOrthography,
    var extraEditButtons = [], extraMoveButtons = [], space = ' ';
+
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);
  
    extraEditButtons = extraEditButtons.concat(tools.toggleDirection, space, tools.ykArabic, tools.zwnj, tools.nonStandard,
+
extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []);
      tools.dig, tools.punc, tools.dictation, tools.superTool, space, tools.urlFix, 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);
 
  
    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);
  
    extraMoveButtons = extraMoveButtons.concat(tools.superToolMove, space, tools.toggleDirection, space,
+
$('#persian-wiki-tools').remove();
      tools.ykArabic, tools.zwnj, tools.nonStandard, tools.digMove, tools.punc, space, tools.dictation);
+
if ($('#wpTextbox1').length !== 0) {
 
+
$('<div>', {
    if ($('#wpTextbox1').length !== 0) {
+
id: 'persian-wiki-tools',
      $('<div id="persian-wiki-tools" />').append(extraEditButtons).insertBefore('#wpTextbox1');
+
dir: 'rtl',
    }
+
style: 'float:right;'
    if ($('#movepage').length !== 0) {
+
}).append(extraEditButtons).insertBefore('#wpTextbox1');
      $('<span id="persian-wiki-tools" />').append(extraMoveButtons).insertAfter('#wpNewTitleMain');
+
}
    }
+
if ($('#movepage').length !== 0) {
  });
+
$('<span>', {
 +
id: 'persian-wiki-tools'
 +
}).append(extraMoveButtons).insertAfter('#wpNewTitle');
 +
}
 +
});
 
}(jQuery, mediaWiki));
 
}(jQuery, mediaWiki));

نسخهٔ کنونی تا ‏۱۳ دسامبر ۲۰۱۶، ساعت ۱۹:۵۹

// <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';

	// ابزار در حالت نمایش
	/**
	 * 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('editToken')
		});
	}

	/**
	 * 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('wgPageName') !== 'صفحهٔ_اصلی') {
		$.when($.ready, mw.loader.using('jquery.ui.dialog')).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
										window.location = new mw.Uri(mw.config.get('wgScript')).extend({
											title: mw.config.get('wgPageName'),
											diff: data.edit.newrevid
										});
									}
								} 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 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('');
			mw.toolbar.insertTags('{{' + 'حذف سریع|', '}}\n' + temp, 'معیار');
		},
		'حذف سریع',
		true,
		'//upload.wikimedia.org/wikipedia/fa/c/c1/Button_delete_vote.png',
		'برچسب حذف سریع',
		'حذف سریع',
		'delete-vote'
	);

	/* حذف زماندار */
	tools.prod = buttonGenerator(
		function () {
			var temp = $('#wpTextbox1').val();
			$('#wpTextbox1').val('');
			mw.toolbar.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('');
			mw.toolbar.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('');
			mw.toolbar.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.wikiLink = buttonGenerator(
		function () {
			mw.toolbar.insertTags('[[', ']]', 'مقاله');
		},
		'',
		true,
		'//upload.wikimedia.org/wikipedia/fa/d/d0/Button_in_wikify.png',
		'پیوند',
		'پیوند',
		'wikify'
	);

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

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

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

	/* اندیس بالا */
	tools.upperText = buttonGenerator(
		function () {
			mw.toolbar.insertTags('<sup>', '</sup>', 'اندیس');
		},
		'',
		true,
		'//upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png',
		'اندیس بالا',
		'اندیس بالا',
		'upper-letter'
	);

	/* اندیس پایین */
	tools.lowerText = buttonGenerator(
		function () {
			mw.toolbar.insertTags('<sub>', '</sub>', 'اندیس');
		},
		'',
		true,
		'//upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png',
		'اندیس پایین',
		'اندیس پایین',
		'lower-letter'
	);

	/* تغییرمسیر */
	tools.redirectButton = buttonGenerator(
		function () {
			$('#wpTextbox1').val('');
			mw.toolbar.insertTags(
				'#تغییرمسیر [[',
				']]',
				'پیوند'
			);
		},
		'',
		true,
		'//upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png',
		'تغییرمسیر',
		'تغییرمسیر',
		'redirect'
	);

	/* سال میلادی */
	tools.gregYear = buttonGenerator(
		function () {
			mw.toolbar.insertTags(
				'[[',
				' (میلادی)|]]',
				'سال'
			);
		},
		'',
		true,
		'//upload.wikimedia.org/wikipedia/fa/a/a7/Button_cal.png',
		'سال میلادی',
		'میلادی',
		'cal'
	);

	/* مرتبسازی */
	tools.sortText = buttonGenerator(
		function () {
			applyOnSelection(persianTools.persianSortText);
		},
		'',
		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'
	);
	$(function () {
		var extraEditButtons = [],
			extraMoveButtons = [],
			space = ' ';

		extraEditButtons = extraEditButtons.concat(tools.toggleDirection, 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);

		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));