مدیاویکی:Gadget-Extra-Editbuttons.js
پرش به ناوبری
پرش به جستجو
نکته: پس از ذخیره کردن ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: بروید به Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
// <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));