مدیاویکی:Gadget-Extra-Editbuttons.js
پرش به ناوبری
پرش به جستجو
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر/ Edge: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: Ctrl-F5 را بفشارید.
// <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));