کاربر:Jeeputer/Easy-Merge.js: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جزبدون خلاصۀ ویرایش |
به toLocaleString پس از تبدیل به رشته نیاز نیست |
||
(یک نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد) | |||
خط ۱۲۵: | خط ۱۲۵: | ||
return; |
return; |
||
} |
} |
||
params.date = dateobj. |
params.date = dateobj.toLocaleDateString('fa-IR-u-ca-iso8601', { year: 'numeric', month: 'long', day: 'numeric' }); |
||
Morebits.simpleWindow.setButtonsEnabled(false); |
Morebits.simpleWindow.setButtonsEnabled(false); |
||
خط ۱۷۱: | خط ۱۷۱: | ||
if (params.addmergedfrom) { |
if (params.addmergedfrom) { |
||
var targettalk = new Morebits.wiki.page(targettalkpage, 'افزودن {{ادغام شد از}} به صفحهٔ بحث هدف'); |
var targettalk = new Morebits.wiki.page(targettalkpage, 'افزودن {{ادغام شد از}} به صفحهٔ بحث هدف'); |
||
targettalk.setPrependText('{{ادغام شد از|' + params.current + '|' + params.date |
targettalk.setPrependText('{{ادغام شد از|' + params.current + '|' + params.date + '}}\n'); |
||
targettalk.setEditSummary('افزودن {{ادغام شد از|' + params.current + '}}' + advert); |
targettalk.setEditSummary('افزودن {{ادغام شد از|' + params.current + '}}' + advert); |
||
targettalk.prepend(); |
targettalk.prepend(); |
||
خط ۱۸۹: | خط ۱۸۹: | ||
var text = e.getPageText(); |
var text = e.getPageText(); |
||
if (params.addmergedto) { |
if (params.addmergedto) { |
||
var mergedto = '{{ادغام شد در|' + params.target + '|' + params.date |
var mergedto = '{{ادغام شد در|' + params.target + '|' + params.date + '}}\n'; |
||
text = mergedto + text; |
text = mergedto + text; |
||
} |
} |
نسخهٔ ۱۴ ژانویهٔ ۲۰۲۱، ساعت ۲۱:۳۵
/* jshint maxerr: 999 */
/* <nowiki> */
$.when(
mw.loader.using(['mediawiki.Title', 'ext.gadget.morebits']),
$.ready
).then(function() {
// hide on special pages and talk pages
if (mw.config.get('wgNamespaceNumber') < 0 || mw.config.get('wgNamespaceNumber') % 2 === 1 || !mw.config.get('wgRevisionId')) {
return;
}
var advert = ' ([[کاربر:Jeeputer/Easy-Merge|ابزار ادغام آسان]])';
var menu = mw.util.addPortletLink('p-cactions', '#', 'ادغام آسان', 'p-easy-merge', 'افزودن تغییرمسیر به مقالهای دیگر و اضافه کردن الگوهای ادغام به صفحههای بحث');
menu.addEventListener('click', callback);
function callback(e) {
if (e) e.preventDefault();
var Window = new Morebits.simpleWindow(600, 500);
Window.setScriptName('ادغام آسان (Easy-Merge)');
Window.setTitle("تغییرمسیر و افزودن الگوهای ادغام به صفحههای بحث");
Window.addFooterLink('ادغام مقالهها', 'ویکیپدیا:ادغام');
var form = new Morebits.quickForm(evaluate);
form.append({
type: 'input',
label: 'صفحهٔ هدف: ',
name: 'target',
value: (mw.config.get('wgIsRedirect') && $('div.redirectMsg a').length) ? $('div.redirectMsg a').text() : ''
});
form.append({
type: 'input', // changed to 'date' after render
name: 'date',
label: 'تاریخ ادغام: ',
value: new Date().toISOString().slice(0, 10),
tooltip: 'از این تاریخ در الگوهای {{ادغام شد از}} و {{ادغام شد در}} استفاده میشود'
});
form.append({
type: 'checkbox',
name: 'actions',
list: [
{
label: 'تغییرمسیر این صفحه به صفحهٔ هدف',
name: 'redirect',
checked: !mw.config.get('wgIsRedirect'),
tooltip: 'محتوای صفحه را با یک تغییرمسیر به صفحهٔ هدف جایگزین میکند. الگوی {{تغییرمسیر حاصل از ادغام}} به صفحهٔ تغییرمسیر افزوده میشود. ' +
'{{تغییرمسیر به بخش}} نیز در صورت نیاز افزوده خواهد شد.',
subgroup: {
type: 'input',
label: 'خلاصه ویرایش: ',
value: 'محتوا در [[###]] ادغام شد، برای اطلاعات بیشتر [[@@@]] را ببینید.',
name: 'summary',
tooltip: 'علامتهای ### بهطور خودکار با عنوان صفحهٔ مقصد جایگزین میشوند',
size: '60px'
}
},
{
label: 'حذف برچسب ادغام از صفحهٔ مقصد (در صورت وجود)',
name: 'removemerge',
checked: true
},
{
label: 'افزودن {{ادغام شد از}} به بحث صفحهٔ مقصد',
name: 'addmergedfrom',
checked: true
},
{
label: 'افزودن {{ادغام شد در}} به بحث این صفحه',
name: 'addmergedto',
checked: true
},
{
label: 'ویرایش برچسبها و الگوهای ویکیپروژه',
tooltip: 'در برچسبها ویکیپروژه، کلاس بر روی تغییرمسیر تنظیم شده و پارامتر اهمیت حذف میشود. هرگونه برچسب نیازمند رسانه نیز حذف خواهد شد',
name: 'adjusttalktemplates',
checked: true
},
{
label: 'نگه داشتن ردهها در صفحهٔ تغییرمسیر',
tooltip: 'در زمان تغییرمسیر، ردهها را از صفحه حذف نکنید',
name: 'retaincats',
checked: false
}
]
});
form.append({ type: 'submit', label: 'تأیید' });
var result = form.render();
result.date.type = 'date';
result.date.required = true;
Window.setContent(result);
Window.display();
}
function evaluate(e) {
var form = e.target;
var params = {};
params.target = form.target.value;
if (!params.target.trim()) {
alert('لطفاً عنوان صفحهٔ مقصد ادغام را وارد کنید');
return;
}
var targettalkpage = new mw.Title(params.target).getTalkPage().toText();
params.current = Morebits.pageNameNorm;
params.redirect = form.redirect.checked;
params.summary = form['redirect.summary'] && form['redirect.summary'].value.replace('###', params.target).replace('@@@', targettalkpage);
params.removemerge = form.removemerge.checked;
params.addmergedfrom = form.addmergedfrom.checked;
params.addmergedto = form.addmergedto.checked;
params.adjusttalktemplates = form.adjusttalktemplates.checked;
params.retaincats = form.retaincats.checked;
var dateobj = new Morebits.date(form.date.value);
if (isNaN(dateobj.getTime())) {
alert('تاریخ نامعتبر. لطفاً تاریخ را در قالب YYYY-MM-DD وارد کنید'); // should arise only for browsers w/o datepicker
return;
}
params.date = dateobj.toLocaleDateString('fa-IR-u-ca-iso8601', { year: 'numeric', month: 'long', day: 'numeric' });
Morebits.simpleWindow.setButtonsEnabled(false);
Morebits.status.init(form);
Morebits.wiki.api.setApiUserAgent('[[w:User:Jeeputer/Easy-Merge.js]]');
if (params.redirect) {
var page = new Morebits.wiki.page(params.current, 'در حال تغییرمسیر');
page.load(function(page) {
var pageText = '#تغییرمسیر [[' + params.target + ']]\n\n{{تغییرمسیر حاصل از ادغام}}';
if (params.target.indexOf('#') !== -1) {
pageText += '\n{{تغییرمسیر به بخش}}';
}
if (params.retaincats) {
var cats = page.getPageText().match(/\[\[رده:.*?\]\]/g);
if (cats) {
pageText += '\n\n' + cats.join('\n');
}
}
page.setPageText(pageText);
page.setEditSummary(params.summary + advert);
page.setCreateOption('nocreate');
page.save();
});
}
if (params.removemerge) {
var targetpage = new Morebits.wiki.page(params.target, 'حذف {{ادغام از}} از صفحهٔ مقصد');
targetpage.load(function(e) {
var text = e.getPageText();
var rgx1 = new RegExp('\\{\\{ادغام[- ]?از\\s*\\|' + Morebits.pageNameRegex(params.current) + '[^}]*\\}\\}\\n?');
var rgx2 = new RegExp('\\{\\{در حال ادغام\\s*\\|' + Morebits.pageNameRegex(params.current) + '[^}]*\\}\\}\\n?');
var newtext = text.replace(rgx1, '').replace(rgx2, '');
if (text !== newtext) {
targetpage.setPageText(newtext);
targetpage.setEditSummary('حذف الگوی ادغام پس از انجام فرایند ادغام' + advert);
targetpage.setCreateOption('nocreate');
targetpage.save();
} else {
targetpage.getStatusElement().info('یافت نشد');
}
});
}
if (params.addmergedfrom) {
var targettalk = new Morebits.wiki.page(targettalkpage, 'افزودن {{ادغام شد از}} به صفحهٔ بحث هدف');
targettalk.setPrependText('{{ادغام شد از|' + params.current + '|' + params.date + '}}\n');
targettalk.setEditSummary('افزودن {{ادغام شد از|' + params.current + '}}' + advert);
targettalk.prepend();
}
if (params.addmergedto || params.adjusttalktemplates) {
var curentalkpage = new mw.Title(params.current).getTalkPage().toText();
var sttext;
if (params.addmergedto) {
sttext = 'افزودن {{ادغام شد در}} به صفحهٔ بحث';
} else {
sttext = 'تنظیم برچسبهای ویکیپروژه';
}
var curentalk = new Morebits.wiki.page(curentalkpage, sttext);
curentalk.setPageSection(0);
curentalk.load(function(e) {
var text = e.getPageText();
if (params.addmergedto) {
var mergedto = '{{ادغام شد در|' + params.target + '|' + params.date + '}}\n';
text = mergedto + text;
}
if (params.adjusttalktemplates) {
text = text
.replace(/\|\s*class\s*=[^}|]*/g, '|class=redirect') // set class to redirect
.replace(/\|[^|}]*?اهمیت\s*=[^}|]*/g, '') // remove importance param
.replace(/\|(?:[^|}]*-نیاز|نیازمند-[^|}]*)\s*=[^|}]*/g, '') // remove any media-needed or needs-media params
.replace(/\{\{[^|}]* (?:درخواست|درخواست)[^}]*\}\}\n?/g, ''); // remove any {{media requeseted}} templates
}
if (text === '' && e.getPageText() === '') {
return; // otherwise in this case, page is created as empty. Morebits bug.
}
curentalk.setPageText(text);
var summary;
if (params.addmergedto && params.adjusttalktemplates) {
summary = 'افزودن {{ادغام شد در|' + params.target + '}} و تنظیم برچسبهای ویکیپروژه';
} else if (params.addmergedto) {
summary = 'افزودن {{ادغام شد در|' + params.target + '}}';
} else if (params.adjusttalktemplates) {
summary = 'تنظیم برچسبهای ویکیپروژه';
}
curentalk.setEditSummary(summary + advert);
curentalk.save();
});
}
}
});
/* </nowiki> */