کاربر:Jeeputer/Easy-Merge.js: تفاوت میان نسخه‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
جزبدون خلاصۀ ویرایش
به toLocaleString پس از تبدیل به رشته نیاز نیست
(یک نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد)
خط ۱۲۵: خط ۱۲۵:
return;
return;
}
}
params.date = dateobj.getUTCDate() + ' ' + dateobj.getUTCMonthName() + ' ' + dateobj.getUTCFullYear();
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.toLocaleString('fa') + '}}\n');
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.toLocaleString('fa') + '}}\n';
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> */