مدیاویکی:Gadget-Extra-Editbuttons.js
نسخهٔ تاریخ ۲۱ ژوئن ۲۰۱۴، ساعت ۱۴:۵۷ توسط Bellavista (گفتگو | مشارکتها)
نکته: پس از ذخیره کردن ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید 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 /*jslint indent: 2, browser: true*/ /*global jQuery, mediaWiki, persianWikiTools, insertTags*/ (function ($, mw) { 'use strict'; // ابزار در حالت نمایش function loadPage(title, callback) { new mw.Api().get({ action: 'query', prop: 'revisions', titles: title, rvprop: 'content', format: 'json' }).done(function (data) { callback($.map(data.query.pages, function (value) { return value; })[0].revisions[0]['*']); }); } 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(); } }); }); }); }); } // ابزار در حالت ویرایش /** * 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 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 * the function to the whole contents of edit box. */ function applyOnSelection(callback) { var txtarea, range, startPos, endPos, selText; if (document.getElementById('editform')) { txtarea = document.getElementById('wpTextbox1'); } else if (document.getElementById('wpNewTitleMain')) { txtarea = document.getElementById('wpNewTitleMain'); } 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(persianWikiTools.wikiConvertToPersianCharacters); }, 'اصلاح نویسه\u200cهای عربی', false, '//upload.wikimedia.org/wikipedia/commons/8/88/Button_YehKeh.png', 'اصلاح ی و ک', 'ی و ک', 'YehKeh' ); /* فاصلهٔ مجازی */ tools.zwnj = buttonGenerator( function () { applyOnSelection(persianWikiTools.applyZwnj); }, 'اصلاح فاصلهٔ مجازی', false, '//upload.wikimedia.org/wikipedia/fa/d/d0/Button_ZWNJ.png', 'فاصلهٔ مجازی', 'فاصلهٔ مجازی', 'ZWNJ' ); /* نویسهٔ غیراستاندارد */ tools.nonStandard = buttonGenerator( function () { applyOnSelection(persianWikiTools.nonStandard); }, 'اصلاح نویسه', false, '//upload.wikimedia.org/wikipedia/fa/9/94/Button_non_standard.png', 'نویسه\u200cهای غیراستاندارد', 'نویسه\u200cهای غیراستاندارد', 'non-standard' ); /* اصلاح ارقام */ 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.convertDigitsToPersian); }, 'اصلاح ارقام', false, '//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png', 'اصلاح ارقام', 'ارقام', 'numbers' ); /* یونیکد نشانی وب */ 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(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.wikiUrlMinifier(text); 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( function () { applyOnSelection(persianWikiTools.wikiDictation); }, 'اصلاح املا', false, '//upload.wikimedia.org/wikipedia/commons/a/a3/Button_Dictation-fa.png', 'املا', 'املا', 'dictation' ); /* ابرابزار مخصوص صفحه انتقال */ tools.superToolMove = buttonGenerator( function () { applyOnSelection(function (text) { text = persianWikiTools.wikiConvertToPersianCharacters(text); text = persianWikiTools.applyZwnj(text); text = persianWikiTools.nonStandard(text); text = persianWikiTools.wikiTextDigitsToPersian(text); text = persianWikiTools.wikiUrlMinifier(text); text = persianWikiTools.wikiDictation(text); return persianWikiTools.wikiPunctuation(text); }); }, 'ابرابزار', false, '//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png', 'ابرابزار', 'ابرابزار', 'super-tool' ); /* اصلاحات قراردادن نقطه */ tools.punc = buttonGenerator( function () { applyOnSelection(persianWikiTools.wikiPunctuation); }, 'اصلاح سجاوندی', false, '//upload.wikimedia.org/wikipedia/fa/e/ed/Button_punctuation.png', 'نقطه\u200cگذاری', 'نقطه\u200cگذاری', 'punctuation' ); // Buttons that add tags /* برچسب ویکی\u200cسازی */ tools.wikify = buttonGenerator( function () { $('#wpTextbox1').val('{{ویکی\u200cسازی}}\n' + $('#wpTextbox1').val()); }, 'برچسب ویکی\u200cسازی', false, '//upload.wikimedia.org/wikipedia/fa/3/38/Button_wikify.png', 'برچسب ویکی\u200cسازی', 'ویکی\u200cسازی', 'wikify' ); /* بدون منبع */ tools.noSource = buttonGenerator( function () { $('#wpTextbox1').val('{{بدون منبع}}\n' + $('#wpTextbox1').val()); }, 'برچسب منبع', false, '//upload.wikimedia.org/wikipedia/fa/8/8a/Button_no_source_fa.png', 'برچسب بدون منبع', 'بدون منبع', 'no-source' ); /* حذف سریع */ tools.speedyDel = buttonGenerator( function () { var temp = $('#wpTextbox1').val(); $('#wpTextbox1').val(''); insertTags('{{حذف سریع|', '}}\n' + temp, 'معیار'); }, 'حذف سریع', true, '//upload.wikimedia.org/wikipedia/fa/c/c1/Button_delete_vote.png', 'برچسب حذف سریع', 'حذف سریع', 'delete-vote' ); /* حذف زماندار */ tools.prod = buttonGenerator( function () { var temp = $('#wpTextbox1').val(); $('#wpTextbox1').val(''); insertTags('{{جا:حذف زمان\u200cدار|', '}}\n' + temp, 'معیار'); }, 'حذف زمان\u200cدار', true, '//upload.wikimedia.org/wikipedia/commons/3/3f/Button_attendre.png', 'برچسب حذف زمان\u200cدار', 'حذف زمان\u200cدار', 'attendre' ); /* منبع تصویر نامعلوم */ tools.picSource = buttonGenerator( function () { $('#wpTextbox1').val('{{منبع تصویر نامعلوم}}\n' + $('#wpTextbox1').val()); }, 'برچسب منبع', false, '//upload.wikimedia.org/wikipedia/fa/5/59/Button_image_source.png', 'برچسب منبع تصویر نامعلوم', 'منبع تصویر نامعلوم', 'image-source' ); /* حق تکثیر تصویر نامعلوم */ tools.picCopy = buttonGenerator( function () { $('#wpTextbox1').val('{{جا:حق تکثیر تصویر نامعلوم}}\n' + $('#wpTextbox1').val()); }, 'برچسب حق تکثیر', false, '//upload.wikimedia.org/wikipedia/fa/7/7e/Button_image_copyright.png', 'برچسب حق تکثیر تصویر نامعلوم', 'حق تکثیر تصویر نامعلوم', 'image-copyright' ); /* تمیزکاری */ tools.cleanup = buttonGenerator( function () { $('#wpTextbox1').val('{{تمیزکاری}}\n' + $('#wpTextbox1').val()); }, 'برچسب تمیزکاری', false, '//upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png', 'برچسب تمیزکاری', 'تمیزکاری', 'broom' ); /* اخطار نگاره */ tools.imgWarn = buttonGenerator( function () { $('#wpTextbox1').val(''); insertTags( '{{جا:اخطار نگاره|', '}}', 'نگاره' ); }, 'برچسب نگاره', false, '//upload.wikimedia.org/wikipedia/commons/e/ec/Button_aviso.png', 'اخطار نگاره', 'اخطار نگاره', 'aviso' ); /* حق تکثیر مشکوک */ tools.sus = buttonGenerator( function () { $('#wpTextbox1').val('{{حق تکثیر مشکوک}}\n' + $('#wpTextbox1').val()); }, 'برچسب حق تکثیر', false, '//upload.wikimedia.org/wikipedia/fa/c/c7/Button_Sus.png', 'برچسب حق تکثیر مشکوک', 'حق تکثیر مشکوک', 'sus' ); /* نقض حق تکثیر */ tools.copyR = buttonGenerator( function () { $('#wpTextbox1').val(''); insertTags( '{{جا:نقض حق تکثیر|url=', '}}', 'نشانی ایرنتنتی' ); }, 'برچسب حق تکثیر', false, '//upload.wikimedia.org/wikipedia/fa/6/6f/Button_CopyR.png', 'برچسب نقض حق تکثیر', 'نقض حق تکثیر', 'copyr' ); /* لحن نامناسب */ tools.tone = buttonGenerator( function () { $('#wpTextbox1').val('{{لحن نامناسب}}\n' + $('#wpTextbox1').val()); }, 'برچسب لحن', false, '//upload.wikimedia.org/wikipedia/fa/f/fc/Button_Tone.png', 'برچسب لحن نامناسب', 'لحن', 'tone' ); // Buttons that help with wiki writing /* تغییر جهت */ tools.toggleDirection = buttonGenerator( function () { $('#wpTextbox1, #wpNewTitleMain').css({ 'text-align': 'start', 'direction': $('#wpTextbox1, #wpNewTitleMain').css('direction') === 'rtl' ? 'ltr' : 'rtl' }); }, '', true, '//upload.wikimedia.org/wikipedia/fa/d/d0/Button_toggle_dir.png', 'تغییر جهت جعبهٔ ویرایش', 'تغییرجهت', 'toggle-dir' ); /* پیوند درونی */ tools.wikiLink = buttonGenerator( function () { insertTags('[[', ']]', 'مقاله'); }, '', true, '//upload.wikimedia.org/wikipedia/fa/d/d0/Button_in_wikify.png', 'پیوند', 'پیوند', 'wikify' ); /* متن خطخورده */ tools.strikeTextButton = buttonGenerator( function () { insertTags('<s>', '</s>', 'متن خط خورده'); }, '', true, '//upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png', 'متن خط\u200cخورده', 'متن خط\u200cخورده', 'strike' ); /* توضیح */ tools.commentButton = buttonGenerator( function () { insertTags('<!--', '-->', 'توضیح'); }, '', true, '//upload.wikimedia.org/wikipedia/commons/3/34/Button_hide_comment.png', 'توضیح', 'توضیح', 'hide-comment' ); /* ملزومات مقاله */ tools.addEssentialThings = buttonGenerator( function () { insertTags('== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}', '', ''); }, '', true, '//upload.wikimedia.org/wikipedia/commons/e/ef/Add_note.jpg', 'ملزومات مقاله', 'ملزومات مقاله', 'add-note' ); /* خوشامدید */ tools.welcome = buttonGenerator( function () { insertTags( '{{جا:خوشامدید|~~~~}}', '', '' ); }, 'خوشامدگویی', true, '//upload.wikimedia.org/wikipedia/commons/4/4a/Smilies_Alien_cool.png', 'خوشامدگویی', 'خوشامد', 'alien-cool' ); /* چپچین */ tools.chapChin = buttonGenerator( function () { insertTags( '{{چپ\u200cچین}}\n', '\n{{پایان چپ\u200cچین}}', 'متن چپ\u200cچین\u200cشده' ); }, '', true, '//upload.wikimedia.org/wikipedia/en/e/ea/Button_align_left.png', 'چپ\u200cچین\u200cکردن متن', 'چپ\u200cچین', 'align-left' ); /* اندیس بالا */ tools.upperText = buttonGenerator( function () { insertTags('<sup>', '</sup>', 'اندیس'); }, '', true, '//upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png', 'اندیس بالا', 'اندیس بالا', 'upper-letter' ); /* اندیس پایین */ tools.lowerText = buttonGenerator( function () { insertTags('<sub>', '</sub>', 'اندیس'); }, '', true, '//upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png', 'اندیس پایین', 'اندیس پایین', 'lower-letter' ); /* تغییرمسیر */ tools.redirectButton = buttonGenerator( function () { $('#wpTextbox1').val(''); insertTags( '#تغییرمسیر [[', ']]', 'پیوند' ); }, '', true, '//upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png', 'تغییرمسیر', 'تغییرمسیر', 'redirect' ); /* سال میلادی */ tools.gregYear = buttonGenerator( function () { insertTags( '[[', ' (میلادی)|]]', 'سال' ); }, '', true, '//upload.wikimedia.org/wikipedia/fa/a/a7/Button_cal.png', 'سال میلادی', 'میلادی', 'cal' ); /* مرتبسازی */ tools.sortText = buttonGenerator( function () { applyOnSelection(persianWikiTools.persianSortText); }, '', true, '//upload.wikimedia.org/wikipedia/fa/3/33/Button_sort.png', 'مرتب\u200cسازی بر اساس الفبا', 'مرتب\u200cسازی', 'sort' ); /* شد! */ tools.shod = buttonGenerator( function () { $('#wpTextbox1').val($('#wpTextbox1').val() + '\n:{{شد}} ~~~~'); }, 'شد', true, '//upload.wikimedia.org/wikipedia/commons/5/5b/Button_check.png', 'شد', 'شد', 'check' ); $(function () { var extraEditButtons = [], extraMoveButtons = [], space = ' '; extraEditButtons = extraEditButtons.concat(tools.toggleDirection, space, tools.ykArabic, tools.zwnj, tools.nonStandard, 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.nonStandard, tools.digMove, tools.punc, space, tools.dictation); if ($('#wpTextbox1').length !== 0) { $('<div id="persian-wiki-tools" />').append(extraEditButtons).insertBefore('#wpTextbox1'); } if ($('#movepage').length !== 0) { $('<span id="persian-wiki-tools" />').append(extraMoveButtons).insertAfter('#wpNewTitleMain'); } }); }(jQuery, mediaWiki));