مدیاویکی:Gadget-Extra-Editbuttons.js: تفاوت میان نسخهها
Nazarzadeh (بحث | مشارکتها) بدون خلاصۀ ویرایش |
Nazarzadeh (بحث | مشارکتها) بدون خلاصۀ ویرایش |
||
خط ۱۴: | خط ۱۴: | ||
'use strict'; | 'use strict'; | ||
// | |||
// ابزار در حالت نمایش | // ابزار در حالت نمایش | ||
/ | // | ||
function loadPage(title) { | function loadPage(title) { | ||
return new mw.Api().get({ | return new mw.Api().get({ | ||
خط ۲۶: | خط ۲۶: | ||
format: 'json' | format: 'json' | ||
}).then(function (data) { | }).then(function (data) { | ||
return | return Object.values(data.query.pages)[0].revisions[0]['*']; | ||
}); | }); | ||
} | } | ||
function | function redirectPost(url, data) { | ||
var | var form = document.createElement('form'); | ||
document.body.appendChild(form); | |||
form.method = 'post'; | |||
form.action = url; | |||
for (var name in data) { | |||
var input = document.createElement('input'); | |||
input.type = 'hidden'; | |||
input.name = name; | |||
input.value = data[name]; | |||
form.appendChild(input); | |||
} | |||
form.submit(); | |||
} | |||
function addWatchthisParamIfAlreadyIsWatched(object) { | |||
// if unwatch button exists it is in the user's watchlist right now | |||
if ($('#ca-unwatch').length) { | |||
object.wpWatchthis = ''; | |||
} | } | ||
return object; | |||
} | |||
function bringShowChanges(page, content, summary) { | |||
redirectPost(new mw.Uri(mw.config.get('wgScript')).extend({ | |||
title: page, | |||
action: 'submit' | |||
}), addWatchthisParamIfAlreadyIsWatched({ | |||
wpTextbox1: content, | |||
wpDiff: '', | |||
wpSummary: summary, | |||
wpUltimateParam: 1 | |||
})); | |||
} | } | ||
if (mw.config.get('wgAction') === 'view' && | if (mw.config.get('wgAction') === 'view' && | ||
mw.config.get('wgIsArticle') && | mw.config.get('wgIsArticle') && | ||
mw.config.get('wgUserEditCount')>100&& | mw.config.get('wgUserEditCount') > 100 && | ||
mw.config.get('wgPageName') !== 'صفحهٔ_اصلی') { | mw.config.get('wgPageName') !== 'صفحهٔ_اصلی' && | ||
$('#mw-imagepage-nofile, #noarticletext').length === 0 && | |||
mw.config.get('wgNamespaceNumber') !== 6 && | |||
mw.config.get('wgNamespaceNumber') !== 8) { | |||
$('#ca-abar-abzar').remove(); | $('#ca-abar-abzar').remove(); | ||
var interwikiFix = !$('#t-wikibase').length && | |||
$('.interlanguage-link').length && | |||
$('.wbc-editpage').length; | |||
$(mw.util.addPortletLink( | |||
'p-views', '#', | |||
var interwikiFix = | interwikiFix ? 'ابرابزار+انتقال میانویکی' : 'ابرابزار', | ||
'ca-abar-abzar', | |||
interwikiFix ? | |||
'ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میانویکی سنتی به ویکیداده' : | |||
$(mw.util.addPortletLink('p- | 'ابزار پیشرفتهٔ ویرایش متن' | ||
)).click(function (e) { | |||
e.preventDefault(); | e.preventDefault(); | ||
Promise.all([ | |||
// افزودن میانویکی سنتی به ویکیداده به صورت خودکار | |||
interwikiFix ? | |||
$.get('//dexbot.toolforge.org/interwikidata.php', { | |||
page: mw.config.get('wgPageName') | |||
}) : '', | |||
// اجرای کدهای ربات | |||
botworks.trigFillcat, | |||
botworks.trigMissedFileUpload, | |||
botworks.trigMissedRef | |||
]).catch(function () {}).then(function () { | |||
return loadPage(mw.config.get('wgPageName')); | |||
}).then(function (content) { | |||
bringShowChanges( | |||
mw.config.get('wgPageName'), | |||
persianWikiTools.superTool(content), | |||
'ابرابزار' | |||
); | |||
}); | }); | ||
}); | }); | ||
} | } | ||
// | |||
// ابزار در حالت ویرایش | // ابزار در حالت ویرایش | ||
// | |||
function insertTags(pre, post, peri) { | |||
if ($('#wpTextbox1').length) { | |||
$('#wpTextbox1').textSelection( | |||
'encapsulateSelection', { pre: pre, peri: peri, post: post } | |||
); | |||
} | |||
} | |||
/** | /** | ||
* Adds edit summary | * Adds edit summary | ||
*/ | */ | ||
function addEditSummary(summaryText, replaceSummary) { | function addEditSummary(summaryText, replaceSummary) { | ||
var summary = $('input#wpSummary, #wpSummary > input'), | var summary = $('input#wpSummary, #wpSummary > input'), | ||
summaryPrefix = '', | summaryPrefix = '', | ||
pos; | pos; | ||
if (summary.length === 0) { | if (mw.util.getParamValue('section') === 'new' || | ||
summaryText === '' || summary.length === 0) { | |||
return; | return; | ||
} | } | ||
if (summary.val(). | if (summary.val().includes('*/ ')) { | ||
pos = summary.val().indexOf('*/ '); | pos = summary.val().indexOf('*/ '); | ||
summaryPrefix = summary.val().substr(0, pos + 3); | summaryPrefix = summary.val().substr(0, pos + 3); | ||
خط ۱۲۲: | خط ۱۴۰: | ||
summary.val(summary.val() + summaryText); | summary.val(summary.val() + summaryText); | ||
} else { | } else { | ||
if (summary.val(). | if (!summary.val().includes(summaryText)) { // do not repeat in edit summary | ||
summary.val(summary.val() + '، ' + summaryText); | summary.val(summary.val() + '، ' + summaryText); | ||
} | } | ||
خط ۱۹۵: | خط ۲۱۳: | ||
} | } | ||
} | } | ||
} | } | ||
خط ۳۲۴: | خط ۳۳۰: | ||
tools.superTool = buttonGenerator( | tools.superTool = buttonGenerator( | ||
function () { | function () { | ||
applyOnSelection(persianWikiTools.superTool); | |||
}, | }, | ||
'ابرابزار', | 'ابرابزار', | ||
خط ۳۳۸: | خط ۳۴۰: | ||
); | ); | ||
/* ابزار املا | /* ابزار املا | ||
tools.dictation = buttonGenerator( | tools.dictation = buttonGenerator( | ||
function () { | function () { | ||
خط ۳۵۰: | خط ۳۵۲: | ||
'dictation' | 'dictation' | ||
); | ); | ||
*/ | |||
/* ابرابزار مخصوص صفحه انتقال */ | /* ابرابزار مخصوص صفحه انتقال */ | ||
tools.superToolMove = buttonGenerator( | tools.superToolMove = buttonGenerator( | ||
خط ۳۷۸: | خط ۳۸۰: | ||
// Buttons that add tags | // Buttons that add tags | ||
/* برچسب ویکی\u200cسازی | /* برچسب ویکی\u200cسازی | ||
tools.wikify = buttonGenerator( | tools.wikify = buttonGenerator( | ||
function () { | function () { | ||
خط ۳۹۰: | خط ۳۹۲: | ||
'wikify' | 'wikify' | ||
); | ); | ||
*/ | |||
/* بدون منبع | /* بدون منبع | ||
tools.noSource = buttonGenerator( | tools.noSource = buttonGenerator( | ||
function () { | function () { | ||
خط ۴۰۳: | خط ۴۰۵: | ||
'no-source' | 'no-source' | ||
); | ); | ||
*/ | |||
/* حذف سریع | /* حذف سریع | ||
tools.speedyDel = buttonGenerator( | tools.speedyDel = buttonGenerator( | ||
function () { | function () { | ||
خط ۴۱۸: | خط ۴۲۰: | ||
'delete-vote' | 'delete-vote' | ||
); | ); | ||
*/ | |||
/* حذف زماندار | /* حذف زماندار | ||
tools.prod = buttonGenerator( | tools.prod = buttonGenerator( | ||
function () { | function () { | ||
خط ۴۳۳: | خط ۴۳۵: | ||
'attendre' | 'attendre' | ||
); | ); | ||
*/ | |||
/* منبع تصویر نامعلوم | /* منبع تصویر نامعلوم | ||
tools.picSource = buttonGenerator( | tools.picSource = buttonGenerator( | ||
function () { | function () { | ||
خط ۴۴۶: | خط ۴۴۸: | ||
'image-source' | 'image-source' | ||
); | ); | ||
*/ | |||
/* حق تکثیر تصویر نامعلوم | /* حق تکثیر تصویر نامعلوم | ||
tools.picCopy = buttonGenerator( | tools.picCopy = buttonGenerator( | ||
function () { | function () { | ||
خط ۴۵۹: | خط ۴۶۱: | ||
'image-copyright' | 'image-copyright' | ||
); | ); | ||
*/ | |||
/* تمیزکاری | /* تمیزکاری | ||
tools.cleanup = buttonGenerator( | tools.cleanup = buttonGenerator( | ||
function () { | function () { | ||
خط ۴۷۳: | خط ۴۷۵: | ||
); | ); | ||
*/ | */ | ||
/* اخطار نگاره | /* اخطار نگاره | ||
tools.imgWarn = buttonGenerator( | tools.imgWarn = buttonGenerator( | ||
function () { | function () { | ||
خط ۴۹۱: | خط ۴۹۳: | ||
); | ); | ||
*/ | */ | ||
/* حق تکثیر مشکوک | /* حق تکثیر مشکوک | ||
tools.sus = buttonGenerator( | tools.sus = buttonGenerator( | ||
function () { | function () { | ||
خط ۵۰۴: | خط ۵۰۶: | ||
); | ); | ||
*/ | */ | ||
/* نقض حق تکثیر | /* نقض حق تکثیر | ||
tools.copyR = buttonGenerator( | tools.copyR = buttonGenerator( | ||
function () { | function () { | ||
خط ۵۲۲: | خط ۵۲۴: | ||
); | ); | ||
*/ | */ | ||
/* لحن نامناسب | /* لحن نامناسب | ||
tools.tone = buttonGenerator( | |||
function () { | function () { | ||
$('#wpTextbox1').val('{' + '{لحن نامناسب}}\n' + $('#wpTextbox1').val()); | $('#wpTextbox1').val('{' + '{لحن نامناسب}}\n' + $('#wpTextbox1').val()); | ||
خط ۵۵۱: | خط ۵۵۳: | ||
'toggle-dir' | 'toggle-dir' | ||
); | ); | ||
tools.putSelectionInBDI = buttonGenerator( | |||
function () { | |||
applyOnSelection(persianWikiTools.putSelectionInBDI); | |||
}, | |||
'جداسازی دوجهته', | |||
false, | |||
'//upload.wikimedia.org/wikipedia/commons/3/31/Button_bdi_tag.png', | |||
'جداسازی دوجهته', | |||
'دوجهته', | |||
'put-in-bdi' | |||
); | |||
/* پیوند درونی */ | /* پیوند درونی */ | ||
خط ۵۹۱: | خط ۶۰۷: | ||
); | ); | ||
/* ملزومات مقاله | /* ملزومات مقاله | ||
tools.addEssentialThings = buttonGenerator( | tools.addEssentialThings = buttonGenerator( | ||
function () { | function () { | ||
خط ۶۰۲: | خط ۶۱۸: | ||
'ملزومات مقاله', | 'ملزومات مقاله', | ||
'add-note' | 'add-note' | ||
); | );*/ | ||
/* خوشامدید | /* خوشامدید | ||
tools.welcome = buttonGenerator( | tools.welcome = buttonGenerator( | ||
function () { | function () { | ||
خط ۶۱۸: | خط ۶۳۴: | ||
'خوشامد', | 'خوشامد', | ||
'alien-cool' | 'alien-cool' | ||
); | );*/ | ||
/* چپچین */ | /* چپچین */ | ||
tools.chapChin = buttonGenerator( | tools.chapChin = buttonGenerator( | ||
خط ۶۳۶: | خط ۶۵۲: | ||
); | ); | ||
/* اندیس بالا | /* اندیس بالا | ||
tools.upperText = buttonGenerator( | tools.upperText = buttonGenerator( | ||
function () { | function () { | ||
خط ۶۴۸: | خط ۶۶۴: | ||
'upper-letter' | 'upper-letter' | ||
); | ); | ||
*/ | |||
/* اندیس پایین | /* اندیس پایین | ||
tools.lowerText = buttonGenerator( | tools.lowerText = buttonGenerator( | ||
function () { | function () { | ||
خط ۶۶۱: | خط ۶۷۷: | ||
'lower-letter' | 'lower-letter' | ||
); | ); | ||
*/ | |||
/* تغییرمسیر | /* تغییرمسیر | ||
tools.redirectButton = buttonGenerator( | tools.redirectButton = buttonGenerator( | ||
function () { | function () { | ||
خط ۶۷۹: | خط ۶۹۵: | ||
'redirect' | 'redirect' | ||
); | ); | ||
*/ | |||
/* سال میلادی */ | /* سال میلادی */ | ||
tools.gregYear = buttonGenerator( | tools.gregYear = buttonGenerator( | ||
خط ۷۰۰: | خط ۷۱۶: | ||
tools.sortText = buttonGenerator( | tools.sortText = buttonGenerator( | ||
function () { | function () { | ||
applyOnSelection(persianTools. | applyOnSelection(function (text) { | ||
return persianTools.persianSort(text.split('\n')).join('\n'); | |||
}); | |||
}, | }, | ||
'', | '', | ||
خط ۷۱۰: | خط ۷۲۸: | ||
); | ); | ||
/* شد! | /* شد! | ||
tools.shod = buttonGenerator( | tools.shod = buttonGenerator( | ||
function () { | function () { | ||
خط ۷۲۱: | خط ۷۳۹: | ||
'شد', | 'شد', | ||
'check' | 'check' | ||
); | );*/ | ||
/* عدد انگلیسی */ | |||
tools.toEnNumRobust = buttonGenerator( | tools.toEnNumRobust = buttonGenerator( | ||
function () { | function () { | ||
خط ۷۳۴: | خط ۷۵۲: | ||
'ToEnNumberRobust' | 'ToEnNumberRobust' | ||
); | ); | ||
/* حذف ویکیسازی | /* حذف ویکیسازی | ||
tools.removeWiki = buttonGenerator( | tools.removeWiki = buttonGenerator( | ||
function () { | function () { | ||
خط ۷۴۵: | خط ۷۶۳: | ||
'حذف ویکیسازی', | 'حذف ویکیسازی', | ||
'removeWiki' | 'removeWiki' | ||
); | );*/ | ||
$(function () { | $(function () { | ||
if (typeof Array.prototype.includes !== 'function') { | |||
mw.log.error('Script not supported by browser.'); | |||
return; | |||
} | |||
// کد مناسب ویرایشگر جدید متنی | // کد مناسب ویرایشگر جدید متنی | ||
/*mw.hook('ve.activationComplete').add(function () { | /*mw.hook('ve.activationComplete').add(function () { | ||
خط ۷۵۵: | خط ۷۷۷: | ||
x.innerText = persianWikiTools.superTool(x.innerText); | x.innerText = persianWikiTools.superTool(x.innerText); | ||
}); | }); | ||
})); | |||
} | } | ||
});*/ | });*/ | ||
خط ۷۶۳: | خط ۷۸۵: | ||
space = ' '; | space = ' '; | ||
extraEditButtons = extraEditButtons.concat(tools.toggleDirection, space, tools.ykArabic, tools.zwnj, tools.applyOrthography, | extraEditButtons = extraEditButtons.concat(tools.toggleDirection, tools.putSelectionInBDI, space, tools.ykArabic, tools.zwnj, tools.applyOrthography, | ||
tools.dig, tools.punc, tools.dictation, tools.superTool, space, tools.urlFix, tools.fixBadLinks, space, tools.welcome, | 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.addEssentialThings, tools.noSource, tools.sus, tools.tone, tools.wikify, | ||
tools.shod, tools.cleanup, tools.speedyDel, tools.prod, space, tools.redirectButton, | 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); | tools.gregYear, tools.strikeTextButton, tools.chapChin, tools.commentButton, space, tools.sortText, space, tools.picCopy, tools.picSource, space, tools.toEnNumRobust); | ||
var userGroups = mw.config.get('wgUserGroups', []); | |||
// شرط برای کاربری که گشت خودکار دارد | |||
if ( | // ابزار حذف الگوهای ناموجود | ||
if (userGroups.includes('autopatrolled') || | |||
userGroups.includes('eliminator') || | |||
userGroups.includes('sysop')) { | |||
extraEditButtons = extraEditButtons.concat(tools.removeWiki); | |||
} | |||
extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []); | extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []); | ||
خط ۷۷۹: | خط ۸۰۴: | ||
$('#persian-wiki-tools').remove(); | $('#persian-wiki-tools').remove(); | ||
if ($('#wpTextbox1').length | if ($('#wpTextbox1').length) { | ||
$('<div>', { | $('<div>', { | ||
id: 'persian-wiki-tools', | id: 'persian-wiki-tools', | ||
خط ۷۸۵: | خط ۸۱۰: | ||
style: 'float:right;' | style: 'float:right;' | ||
}).append(extraEditButtons).insertBefore('#wpTextbox1'); | }).append(extraEditButtons).insertBefore('#wpTextbox1'); | ||
} | } else if ($('#movepage').length) { | ||
$('<span>', { | $('<span>', { | ||
id: 'persian-wiki-tools' | id: 'persian-wiki-tools' |
نسخهٔ ۱۶ اوت ۲۰۲۲، ساعت ۱۴:۱۶
// <nowiki> // DON'T REMOVE THIS LINE EVER
/*global jQuery, mediaWiki, persianWikiTools, persianTools*/
/**
* UI code for Persian tools
* Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]
* See also:
* * [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]
* * [[مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js]]
* * [[مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js]]
* * [[مدیاویکی:Gadget-Extra-Editbuttons-autoed.js]]
* * [[مدیاویکی:Gadget-Extra-Editbuttons-botworks.js]]
*/
(function ($, mw) {
'use strict';
//
// ابزار در حالت نمایش
//
function loadPage(title) {
return new mw.Api().get({
action: 'query',
prop: 'revisions',
titles: title,
rvprop: 'content',
format: 'json'
}).then(function (data) {
return Object.values(data.query.pages)[0].revisions[0]['*'];
});
}
function redirectPost(url, data) {
var form = document.createElement('form');
document.body.appendChild(form);
form.method = 'post';
form.action = url;
for (var name in data) {
var input = document.createElement('input');
input.type = 'hidden';
input.name = name;
input.value = data[name];
form.appendChild(input);
}
form.submit();
}
function addWatchthisParamIfAlreadyIsWatched(object) {
// if unwatch button exists it is in the user's watchlist right now
if ($('#ca-unwatch').length) {
object.wpWatchthis = '';
}
return object;
}
function bringShowChanges(page, content, summary) {
redirectPost(new mw.Uri(mw.config.get('wgScript')).extend({
title: page,
action: 'submit'
}), addWatchthisParamIfAlreadyIsWatched({
wpTextbox1: content,
wpDiff: '',
wpSummary: summary,
wpUltimateParam: 1
}));
}
if (mw.config.get('wgAction') === 'view' &&
mw.config.get('wgIsArticle') &&
mw.config.get('wgUserEditCount') > 100 &&
mw.config.get('wgPageName') !== 'صفحهٔ_اصلی' &&
$('#mw-imagepage-nofile, #noarticletext').length === 0 &&
mw.config.get('wgNamespaceNumber') !== 6 &&
mw.config.get('wgNamespaceNumber') !== 8) {
$('#ca-abar-abzar').remove();
var interwikiFix = !$('#t-wikibase').length &&
$('.interlanguage-link').length &&
$('.wbc-editpage').length;
$(mw.util.addPortletLink(
'p-views', '#',
interwikiFix ? 'ابرابزار+انتقال میانویکی' : 'ابرابزار',
'ca-abar-abzar',
interwikiFix ?
'ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میانویکی سنتی به ویکیداده' :
'ابزار پیشرفتهٔ ویرایش متن'
)).click(function (e) {
e.preventDefault();
Promise.all([
// افزودن میانویکی سنتی به ویکیداده به صورت خودکار
interwikiFix ?
$.get('//dexbot.toolforge.org/interwikidata.php', {
page: mw.config.get('wgPageName')
}) : '',
// اجرای کدهای ربات
botworks.trigFillcat,
botworks.trigMissedFileUpload,
botworks.trigMissedRef
]).catch(function () {}).then(function () {
return loadPage(mw.config.get('wgPageName'));
}).then(function (content) {
bringShowChanges(
mw.config.get('wgPageName'),
persianWikiTools.superTool(content),
'ابرابزار'
);
});
});
}
//
// ابزار در حالت ویرایش
//
function insertTags(pre, post, peri) {
if ($('#wpTextbox1').length) {
$('#wpTextbox1').textSelection(
'encapsulateSelection', { pre: pre, peri: peri, post: post }
);
}
}
/**
* Adds edit summary
*/
function addEditSummary(summaryText, replaceSummary) {
var summary = $('input#wpSummary, #wpSummary > input'),
summaryPrefix = '',
pos;
if (mw.util.getParamValue('section') === 'new' ||
summaryText === '' || summary.length === 0) {
return;
}
if (summary.val().includes('*/ ')) {
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().includes(summaryText)) { // 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($('<span>', {
class: 'mw-ui-button mw-ui-small mw-ui-constructive',
text: alt,
style: 'padding: 0;'
}));
}).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('');
insertTags('{' + '{' + 'حذف سریع|', '}}\n' + temp, 'معیار');
},
'حذف سریع',
true,
'//upload.wikimedia.org/wikipedia/commons/1/13/Button_delete.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, [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.putSelectionInBDI = buttonGenerator(
function () {
applyOnSelection(persianWikiTools.putSelectionInBDI);
},
'جداسازی دوجهته',
false,
'//upload.wikimedia.org/wikipedia/commons/3/31/Button_bdi_tag.png',
'جداسازی دوجهته',
'دوجهته',
'put-in-bdi'
);
/* پیوند درونی */
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/commons/e/ea/Button_align_left.png',
'چپ\u200cچین\u200cکردن متن',
'چپ\u200cچین',
'align-left'
);
/* اندیس بالا
tools.upperText = buttonGenerator(
function () {
insertTags('<sup>', '</sup>', 'اندیس');
},
'',
true,
'//upload.wikimedia.org/wikipedia/commons/6/6a/Button_sup_letter.png',
'اندیس بالا',
'اندیس بالا',
'upper-letter'
);
*/
/* اندیس پایین
tools.lowerText = buttonGenerator(
function () {
insertTags('<sub>', '</sub>', 'اندیس');
},
'',
true,
'//upload.wikimedia.org/wikipedia/commons/a/aa/Button_sub_letter.png',
'اندیس پایین',
'اندیس پایین',
'lower-letter'
);
*/
/* تغییرمسیر
tools.redirectButton = buttonGenerator(
function () {
$('#wpTextbox1').val('');
insertTags(
'#تغییرمسیر [[',
']]',
'پیوند'
);
},
'',
true,
'//upload.wikimedia.org/wikipedia/commons/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(function (text) {
return persianTools.persianSort(text.split('\n')).join('\n');
});
},
'',
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'
);
/* حذف ویکیسازی
tools.removeWiki = buttonGenerator(
function () {
applyOnSelection(persianWikiTools.removeWikiSigne);
},
'حذف ویکیسازی',
false,
'//upload.wikimedia.org/wikipedia/fa/8/88/Button_NoWiki.png',
'حذف ویکیسازی',
'حذف ویکیسازی',
'removeWiki'
);*/
$(function () {
if (typeof Array.prototype.includes !== 'function') {
mw.log.error('Script not supported by browser.');
return;
}
// کد مناسب ویرایشگر جدید متنی
/*mw.hook('ve.activationComplete').add(function () {
var surface = ve.init.target.getSurface();
if (surface.getMode() === 'source') {
$('#firstHeading').append($('<img>', { src: '//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png' }).click(function () {
$('.ve-ce-contentBranchNode').get().forEach(function (x) {
x.innerText = persianWikiTools.superTool(x.innerText);
});
}));
}
});*/
var extraEditButtons = [],
extraMoveButtons = [],
space = ' ';
extraEditButtons = extraEditButtons.concat(tools.toggleDirection, tools.putSelectionInBDI, 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);
var userGroups = mw.config.get('wgUserGroups', []);
// شرط برای کاربری که گشت خودکار دارد
// ابزار حذف الگوهای ناموجود
if (userGroups.includes('autopatrolled') ||
userGroups.includes('eliminator') ||
userGroups.includes('sysop')) {
extraEditButtons = extraEditButtons.concat(tools.removeWiki);
}
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) {
$('<div>', {
id: 'persian-wiki-tools',
dir: 'rtl',
style: 'float:right;'
}).append(extraEditButtons).insertBefore('#wpTextbox1');
} else if ($('#movepage').length) {
$('<span>', {
id: 'persian-wiki-tools'
}).append(extraMoveButtons).insertAfter('#wpNewTitle');
}
});
}(jQuery, mediaWiki));