میڈیاویکی:Gadget-twinklespeedy-2022.js

تفصیل کے لیے کھولیں کے بٹن پر کلک کریں یاددہانی: محفوظ کرنے کے بعد تازہ ترین تبدیلیوں کو دیکھنے کے لیے آپ کو اپنے براؤزر کا کیش صاف کرنا ہوگا۔

  • فائرفاکس/ سفاری: جب Reload پر کلک کریں تو Shift دبا کر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R- )
  • گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
  • انٹرنیٹ ایکسپلورر: جب Refresh پر کلک کریں تو Ctrl یا Ctrl-F5 دبائیں
  • اوپیرا: Tools → Preferences میں جائیں اور کیش صاف کریں

// <nowiki>


(function($) {


/*
 ****************************************
 *** twinklespeedy.js: CSD module
 ****************************************
 * Mode of invocation:     Tab ("فحذ")
 * Active on:              Non-special, existing pages
 *
 * NOTE FOR DEVELOPERS:
 *   If adding a new criterion, add it to the appropriate places at the top of
 *   twinkleconfig.js.  Also check out the default values of the CSD preferences
 *   in twinkle.js, and add your new criterion to those if you think it would be
 *   good.
 */

Twinkle.speedy = function twinklespeedy() {
	// Disable on:
	// * special pages
	// * non-existent pages
	if (mw.config.get('wgNamespaceNumber') < 0 || !mw.config.get('wgArticleId')) {
		return;
	}

	Twinkle.addPortletLink(Twinkle.speedy.callback, 'فوری', 'tw-csd', (Morebits.userIsSysop || Morebits.userIsEliminator) ? 'وپ:فحذ کے مطابق صفحہ حذف کریں' : 'وپ:فحذ کے مطابق فوری حذف کی درخواست دیں');
};

// This function is run when the CSD tab/header link is clicked
Twinkle.speedy.callback = function twinklespeedyCallback() {
	Twinkle.speedy.initDialog((Morebits.userIsSysop || Morebits.userIsEliminator) ? Twinkle.speedy.callback.evaluateSysop : Twinkle.speedy.callback.evaluateUser, true);
};

// Used by unlink feature
Twinkle.speedy.dialog = null;
// Used throughout
Twinkle.speedy.hasCSD = !!$('#delete-reason').length;

//localized keys to use in user nomination log and for local tag names
Twinkle.speedy.localKeys = {
	reason: 'وجہ', talk: 'تبادلۂ خیال', redundantimage: 'فاضل تصویر', noimage: 'خالی تصویر',	fpcfail: 'تصویر کی غیر ضروری تفصیلات',
	noncom: 'غیر تجارتی',	unksource: 'نامعلوم ماخذ',	f5: 'ف5', norat: 'منصفانہ بدون تفصیل', badfairuse: 'غلط منصفانہ',
	commons: 'ویکی ذخائر میں موجود', imgcopyvio: 'تصویر کے کاپی رائٹ کی خلاف ورزی', badfiletype: 'بے کار غیر میڈیا فائل', nopermission: 'بلا اجازت نامہ',
	imagepage: 'صفحہ تصویر', nocontext: 'بلا سیاق', foreign: 'بیرونی', nocontent: 'بدون مواد', transwiki: 'ماورائے ویکی',
	a7: 'م7', person: 'شخصیت', band: 'طائفہ', club: 'کلب', corp: 'تنظیم', web: 'ویب', animal: 'جانور', event: 'تقریب',
	a9: 'م9', a10: 'م10', madeup: 'ذاتی تحقیق', catempty: 'خالی زمرہ', templatecat: 'سانچہ زمرہ', redirnone: 'نادرست رجوع مکرر',
	userreq: 'درخواست صارف', nouser: 'غیر موجود صارف', notwebhost: 'ویب ہوسٹ نہیں', spamuser: 'اشتہاری نام', afc: 'مبت',
	policy: 'حکمت عملی', duplicatetemplate: 'مکرر سانچہ', p1: 'ب1', emptyportal: 'خالی باب', nonsense: 'بے معنیٰ', test: 'تجرباتی',
	vandalism: 'تخریب کاری', hoax: 'افسانہ طرازی', repost: 'تخلیق مکرر', banned: 'ممنوع', move: 'منتقلی', xfd: 'نبح', copypaste: 'نقل و چسپاں',
	g6: 'ع6', author: 'مضمون نگار', g8: 'ع8', subpage: 'ذیلی صفحہ', attack: 'حملہ', negublp: 'منفی سوانح عمری', spam: 'فاضل کاری',
	copyvio: 'کاپی رائٹ کی خلاف ورزی', disambig: 'ضد ابہام', rediruser: 'صارف رجوع مکرر', redirtypo: 'غلط رجوع مکرر',
	redircom: 'ذخائر رجوع مکرر', movedab: 'منتقلی ضد ابہام' , significance: 'اہمیت', notability: 'معروفیت', bio: 'سوانح عمری',
	csd: 'فحذ', inc: 'کمپنی', invented: 'ذہنی اپج'
};

// Prepares the speedy deletion dialog and displays it
Twinkle.speedy.initDialog = function twinklespeedyInitDialog(callbackfunc) {
	var dialog;
	Twinkle.speedy.dialog = new Morebits.simpleWindow(Twinkle.getPref('speedyWindowWidth'), Twinkle.getPref('speedyWindowHeight'));
	dialog = Twinkle.speedy.dialog;
	dialog.setTitle('فوری حذف شدگی کا معیار منتخب کریں');
	dialog.setScriptName('پلک');
	dialog.addFooterLink('فوری حذف شدگی کی حکمت عملی', 'وپ:فحذ');
	dialog.addFooterLink('ترجیحات فحذ', 'وپ:پلک/ترجیحات#speedy');
	dialog.addFooterLink('رہنمائے پلک', ':en:WP:TW/DOC#speedy');
	dialog.addFooterLink('آپ کے تاثرات', 'تبادلۂ خیال ویکیپیڈیا:پلک');

	var form = new Morebits.quickForm(callbackfunc, Twinkle.getPref('speedySelectionStyle') === 'radioClick' ? 'change' : null);
	if (Morebits.userIsSysop || Morebits.userIsEliminator) {
		form.append({
			type: 'checkbox',
			list: [
				{
					label: 'صرف ٹیگ چسپاں کریں، حذف نہ کریں',
					value: 'tag_only',
					name: 'tag_only',
					tooltip: 'اگر آپ حذف کرنے کی بجائے محض حذف کا ٹیگ چسپاں کرنا چاہیں',
					checked: !(Twinkle.speedy.hasCSD || Twinkle.getPref('deleteSysopDefaultToDelete')),
					event: function(event) {
						var cForm = event.target.form;
						var cChecked = event.target.checked;
						// enable talk page checkbox
						if (cForm.talkpage) {
							cForm.talkpage.checked = !cChecked && Twinkle.getPref('deleteTalkPageOnDelete');
						}
						// enable redirects checkbox
						cForm.redirects.checked = !cChecked;
						// enable delete multiple
						cForm.delmultiple.checked = false;
						// enable notify checkbox
						cForm.notify.checked = cChecked;
						// enable deletion notification checkbox
						cForm.warnusertalk.checked = !cChecked && !Twinkle.speedy.hasCSD;
						// enable multiple
						cForm.multiple.checked = false;
						// enable requesting creation protection
						cForm.salting.checked = false;

						Twinkle.speedy.callback.modeChanged(cForm);

						event.stopPropagation();
					}
				}
			]
		});

		var deleteOptions = form.append({
			type: 'div',
			name: 'delete_options'
		});
		deleteOptions.append({
			type: 'header',
			label: 'حذف متعلقہ اختیارات'
		});
		if (mw.config.get('wgNamespaceNumber') % 2 === 0 && (mw.config.get('wgNamespaceNumber') !== 2 || (/\//).test(mw.config.get('wgTitle')))) {  // hide option for user pages, to avoid accidentally deleting user talk page
			deleteOptions.append({
				type: 'checkbox',
				list: [
					{
						label: 'تبادلۂ خیال صفحہ بھی حذف کریں',
						value: 'talkpage',
						name: 'talkpage',
						tooltip: "اس اختیار کو فعال کرنے سے تبادلۂ خیال صفحہ بھی حذف ہوگا۔ تاہم اگر آپ نے ف8 معیار (ویکی ذخائر میں منتقل شدہ) منتخب کیا ہے تو اس صورت میں تبادلہ خیال صفحہ حذف *نہیں ہوگا*۔",
						checked: Twinkle.getPref('deleteTalkPageOnDelete'),
						event: function(event) {
							event.stopPropagation();
						}
					}
				]
			});
		}
		deleteOptions.append({
			type: 'checkbox',
			list: [
				{
					label: 'تمام رجوع مکررات بھی حذف کریں',
					value: 'redirects',
					name: 'redirects',
					tooltip: 'اس اختیار کو فعال کرنے سے رجوع مکررات بھی حذف ہو جائیں گے۔',
					checked: Twinkle.getPref('deleteRedirectsOnDelete'),
					event: function (event) {
						event.stopPropagation();
					}
				},
				{
					label: 'متعدد معیارات کے تحت حذف کریں',
					value: 'delmultiple',
					name: 'delmultiple',
					tooltip: 'اگر آپ اس اختیار کو فعال کریں تو پیش نظر صفحہ پر منطبق ہونے والے ایک سے زائد معیارات کو منتخب کر سکتے ہیں۔ مثلاً ع11 اور م7 کے معیار مضامین پر عموماً ایک وقت میں منطبق ہوتے ہیں۔',
					event: function(event) {
						Twinkle.speedy.callback.modeChanged(event.target.form);
						event.stopPropagation();
					}
				},
				{
					label: 'صفحہ ساز صارف کو حذف صفحہ کی کارروائی سے آگاہ کریں',
					value: 'warnusertalk',
					name: 'warnusertalk',
					tooltip: 'اگر آپ نے پلک کی ترجیحات میں اپنے منتخب کردہ معیار کے لیے اطلاعی سانچہ منتخب کیا ہے ' +
						'اور ابھی اس خانہ کو فعال کرتے ہیں تو اس صورت میں صفحہ ساز صارف کے تبادلۂ خیال پر اطلاعی سانچہ چسپاں کر دیا جائے گا، نیز ممکن ہے سانچہ خوش آمدید بھی لگایا جائے۔',
					checked: !Twinkle.speedy.hasCSD,
					event: function(event) {
						event.stopPropagation();
					}
				}
			]
		});
	}

	var tagOptions = form.append({
		type: 'div',
		name: 'tag_options'
	});

	if (Morebits.userIsSysop || Morebits.userIsEliminator) {
		tagOptions.append({
			type: 'header',
			label: 'ٹیگ متعلقہ اختیارات'
		});
	}

	tagOptions.append({
		type: 'checkbox',
		list: [
			{
				label: 'اگر ممکن ہو تو صفحہ ساز کو مطلع کریں',
				value: 'notify',
				name: 'notify',
				tooltip: 'اگر آپ نے پلک کی ترجیحات میں اپنے منتخب کردہ معیار کے لیے اطلاعی سانچہ منتخب کیا ہے ' +
						'اور اس خانہ کو فعال کرتے ہیں تو اس صورت میں صفحہ ساز صارف کے تبادلۂ خیال پر اطلاعی سانچہ چسپاں کر دیا جائے گا، نیز ممکن ہے سانچہ خوش آمدید بھی لگایا جائے',
				checked: !Morebits.userIsSysop || !Morebits.userIsEliminator || !(Twinkle.speedy.hasCSD || Twinkle.getPref('deleteSysopDefaultToDelete')),
				event: function(event) {
					event.stopPropagation();
				}
			},
			{
				label: 'تخلیق محفوظ (نمک پاشی) کا بھی ٹیگ لگائیں',
				value: 'salting',
				name: 'salting',
				tooltip: 'اسے منتخب کرنے پر فوری حذف کے سانچے کے ساتھ {{نمک پاشی}} کا ٹیگ بھی چسپاں ہوگا۔ اس ٹیگ کا مقصد یہ ہے کہ حذف کنندہ منتظم صفحہ کو حذف کرنے کے ساتھ ساتھ آئندہ کے لیے اس کی تخلیق پر پابندی بھی عائد کر دے۔ اگر کوئی صفحہ حذف کرنے کے باوجود بار بار بنایا جا رہا ہو تو اس اختیار کو استعمال کیا جا سکتا ہے۔',
				event: function(event) {
					event.stopPropagation();
				}
			},
			{
				label: 'بیک وقت متعدد معیارات کے ٹیگ چسپاں کریں',
				value: 'multiple',
				name: 'multiple',
				tooltip: 'اگر اسے منتخب کیا جائے تو آپ اس صفحہ کے لیے بیک وقت متعدد موزوں معیارات منتخب کر سکتے ہیں، مثلاً، ع11 اور م7 کے مشترکہ معیار مضامین کے حذف کے لیے رائج ہیں۔',
				event: function(event) {
					Twinkle.speedy.callback.modeChanged(event.target.form);
					event.stopPropagation();
				}
			}
		]
	});

	form.append({
		type: 'div',
		id: 'prior-deletion-count',
		style: 'font-style: italic'
	});

	form.append({
		type: 'div',
		name: 'work_area',
		label: 'فوری حذف شدگی کا ماڈیول شروع نہیں ہو سکا، براہ کرم دوبارہ کوشش کریں یا پلک کے ترقی دہندگان کو مطلع کریں۔'
	});

	if (Twinkle.getPref('speedySelectionStyle') !== 'radioClick') {
		form.append({ type: 'submit', className: 'tw-speedy-submit' }); // Renamed in modeChanged
	}

	var result = form.render();
	dialog.setContent(result);
	dialog.display();

	Twinkle.speedy.callback.modeChanged(result);

	// Check for prior deletions.  Just once, upon init
	Twinkle.speedy.callback.priorDeletionCount();
};

Twinkle.speedy.callback.modeChanged = function twinklespeedyCallbackModeChanged(form) {
	var namespace = mw.config.get('wgNamespaceNumber');

	// first figure out what mode we're in
	var mode = {
		isSysop: !!form.tag_only && !form.tag_only.checked,
		isMultiple: form.tag_only && !form.tag_only.checked ? form.delmultiple.checked : form.multiple.checked,
		isRadioClick: Twinkle.getPref('speedySelectionStyle') === 'radioClick'
	};

	if (mode.isSysop) {
		$('[name=delete_options]').show();
		$('[name=tag_options]').hide();
		$('button.tw-speedy-submit').text('صفحہ حذف کریں');
	} else {
		$('[name=delete_options]').hide();
		$('[name=tag_options]').show();
		$('button.tw-speedy-submit').text('صفحہ پر ٹیگ لگائیں');
	}

	var work_area = new Morebits.quickForm.element({
		type: 'div',
		name: 'work_area'
	});

	if (mode.isMultiple && mode.isRadioClick) {
		var evaluateType = mode.isSysop ? 'evaluateSysop' : 'evaluateUser';

		work_area.append({
			type: 'div',
			label: 'معیار منتخب کرنے کے بعد '
		});
		work_area.append({
			type: 'button',
			name: 'submit-multiple',
			label: mode.isSysop ? 'صفحہ حذف کریں' : 'صفحہ پر ٹیگ لگائیں',
			event: function(event) {
				Twinkle.speedy.callback[evaluateType](event);
				event.stopPropagation();
			}
		});
		work_area.append({
			type: 'div',
			label: ' پر کلک کریں'
		});
	}

	var appendList = function(headerLabel, csdList) {
		work_area.append({ type: 'header', label: headerLabel });
		work_area.append({ type: mode.isMultiple ? 'checkbox' : 'radio', name: 'csd', list: Twinkle.speedy.generateCsdList(csdList, mode) });
	};

	if (mode.isSysop && !mode.isMultiple) {
		appendList('شخصی وجہ', Twinkle.speedy.customRationale);
	}

	if (namespace % 2 === 1 && namespace !== 3) {
		// show db-talk on talk pages, but not user talk pages
		appendList('تبادلۂ خیال صفحات', Twinkle.speedy.talkList);
	}

	if (!Morebits.isPageRedirect()) {
		switch (namespace) {
			case 0:  // article
			case 1:  // talk
				appendList('مضامین', Twinkle.speedy.articleList);
				break;

			case 2:  // user
			case 3:  // user talk
				appendList('صارف صفحات', Twinkle.speedy.userList);
				break;

			case 6:  // file
			case 7:  // file talk
				appendList('فائلیں', Twinkle.speedy.fileList);
				if (!mode.isSysop) {
					work_area.append({ type: 'div', label: 'فوری حذف شدگی کے معیارات ف4 (بدون اجازت نامہ)، ف5 (یتیم منصفانہ استعمال)، ف6 (بدون دلیل منصفانہ استعمال) اور ف11 (بلا اجازت) کے ٹیگ چسپاں کرنے کے لیے پلک کا «حذف تصویر» ٹیب استعمال کریں۔' });
				}
				break;
				
			case 10:  // template
			case 11:  // template talk
				appendList('سانچے', Twinkle.speedy.templateList);
				break;
				
			case 14:  // category
			case 15:  // category talk
				appendList('زمرے', Twinkle.speedy.categoryList);
				break;

			case 100:  // portal
			case 101:  // portal talk
				appendList('ابواب', Twinkle.speedy.portalList);
				break;

			default:
				break;
		}
	} else {
		if (namespace === 2 || namespace === 3) {
			appendList('صارف صفحات', Twinkle.speedy.userList);
		}
		appendList('رجوع مکررات', Twinkle.speedy.redirectList);
	}

	var generalCriteria = Twinkle.speedy.generalList;

	// custom rationale lives under general criteria when tagging
	if (!mode.isSysop) {
		generalCriteria = Twinkle.speedy.customRationale.concat(generalCriteria);
	}
	appendList('عمومی معیارات', generalCriteria);

	var old_area = Morebits.quickForm.getElements(form, 'work_area')[0];
	form.replaceChild(work_area.render(), old_area);

	// if sysop, check if CSD is already on the page and fill in custom rationale
	if (mode.isSysop && Twinkle.speedy.hasCSD) {
		var customOption = $('input[name=csd][value=reason]')[0];
		if (customOption) {
			if (Twinkle.getPref('speedySelectionStyle') !== 'radioClick') {
				// force listeners to re-init
				customOption.click();
				customOption.parentNode.appendChild(customOption.subgroup);
			}
			customOption.subgroup.querySelector('input').value = decodeURIComponent($('#delete-reason').text()).replace(/\+/g, ' ');
		}
	}
};

Twinkle.speedy.callback.priorDeletionCount = function () {
	var query = {
		action: 'query',
		format: 'json',
		list: 'logevents',
		letype: 'delete',
		leaction: 'delete/delete', // Just pure page deletion, no redirect overwrites or revdel
		letitle: mw.config.get('wgPageName'),
		leprop: '', // We're just counting we don't actually care about the entries
		lelimit: 5  // A little bit goes a long way
	};

	new Morebits.wiki.api('سابقہ حذف شدگیوں کو دیکھا جا رہا ہے', query, function(apiobj) {
		var response = apiobj.getResponse();
		var delCount = response.query.logevents.length;
		if (delCount) {
			var message = mw.language.convertNumber(delCount) + ' دفعہ حذف';
			if (delCount > 1) {
//				message += '';
				if (response.continue) {
					message = 'زائد از ' + message;
				}

				// 3+ seems problematic
				if (delCount >= 3) {
					$('#prior-deletion-count').css('color', 'red');
				}
			}

			// Provide a link to page logs (CSD templates have one for sysops)
			var link = Morebits.htmlNode('a', '(نوشتے)');
			link.setAttribute('href', mw.util.getUrl('خاص:نوشتہ', {page: mw.config.get('wgPageName')}));
			link.setAttribute('target', '_blank');

			$('#prior-deletion-count').text(message + ' '); // Space before log link
			$('#prior-deletion-count').append(link);
		}
	}).post();
};


Twinkle.speedy.generateCsdList = function twinklespeedyGenerateCsdList(list, mode) {

	var pageNamespace = mw.config.get('wgNamespaceNumber');

	var openSubgroupHandler = function(e) {
		$(e.target.form).find('input').prop('disabled', true);
		$(e.target.form).children().css('color', 'gray');
		$(e.target).parent().css('color', 'black').find('input').prop('disabled', false);
		$(e.target).parent().find('input:text')[0].focus();
		e.stopPropagation();
	};
	var submitSubgroupHandler = function(e) {
		var evaluateType = mode.isSysop ? 'evaluateSysop' : 'evaluateUser';
		Twinkle.speedy.callback[evaluateType](e);
		e.stopPropagation();
	};

	return $.map(list, function(critElement) {
		var criterion = $.extend({}, critElement);

		if (mode.isMultiple) {
			if (criterion.hideWhenMultiple) {
				return null;
			}
			if (criterion.hideSubgroupWhenMultiple) {
				criterion.subgroup = null;
			}
		} else {
			if (criterion.hideWhenSingle) {
				return null;
			}
			if (criterion.hideSubgroupWhenSingle) {
				criterion.subgroup = null;
			}
		}

		if (mode.isSysop) {
			if (criterion.hideWhenSysop) {
				return null;
			}
			if (criterion.hideSubgroupWhenSysop) {
				criterion.subgroup = null;
			}
		} else {
			if (criterion.hideWhenUser) {
				return null;
			}
			if (criterion.hideSubgroupWhenUser) {
				criterion.subgroup = null;
			}
		}

		if (Morebits.isPageRedirect() && criterion.hideWhenRedirect) {
			return null;
		}

		if (criterion.showInNamespaces && criterion.showInNamespaces.indexOf(pageNamespace) < 0) {
			return null;
		}
		if (criterion.hideInNamespaces && criterion.hideInNamespaces.indexOf(pageNamespace) > -1) {
			return null;
		}

		if (criterion.subgroup && !mode.isMultiple && mode.isRadioClick) {
			if (Array.isArray(criterion.subgroup)) {
				criterion.subgroup = criterion.subgroup.concat({
					type: 'button',
					name: 'submit',
					label: mode.isSysop ? 'صفحہ حذف کریں' : 'صفحہ پر ٹیگ لگائیں',
					event: submitSubgroupHandler
				});
			} else {
				criterion.subgroup = [
					criterion.subgroup,
					{
						type: 'button',
						name: 'submit',  // ends up being called "csd.submit" so this is OK
						label: mode.isSysop ? 'صفحہ حذف کریں' : 'صفحہ پر ٹیگ لگائیں',
						event: submitSubgroupHandler
					}
				];
			}
			// FIXME: does this do anything?
			criterion.event = openSubgroupHandler;
		}

		return criterion;
	});
};

Twinkle.speedy.customRationale = [
	{
		label: 'شخصی وجہ' + ((Morebits.userIsSysop || Morebits.userIsEliminator) ? ' (حذف کی ذاتی وجہ)' : ' بذریعہ سانچہ {{فوری حذف}}'),
		value: 'reason',
		tooltip: 'فوری حذف شدگی کے دیگر معیارات میں سے کم از کم ایک معیار کا اس صفحہ پر منطبق ہونا لازمی ہے، نیز وجہ لکھتے وقت اس معیار کو ضرور درج کریں۔',
		subgroup: {
			name: 'reason_1',
			type: 'input',
			label: 'وجہ:',
			size: 60
		},
		hideWhenMultiple: true
	}
];

Twinkle.speedy.talkList = [
	{
		label: 'ع8: یتیم تبادلۂ خیال صفحات',
		value: 'talk',
		tooltip: 'اس اختیار کو فعال کرنے کے بعد ایسے تمام صفحات علاحدہ کر دیے جائیں گے جو منصوبہ کے لیے مفید ہوں - خصوصاً صارف تبادلۂ خیال صفحات، ان کے وثائق اور ویکی ذخائر میں موجود فائلوں کے تبادلۂ خیال صفحات۔'
	}
];

Twinkle.speedy.fileList = [
	{
		label: 'ف1: مکرر فائل',
		value: 'redundantimage',
		tooltip: 'ایسی فائلیں جن کے ایک سے زائد نسخے اسی شکل میں یا کچھ کم معیار کے ویکیپیڈیا میں موجود ہوں۔ یہ معیار اجازت ناموں کی وجہ سے ویکی ذخائر میں موجود دوہری فائلوں پر منطبق نہیں ہوتا، ان پر {{subst:ncd|Image:newname.ext}} یا {{subst:ncd}} کا ٹیگ چسپاں کرنا چاہیے۔',
		subgroup: {
			name: 'redundantimage_filename',
			type: 'input',
			label: 'فائل کا زائد نسخہ:',
			tooltip: '«فائل:» سابقہ نہ لکھا جائے۔'
		}
	},
	{
		label: 'ف2: خالی یا خراب فائل',
		value: 'noimage',
		tooltip: 'اس قسم کی فائلوں کو حذف کرنے سے پہلے اس بات کو جانچ لیں کہ میڈیاویکی سافٹ ویئر کا انجن اسے کہیں استعمال تو نہیں کر رہا ہے۔ اسی طرح اس میں ویکی ذخائر کی خالی (مثلاً بغیر مواد کی) فائلوں کے صفحاتِ وضاحت بھی شامل ہیں۔'
	},
	{
		label: 'ف2 : ویکی ذخائر پر موجود فائل کا غیر ضروری صفحہ وضاحت',
		value: 'fpcfail',
		tooltip: 'ایسی فائل جو ویکی ذخائر پر اپلوڈ ہو چکی ہو لیکن اس کے ٹیگ اور دیگر معلومات اردو ویکیپیڈیا پر ہی موجود ہوں اور ان کی اب ضرورت نہ ہو (مثلاً منتخب تصویر کے لیے نامزد شدہ تصویر جو مقابلے میں ناکام رہی ہو)۔',
		hideWhenMultiple: true
	},
	{
		label: 'ف3 : نادرست اجازت نامہ',
		value: 'noncom',
		tooltip: 'ایسی فائلیں جو «محض غیر تجارتی استعمال»، «غیر اشتقاقی استعمال» یا «اجازت نامہ کے ساتھ استعمال» جیسے اجازت ناموں کے تحت ہوں اور 19 مئی 2005ء کو یا اس سے قبل اپلوڈ کی گئی ہوں۔ ان میں وہ فائلیں شامل نہیں جو غیر آزاد مواد کے استعمال کے لیے محدود معیارات کے مطابق ہوں۔ اس اصول کے تحت وہ فائلیں شامل سمجھی جائیں گی جو «غیر تجارتی کریئیٹیو کامنز اجازت نامہ» کے تحت شائع کی گئی ہوں۔ تاہم اس طرح کی فائلیں اگر 19 مئی 2005ء سے قبل اپلوڈ کی گئی ہوں اور کسی مضمون میں مستعمل بھی نہ ہوں تو انھیں فی الفور حذف کیا جا سکتا ہے۔'
	},
	{
		label: 'ف4: اجازت ناموں کی معلومات کی کمی',
		value: 'unksource',
		tooltip: '«تصاویر بدون حوالہ»، «نامعلوم کاپی رائٹ کی حامل تصویریں» یا «تصاویر بدون کاپی رائٹ ٹیگ» جیسے زمروں میں موجود تصویریں ان پر چسپاں ٹیگ کی بنا پر ان زمروں میں ایک ہفتے سے زائد عرصہ سے موجود ہوں، قطع نظر اس سے کہ وہ کب اپلوڈ ہوئیں۔ اطلاع: بسا اوقات صارفین اپلوڈ کے خلاصے میں ماخذ درج کرتے ہیں لہذا ان سب کو جانچ لیں۔',
		hideWhenUser: true
	},
	{
		label: 'ف5: غیر مستعمل غیر آزاد کاپی رائٹ شدہ فائل',
		value: 'f5',
		tooltip: 'ایسی فائلیں جو کسی آزاد اجازت نامے یا دائرہ عام میں نہ ہوں اور نہ کسی مضمون میں مستعمل ہوں نیز ان پر چسپاں سانچہ کی بنا پر «زمرہ:یتیم منصفانہ استعمال والی تصویریں» کے کسی ذیلی زمرے میں ایک ہفتے سے زائد عرصہ سے موجود ہو۔ البتہ ان فائلوں کو باقی رکھا جا سکتا ہے جو جلد ہی کسی مضمون میں استعمال ہونے والی ہوں۔ مستقبل میں حذف ہونے والی فائلوں پر ٹیگ چسپاں کرنے کے لیے پلک کے "حذف تصویر" اختیار میں "یتیم منصفانہ استعمال" کو استعمال کریں۔',
		hideWhenUser: true
	},
	{
		label: 'ف6: منصفانہ استعمال کی وضاحت غیر موجود',
		value: 'norat',
		tooltip: 'منصفانہ استعمال کے بغیر اپلوڈ کی جانے والی فائلیں ایک ہفتے بعد حذف ہو سکتی ہیں۔ 4 مئی 2006ء سے قبل اپلوڈ کردہ فائلوں کو فوراً حذف نہ کریں، بلکہ اپلوڈ کنندہ کو مطلع کیا جائے کہ فلاں فائل میں منصفانہ استعمال کی وضاحت درکار ہے۔ 4 مئی 2006ء کے بعد اپلوڈ کی جانے والی فائلوں پر پلک کے "حذف تصویر" ماڈیول میں موجود «منصفانہ استعمال کی وضاحت غیر موجود» اختیار کی مدد سے ٹیگ چسپاں کیا جا سکتا ہے۔ ایسی فائلیں زمرہ:تصاویر کے مورخہ ذیلی زمرہ جات میں منصفانہ استعمال کی وضاحت غیر موجود کے ساتھ نظر آئے گی۔',
		hideWhenUser: true
	},
	{
		label: 'ف7: منصفانہ استعمال کے تحت ایسی تجارتی تصویروں کا استعمال جو خود ماخذ کی معلومات سے عاری ہوں',
		value: 'badfairuse',
		tooltip: 'کسی ایسے تجارتی ماخذ (مثلاً اسوسیئیٹڈ پریس، گیٹی وغیرہ) سے ماخوذ غیر آزاد تصویریں یا میڈیا جہاں موجود فائلیں خود ماخذ کی معلومات سے عاری ہوں، منصفانہ استعمال کے لیے نادرست تصور کی جائے گی نیز "وپ:غیر آزاد مواد کے معیارات" کے تقاضوں کے مطابق نہ ہوگی۔',
		subgroup: {
			name: 'badfairuse_rationale',
			type: 'input',
			label: 'مزید وضاحت:',
			size: 60
		},
		hideWhenMultiple: true
	},
	{
		label: 'ف8: ایسی فائلیں جو مساوی یا زیادہ بہتر کیفیت میں ویکی ذخائر پر بھی موجود ہوں',
		value: 'commons',
		tooltip: 'بشرطیکہ درج ذیل شرائط پائی جائیں: 1: فائل کے دونوں نسخوں کی شکل یعنی فارمیٹ یکساں ہوں۔ 2: فائل کا اجازت نامہ اور ماخذی حالت کسی بھی شک و شبہ سے پرے ہو، نیز موجود اجازت نامہ بلا کسی شک و شبہ کے ذخائر پر قابل قبول ہو۔ 3: فائل کے صفحۂ وضاحت میں درج معلومات ویکی ذخائر کے صفحۂ وضاحت میں بھی موجود ہوں۔ اس میں اپلوڈ کا مکمل تاریخچہ اور اپلوڈ کنندہ کا مقامی صفحہ صارف کا ربط بھی شامل ہونا چاہیے۔ 4: فائل محفوظ نہ ہو، نیز فائل کے صفحۂ وضاحت پر اسے ذخائر میں منتقل کرنے کی درخواست موجود نہ ہو۔ 5: اگر ویکی ذخائر پر موجود نسخہ کسی مختلف نام سے موجود ہو تو تمام مقامی حوالہ جات ویکی ذخائر پر مع مقامی نام کے درج کرنا لازمی ہے۔ 6: {{c-uploaded}} فائلوں کے لیے: انھیں جیسے ہی صفحہ اول سے ہٹایا جائے، فوراً حذف کر دیں۔',
		subgroup: {
			name: 'commons_filename',
			type: 'input',
			label: 'ویکی ذخائر پر موجود فائل کا نام: ',
			value: Morebits.pageNameNorm,
			tooltip: 'اگر ویکی ذخائر پر موجود نسخے کا نام یکساں ہو تو اسے خالی چھوڑا جا سکتا ہے۔ "فائل:" کا سابقہ اختیاری ہے۔'
		},
		hideWhenMultiple: true
	},
	{
		label: 'ف9: کاپی رائٹ کی واضح خلاف ورزی',
		value: 'imgcopyvio',
		tooltip: 'فائل ایسی ویب سائٹ یا ماخذ سے حاصل کی گئی ہو جو ویکیپیڈیا سے ہم آہنگ اجازت نامہ کے حامل نہ ہوں، نیز اپلوڈ کنندہ نے منصفانہ استعمال کا اظہار کیا ہو اور نہ منصفانہ استعمال کی اجازت درج کی ہو۔ ایسے مآخذ جو ویکیپیڈیا سے ہم آہنگ اجازت نامے نہیں رکھتے ان میں اسٹاک فوٹو لائبریریاں مثلاً گیٹی امیجز یا کوربیز شامل ہیں۔ کاپی رائٹ کی غیر واضح خلاف ورزیوں کے متعلق ویکیپیڈیا:فائلیں برائے حذف پر گفتگو کی جا سکتی ہے۔',
		subgroup: [
			{
				name: 'imgcopyvio_url',
				type: 'input',
				label: 'کاپی رائٹ خلاف ورزی کا ربط بشمول http://۔ اگر آپ ربط فراہم نہیں کر سکتے تو ف9 معیار استعمال نہ کریں۔ (استثنا: غیر انٹرنیٹ مآخذ پر مشتمل کاپی رائٹ خلاف ورزیوں کے لیے اس خانہ کو خالی چھوڑ دیں)',
				size: 60
			},
			{
				name: 'imgcopyvio_rationale',
				type: 'input',
				label: 'غیر انٹرنیٹ مآخذ پر مشتمل کاپی رائٹ خلاف ورزی کا سبب حذف: ',
				size: 60
			}
		]
	},
	{
		label: 'ف10: بے کار غیر میڈیا فائل',
		value: 'badfiletype',
		tooltip: 'اپلوڈ کردہ وہ فائلیں جو تصویر ہوں، نہ آواز اور نہ ویڈیو (مثلاً .doc, .pdf, or .xls  فائلیں) اور نہ کسی مضمون میں مستعمل ہوں اور نہ مستقبل میں کسی استعمال کا امکان ہو۔'
	},
	{
		label: 'ف11: اجازت کا ثبوت موجود نہیں',
		value: 'nopermission',
		tooltip: 'اگر اپلوڈ کنندہ نے کسی اجازت نامے کا ذکر کیا اور صاحب کاپی رائٹ/ماخذ کے طور پر کسی تیسرے شخص کا نام درج کیا لیکن ایسی کوئی شہادت یا ثبوت فراہم نہیں کیا کہ وہ تیسرا شخص حقیقت میں اس سے متفق ہے تو اپلوڈ کنندہ کو مطلع کرنے کے ایک ہفتے بعد اس فائل کو حذف کیا جا سکتا ہے۔',
		hideWhenUser: true
	},
	{
		label: 'ع8: متعلقہ غیر موجود فائل کا صفحۂ وضاحت',
		value: 'imagepage',
		tooltip: 'اسے محض اس وقت استعمال کیا جائے جب فائل موجود نہ ہو۔ ویکی ذخائر پر موجود فائلوں کے مقامی صفحات وضاحت اور خراب فائلوں کے لیے ف2 معیار، ناقابل قبول رجوع مکررات کے لیے ر3 معیار، اور ویکی ذخائر کے شکستہ روابط کے لیے ر4 معیار استعمال کریں۔'
	}
];

Twinkle.speedy.articleList = [
	{
		label: 'م1: غیر موجود متن – مضمون کے موضوع کی شناخت کے لیے درکار مواد کی قلت',
		value: 'nocontext',
		tooltip: 'مثلاً: «سرخ کار کے ساتھ وہ ایک مسخرہ معلوم ہوتا ہے، اور لوگوں کو خوب ہنساتا ہے۔» یہ معیار محض انتہائی مختصر مضامین پر منطبق ہوتا ہے۔ مواد سے مختلف سیاق و سباق کے متعلق ذیل میں موجود م3 دیکھیے۔'
	},
	{
		label: 'م2: غیر اردو مضامین جو ویکیمیڈیا کے کسی دوسرے منصوبے پر بھی موجود ہوں',
		value: 'foreign',
		tooltip: 'اگر مضمون کسی دوسری ویکی میں موجود نہیں تو {{اردو نہیں}} ٹیگ چسپاں کریں۔ غیر اردو مضامین جو اس معیار کے مطابق نہ ہوں (نیز وہ فوری حذف شدگی کے کسی دوسرے معیار کے مطابق بھی نہ ہوں) انھیں وپ:ترجمہ درکار مضامین میں نظرثانی اور ممکنہ ترجمہ کے لیے درج کر دیں۔',
		subgroup: {
			name: 'foreign_source',
			type: 'input',
			label: 'دوسری ویکی کا بین الویکی ربط درج کریں: ',
			tooltip: 'مثلاً: fr:Bonjour'
		}
	},
	{
		label: 'م3: اب تک مواد موجود نہیں',
		value: 'nocontent',
		tooltip: 'ایسا مضمون جس میں محض روابط (بشمول ہائپر روابط، زمرہ کے ٹیگ اور مزید دیکھیے قطعہ وغیرہ) موجود ہوں، مضمون کا عنوان درج ہو، اور/یا مضمون نویس سے رابطہ کے پتے موجود ہوں۔ اس میں ضدابہام صفحات شامل نہیں۔'
	},
	{
		label: 'م5: بیرون ویکی منتقلی',
		value: 'transwiki',
		tooltip: 'ایسے مضامین جن پر وپ:نامزدگی برائے حذف میں گفتگو ہو چکی ہے اور یہ نتیجہ نکلا کہ مضمون کے مواد کو کسی دوسری ویکی میں منتقل کر کے ان معلومات کو محفوظ کر لیں اور منتقلی کے بعد حذف کر دیا جائے۔ اسی طرح ایسے مضامین جو محض فرہنگ کے اندراج کے مانند ہوں انھیں بھی ویکی لغت میں منتقل کرنے کے بعد حذف کر دیا جائے۔',
		subgroup: {
			name: 'transwiki_location',
			type: 'input',
			label: 'صفحہ کو جس مقام پر منتقل کیا گیا ہے، اس کا ربط: ',
			tooltip: 'مثلاً https://ur.wiktionary.org/wiki/پلک یا [[wikt:پلک]]'
		}
	},
	{
		label: 'م7: غیر معروف شخصیت، حلقہ، کمپنی، ویب مواد، جانور یا تقریب',
		value: 'a7',
		tooltip: 'کسی شخص، حلقہ، طائفہ، مجلس، کلب، ویب مواد یا جانوروں کے متعلق ایسے مضامین جن کے موضوع قابل لحاظ نہ ہوں۔ اگر متعلقہ موضوع متنازع ہو یا ماضی میں وپ:نامزدگی برائے حذف میں اس پر ہونے والی گفتگو کے نتیجے میں مضمون کے رکھنے کا فیصلہ کیا گیا ہو تو اسے حذف کرنے کے لیے نامزد کیا جا سکتا ہے۔',
		hideWhenSingle: true
	},
	{
		label: 'م7: غیر معروف شخصیت',
		value: 'person',
		tooltip: 'کسی غیر اہم اور نامعروف شخص کے متعلق تحریر کردہ مضمون۔ اگر متعلقہ موضوع متنازع ہو یا ماضی میں وپ:نامزدگی برائے حذف میں اس پر ہونے والی گفتگو کے نتیجے میں مضمون کے رکھنے کا فیصلہ کیا گیا ہو تو اسے حذف کرنے کے لیے نامزد کیا جا سکتا ہے۔',
		hideWhenMultiple: true
	},
	{
		label: 'م7: غیر معروف موسیقار یا طائفہ',
		value: 'band',
		tooltip: 'کسی غیر اہم اور غیر معروف گلوکار، موسیقار یا طائفہ پر تحریر کردہ مضمون جن کا موضوع قابل لحاظ نہ ہو۔',
		hideWhenMultiple: true
	},
	{
		label: 'م7: غیر معروف کلب یا ادارہ',
		value: 'club',
		tooltip: 'کسی غیر اہم اور غیر معروف کلب یا ادارہ پر تحریر کردہ مضمون جن کا موضوع قابل لحاظ نہ ہو۔',
		hideWhenMultiple: true
	},
	{
		label: 'م7: غیر معروف کمپنی یا تنظیم',
		value: 'corp',
		tooltip: 'کسی غیر اہم اور غیر معروف کمپنی یا تنظیم پر تحریر کردہ مضمون جن کا موضوع قابل لحاظ نہ ہو۔',
		hideWhenMultiple: true
	},
	{
		label: 'م7: غیر معروف ویب سائٹ یا دوسرے ویب مشتملات',
		value: 'web',
		tooltip: 'کسی غیر معروف ویب سائٹ، بلاگ، آن لائن فورم، ویب کامک، پوڈ کاسٹ یا دوسرے ویب مشتملات پر تحریر کردہ مضمون جن کا موضوع قابل لحاظ نہ ہو۔',
		hideWhenMultiple: true
	},
	{
		label: 'م7: غیر معروف جانور',
		value: 'animal',
		tooltip: 'کسی غیر اہم اور غیر معروف جانور پر تحریر کردہ مضمون جن کا موضوع قابل لحاظ نہ ہو۔',
		hideWhenMultiple: true
	},
	{
		label: 'م7: غیر معروف تقریب',
		value: 'event',
		tooltip: 'کسی غیر معروف تقریب (سفر، جلسہ، نشست، دعوت وغیرہ) پر تحریر کردہ مضمون جن کا موضوع قابل لحاظ نہ ہو۔',
		hideWhenMultiple: true
	},
	{
		label: 'م9: غیر معروف موسیقی ریکارڈ جس کے فنکاروں پر مضمون موجود نہیں',
		value: 'a9',
		tooltip: 'ایسے کسی موسیقی ریکاڑ کے متعلق تحریر کردہ مضمون جس کا موضوع قابل لحاظ نہ ہو اور اس کے فنکاروں پر مضمون سرے سے موجود ہی نہ ہو یا اسے حذف کر دیا گیا ہو۔'
	},
	{
		label: 'م10: حالیہ تحریر کردہ مضمون جو دوسرے مضمون کی نقل ہو',
		value: 'a10',
		tooltip: 'غیر متعلقہ تاریخچہ کے ساتھ حالیہ تحریر کردہ مضمون جس سے کسی موجود مضمون/مضامین میں معلومات کا اضافہ مقصود نہ ہو اور نہ اس عنوان سے رجوع مکرر بنانا معقول ہو۔ اس میں ایسا مضمون شامل نہیں جس کا مقصد موجود مضمون میں معلومات کا اضافہ ہو یا کسی ایک مضمون کو مختلف صفحات میں تقسیم کیا گیا ہو۔',
		subgroup: {
			name: 'a10_article',
			type: 'input',
			label: 'دوہرے مضمون کا عنوان: '
		}
	},
	{
		label: 'م11: واضح طور پر مضمون نویس کی ذہنی اپج ہو اور اس کی معروفیت اور اہمیت کا کوئی ذکر نہ ہو',
		value: 'madeup',
		tooltip: 'ایسا مضمون جو واضح طور پر اس بات کی جانب اشارہ کر رہا ہو کہ اس کا موضوع مضمون نویس کے ذہن کی تخلیق ہے نیز مضمون میں ایسا کوئی قابل اعتماد اشارہ موجود نہ ہو جس سے یہ واضح ہو سکے کہ یہ موضوع کتنا اہم اور معروف ہے۔'
	}
];

Twinkle.speedy.categoryList = [
	{
		label: 'ز1: خالی زمرہ',
		value: 'catempty',
		tooltip: 'وہ زمرہ جات جو کم از کم سات دن تک خالی رہیں۔ ان میں وہ زمرہ جات شامل نہیں جن پر وپ:زمرہ جات برائے حذف پر گفتگو ہو چکی ہے، نیز ضد ابہام زمرہ جات اور دیگر مخصوص زمرہ جات پر بھی یہ معیار منطبق نہیں ہوتا۔ اگر متعلقہ زمرہ نسبتاً نیا نہ ہو تو عین ممکن ہے کہ اس میں پہلے کبھی مضامین موجود رہے ہوں چنانچہ گہرائی سے جائزہ لیا جائے۔'
	},
	{
		label: 'ع8: وہ زمرہ جو حذف شدہ سانچوں سے پُر ہو',
		value: 'templatecat',
		tooltip: 'یہ معیار ان زمرہ جات کے لیے ہے جن میں سانچوں کے ذریعہ مضامین اور صفحات شامل ہوتے تھے لیکن اب وہ سانچے حذف ہو چکے ہیں۔ اس میں وہ زمرے شامل نہیں جو اب تک زیر استعمال ہیں۔',
		subgroup: {
			name: 'templatecat_rationale',
			type: 'input',
			label: 'مزید وضاحت:',
			size: 60
		}
	},
	{
		label: 'ع8: غیر موجود اہداف کی جانب رجوع مکرر',
		value: 'redirnone',
		tooltip: 'اس اختیار کو فعال کرنے کے بعد ایسے تمام صفحات علاحدہ کر دیے جائیں گے جو منصوبہ کے لیے مفید ہوں - خصوصاً صارف تبادلۂ خیال صفحات، ان کے وثائق اور ویکی ذخائر میں موجود فائلوں کے تبادلۂ خیال صفحات۔',
		hideWhenMultiple: true
	}
];

Twinkle.speedy.userList = [
	{
		label: 'ص1: درخواست صارف',
		value: 'userreq',
		tooltip: 'صارفین کی درخواست پر ان کے ذاتی ذیلی صفحات۔ بعض نادر حالتوں میں اس بات کا امکان ہے کہ انتظامی ضرورت کے تحت ان صفحات کو باقی رکھنا ناگزیر ہو، نیز بسا اوقات اصل صارف صفحات بھی حذف کیے جا سکتے ہیں۔ مکمل تفصیلات اور اصول و ضوابط کے لیے وپ:صارف کا صفحہ ملاحظہ فرمائیں۔',
		subgroup: mw.config.get('wgNamespaceNumber') === 3 && mw.config.get('wgTitle').indexOf('/') === -1 ? {
			name: 'userreq_rationale',
			type: 'input',
			label: 'اس صارف صفحہ کے حذف کی وجہ درج کرنا ضروری ہے: ',
			tooltip: 'صارف کے تبادلہ خیال صفحات کی حذف شدگی انتہائی نادر حالات میں عمل میں آتی ہے، تفصیل کے لیے وپ:حذف تبادلۂ خیال ملاحظہ فرمائیں۔',
			size: 60
		} : null,
		hideSubgroupWhenMultiple: true
	},
	{
		label: 'ص2: غیر موجود صارف',
		value: 'nouser',
		tooltip: 'غیر موجود صارفین کے صارف صفحات («خاص:فہرست صارفین» ملاحظہ فرمائیں)'
	},
	{
		label: 'ص5: وپ:ویب ہوسٹ نہیں کی واضح خلاف ورزیاں',
		value: 'notwebhost',
		tooltip: 'صارف نام فضا میں موجود وہ صفحات جن میں ویکیپیڈیا کے اہداف و مقاصد سے غیر متعلق تحریریں، معلومات، گفتگو اور/یا دیگر سرگرمیاں درج ہوں، نیز اس صارف صفحہ کے مالک نے صارف نام فضا سے باہر چند ترمیمیں کی ہوں یا نہ کی ہوں۔ البتہ ان میں معقول مسوادت اور ذاتی معلومات کے طرز پر تحریر کردہ صفحات شامل نہیں۔',
		hideWhenRedirect: true
	},
	{
		label: 'ع11: اشتہاری صارف نام کے تحت اشتہاری صفحۂ صارف',
		value: 'spamuser',
		tooltip: 'ایسے صارف نام کے تحت موجود صفحہ صارف جو کسی چیز کی تشہیر کا اشارہ دے۔ خیال رہے کہ کمپنی یا مصنوعات پر صارف نام فضا میں کسی مضمون کی موجودگی اسے قابل حذف نہیں بنا سکتی۔ اگر صارف صفحہ میں فاضل کاری کی گئی ہو لیکن صارف نام ایسا نہ ہو تو اس صورت میں ع11 کا ٹیگ ہی چسپاں کرنا کافی ہوگا۔',
		hideWhenMultiple: true,
		hideWhenRedirect: true
	},
	{
		label: 'ع13: مبت میں مسودے کی درخواست یا خالی مسودہ جس پر 6 مہینے گذر ہو چکے ہوں',
		value: 'afc',
		tooltip: 'ہر وہ مسودہ جسے مسترد کر دیا گیا ہو یا جسے مبت میں پیش نہ کیا گیا ہو اور 6 مہینوں سے اس میں کوئی ترمیم نہ کی گئی ہو، قابل حذف ہے (خودکار ترامیم اس میں داخل نہیں ہیں)۔',
		hideWhenMultiple: true,
		hideWhenRedirect: true
	}
];

Twinkle.speedy.templateList = [
	{
		label: 'س2: وہ سانچہ جو واضح طور پر موجودہ اصول و ضوابط کی غلط تشریح کرے',
		value: 'policy',
		tooltip: 'ان میں «فوری حذف شدگی» کے وہ سانچے بھی شامل ہیں جو فوری حذف شدگی کے مسائل کے لیے بنائے گئے ہوں لیکن فوری حذف شدگی کے معیار نہ ہوں نیز اظہار لاتعلقی کے وہ سانچے بھی جو مضامین میں استعمال کرنے کے لیے بنائے گئے ہوں۔',
		subgroup: {
			name: 'policy_rationale',
			type: 'input',
			label: 'مزید وضاحت: ',
			size: 60
		},
		hideSubgroupWhenSysop: true
	},
	{
		label: 'س3: دہرا سانچہ یا سخت کوڈ شدہ نمونہ',
		value: 'duplicatetemplate',
		tooltip: 'وہ سانچے جو کسی دوسرے سانچے کا چربہ ہوں یا انھیں اس انداز میں بنایا گیا ہو کہ ان کے نتائج دیگر سانچوں سے مشابہ ہوں۔',
		subgroup: {
			name: 'duplicatetemplate_2',
			type: 'input',
			label: 'جس سانچہ کاچربہ ہے اس کا نام: ',
			tooltip: '«سانچہ:» سابقہ ضروری نہیں۔'
		},
		hideWhenMultiple: true
	}
];

Twinkle.speedy.portalList = [
	{
		label: 'ب1: باب اگر مضمون کی شکل میں ہو',
		value: 'p1',
		tooltip: 'اس صورت میں مضمون کا معیار (م1، م3، م7 یا م10) درج کرنا لازمی ہے۔',
		subgroup: {
			name: 'p1_criterion',
			type: 'input',
			label: 'مضمون کے لیے فوری حذف شدگی کا موزوں معیار: '
		}
	},
	{
		label: 'ب2: خالی باب',
		value: 'emptyportal',
		tooltip: 'اس موضوع سے متعلق باب جس پر کسی مضمون کا نامکمل دیباچہ بھی نہ ہو نیز کم از کم تین ایسے نامکمل مضامین نہ ہوں جو موضوع پر تفصیلی مواد فراہم کریں، مناسب ہوگا کہ اس باب کے عنوان کے تحت گفتگو کی جائے۔'
	}
];

Twinkle.speedy.generalList = [
	{
		label: 'ع1: مہمل اور لغویات سے پر۔ وہ صفحات جو محض غیر متعلق متن یا بے کار اور مہمل نیز بے معنی مندرجات یا تاریخچہ پر مشتمل ہوں۔',
		value: 'nonsense',
		tooltip: 'اس میں کمزور تحریر، جانبدار مضمون، بے ہودہ تبصرے، تخریب کاری، افسانوی مواد، غیر اردو یا غلط ترجمہ اور نامعقول نظریات یا افواہیں شامل نہیں ہیں۔ ان پر ع1 معیار منطبق نہیں ہوگا۔',
		hideInNamespaces: [ 2 ] // Not applicable in userspace
	},
	{
		label: 'ع2: تجرباتی صفحہ',
		value: 'test',
		tooltip: 'ترمیم کاری یا ویکیپیڈیا کے دیگر کاموں کو جانچنے کے لیے بنایا گیا صفحہ۔ اس میں صارف نام فضا کے تحت بنایا گیا صفحہ نیز غیر مستعمل یا دوہرے سانچے شامل نہیں (البتہ س3 معیار منطبق ہو سکتا ہے)۔',
		hideInNamespaces: [ 2 ] // Not applicable in userspace
	},
	{
		label: 'ع3: نری تخریب کاری',
		value: 'vandalism',
		tooltip: 'واضح تخریب کاری (اس میں وہ رجوع مکررات بھی شامل ہیں جو منتقلی کی تخریب کاری کے وقت پیچھے رہ جاتے ہیں)۔'
	},
	{
		label: 'ع3: واضح افسانہ طرازی',
		value: 'hoax',
		tooltip: 'تخریب کاری کی حد تک واضح افسانہ طرازی',
		hideWhenMultiple: true
	},
	{
		label: 'ع4: وپ:نامزدگی برائے حذف پر گفتگو کے نتیجے میں حذف شدہ مواد کی باز تخلیق',
		value: 'repost',
		tooltip: 'وپ:نامزدگی برائے حذف یا حذف کی دیگر کارروائیوں کے نتیجے میں حذف ہونے والے صفحہ کی نقل خواہ کسی بھی عنوان سے ہو۔ اس دفعہ میں وہ مواد شامل نہیں جو صارف صفحہ پر درج کیا گیا ہو یا حذف کی کارروائی کے بغیر حذف کیا گیا ہو، نیز اگر سابقہ حذف شدگیاں مجوزہ یا فوری تھیں تو فوری حذف شدگی کے دیگر معیار اس وقت بھی منطبق ہوں گے۔',
		subgroup: {
			name: 'repost_xfd',
			type: 'input',
			label: 'حذف کی گفتگو کا ربط: ',
			tooltip: '«ویکیپیڈیا:» سابقہ لازمی ہے۔',
			size: 60
		}
	},
	{
		label: 'ع5: ممنوع یا معطل صارف کا تخلیق کردہ صفحہ',
		value: 'banned',
		tooltip: 'وہ صفحات جو معطل یا ممنوع صارفین نے اپنے تعطل یا پابندی کی خلاف ورزی کرتے ہوئے بنائے ہوں اور ان میں دیگر صارفین کی قابل لحاظ ترامیم نہ ہوں۔',
		subgroup: {
			name: 'banned_user',
			type: 'input',
			label: 'معطل صارف کا نام درج کریں (اگر معلوم ہو): ',
			tooltip: 'یہاں «صارف:» سابقہ درج نہ کریں'
		}
	},
	{
		label: 'ع6: منتقلی',
		value: 'move',
		tooltip: 'غیر متنازع منتقلی کی راہ ہموار کرنے مثلاً رجوع مکرر کو واپس پھیرنے کے لیے۔',
		subgroup: [
			{
				name: 'move_page',
				type: 'input',
				label: 'منتقل کیے جانے والے صفحہ کا عنوان: '
			},
			{
				name: 'move_reason',
				type: 'input',
				label: 'وجہ:',
				size: 60
			}
		],
		hideWhenMultiple: true
	},
	{
		label: 'ع6: نامزدگی برائے حذف',
		value: 'xfd',
		tooltip: 'کسی منتظم نے حذف کی رائے شماری کو «حذف پر عمل درآمد» کہہ کر بند کر دیا ہے لیکن اس نے متعلقہ مضمون حذف نہیں کیا۔',
		subgroup: {
			name: 'xfd_fullvotepage',
			type: 'input',
			label: 'جس صفحہ پر حذف کی رائے شماری ہوئی ہے اس کا عنوان: ',
			tooltip: '«ویکیپیڈیا:» سابقہ لازمی ہے',
			size: 40
		},
		hideWhenMultiple: true
	},
	{
		label: 'ع6: نقل و چسپاں کی مدد سے صفحہ کی منتقلی',
		value: 'copypaste',
		tooltip: 'یہ محض اس منتقلی کے لیے ہے جسے عارضی طور پر حذف کرنا پڑے تاکہ صاف منتقلی کے لیے جگہ بن سکے۔',
		subgroup: {
			name: 'copypaste_sourcepage',
			type: 'input',
			label: 'اصل صفحہ کا عنوان جسے یہاں نقل کیا گیا ہے: '
		},
		hideWhenMultiple: true
	},
	{
		label: 'ع6: صفائی نولکھائی اور دیکھ بھال',
		value: 'g6',
		tooltip: 'صفائی نولکھائی اور دیکھ بھال وغیرہ غیر متنازع امور',
		subgroup: {
			name: 'g6_rationale',
			type: 'input',
			label: 'وجہ: ',
			size: 60
		}
	},
	{
		label: 'ع7: مصنف نے حذف کرنے کی درخواست کی یا صفحہ کا مواد حذف کرکے اسے خالی کردیا',
		value: 'author',
		tooltip: 'وہ صفحہ جسے حذف کرنے کی درخواست نیک نیتی سے خود اس کا مصنف کرے، بشرطیکہ اس صفحہ کا اصل مواد اسی مصنف نے لکھا ہو۔ اگر مصنف صفحہ کا تمام مواد حذف کر کے اسے خالی کردے تو اسے بھی حذف کی درخواست ہی سمجھا جائے گا۔',
		subgroup: {
			name: 'author_rationale',
			type: 'input',
			label: 'مزید وضاحت:',
			tooltip: 'یہاں اس جگہ کا ربط رکھا جا سکتا ہے جہاں صارف نے درخواست کی ہو۔',
			size: 60
		},
		hideSubgroupWhenSysop: true
	},
	{
		label: 'ع8: حذف شدہ یا غیر موجود صفحہ سے مربوط صفحات',
		value: 'g8',
		tooltip: 'مثلاً تبادلۂ خیال کے یتیم صفحات؛ اصل صفحہ کے بغیر ذیلی صفحات؛ متعلقہ فائل کے بغیر فائل کے صفحات؛ نادرست ہدف کی جانب رجوع مکررات مثلاً غیر موجود ہدف، قطار در قطار رجوع مکرر اور غلط عناوین؛ یا حذف شدہ اور مکرر سانچوں سے پُر زمرہ جات۔ اس معیار میں وہ صفحہ شامل نہیں جو منصوبے کے لیے مفید ہو، خصوصاً حذف شدگی کی گفتگو جس کا نوشتہ میں کہیں اندراج نہ ہو، صارف صفحات اور صارف کے تبادلۂ خیال صفحات اور ان کے وثائق، وہ معقول رجوع مکررات جنھیں درست اہداف کی جانب منتقل کیا جا سکے اور ان فائلوں کے صفحات اور تبادلہ خیال صفحات جو ویکی ذخائر میں موجود ہوں۔',
		subgroup: {
			name: 'g8_rationale',
			type: 'input',
			label: 'مزید وضاحت:',
			size: 60
		},
		hideSubgroupWhenSysop: true
	},
	{
		label: 'ع8: اصل صفحہ کے بغیر ذیلی صفحات',
		value: 'subpage',
		tooltip: 'اس معیار میں وہ صفحہ شامل نہیں جو منصوبے کے لیے مفید ہو، خصوصاً حذف شدگی کی گفتگو جن کا نوشتہ میں کہیں اندراج نہ ہو، صارف صفحات اور صارف کے تبادلۂ خیال صفحات اور ان کے وثائق، وہ معقول رجوع مکررات جنہیں درست اہداف کی جانب منتقل کیا جا سکے اور ان فائلوں کے صفحات اور تبادلہ خیال صفحات جو ویکی ذخائر میں موجود ہوں۔',
		hideWhenMultiple: true,
		hideInNamespaces: [ 0, 6, 8 ]  // hide in main, file, and mediawiki-spaces
	},
	{
		label: 'ع10: صفحۂ حملہ',
		value: 'attack',
		tooltip: 'وہ صفحات جن کا اس کی بجائے کوئی مقصد نہ ہو کہ وہ اپنے موضوع یا دیگر موجودات (مثلاً فلاں احمق ہے وغیرہ) کی تحقیر کریں۔ اس میں بقید حیات شخصیت کی وہ سوانح عمری بھی شامل ہے جو اپنے لب و لہجے سے منفی معلوم ہو اور اس میں مواد کو بلا حوالہ درج کیا جائے نیز تاریخچہ میں معتدل نقطہ نظر کا کوئی نسخہ بھی موجود نہ ہو جس کی جانب واپس پھیرا جا سکے۔ منتظمین جو ان صفحات کو حذف کریں وہ خلاصۂ حذف میں اس صفحہ کے مواد کا اقتباس قطعاً درج نہ کریں!'
	},
	{
		label: 'ع10: بقید حیات شخصیت کی منفی اور بلا حوالہ سوانح عمری',
		value: 'negublp',
		tooltip: 'بقید حیات شخصیت کی ایسی سوانح نگاری جو از اول تا آخر منفی اسلوب اور بلا حوالہ مواد پر مشتمل ہو نیز تاریخچہ میں معتدل نقطہ نظر کا کوئی نسخہ بھی موجود نہ ہو جس کی جانب واپس پھیرا جا سکے۔',
		hideWhenMultiple: true
	},
	{
		label: 'ع11 : مبہم اشتہاربازی',
		value: 'spam',
		tooltip: 'وہ صفحات جو کسی کمپنی، حلقہ، خدمت، مصنوعات یا شخصیات کی تشہیر کریں اور انھیں ویکی اسلوب میں ڈھالنے کے لیے بنیاد سے از سر نو لکھنا ناگزیر ہو۔ واضح رہے کہ ایسا  مضمون جو کسی کمپنی یا مصنوعات کے متعلق ہو اور معتدل نقطہ نظر کے ساتھ اپنے موضوع کو بیان کرے وہ اس معیار میں شامل نہیں؛ وہ مضمون جو واضح اشتہار بازی پر مشتمل ہو اس میں نامناسب مواد بھی موجود ہونا چاہیے۔'
	},
	{
		label: 'ع12 : کاپی رائٹ کی خلاف ورزی',
		value: 'copyvio',
		tooltip: 'خواہ: (1) درج کردہ مواد کسی ایسی ویب سائٹ سے نقل کیا گیا ہو جو ویکیپیڈیا سے ہم آہنگ اجازت نامے کی حامل نہیں یا اسٹاک تصویر فروخت کنندگان (مثلاً گیٹی امیجز یا کوربس) سے ماخوذ تصویر ہو؛ (2) صفحہ کے تاریخچہ میں محفوظ رکھنے کے قابل کوئی مواد نہ ہو؛ یا (3) یہ خلاف ورزی بنیادی طور پر ویکی میں کرنے کی بجائے ویکیپیڈیا جیسی دوسری کسی ویب سائٹ پر کی گئی ہو اور وہاں سے نقل کر کے ایک ہی مرتبہ تنہا کسی صارف نے یہاں درج کر دیا ہو۔',
		subgroup: [
			{
				name: 'copyvio_url',
				type: 'input',
				label: 'ربط/یوآرایل (اگر دستیاب ہو): ',
				tooltip: 'اگر اس مواد کو کسی آن لائن ماخذ سے نقل کیا گیا ہے تو اس کا ربط بشمول «http://» یا  «https://» دستور درج کریں۔ اگر متعلقہ ربط فاضل کاری کی سیاہ فہرست میں درج ہو تو آپ دستور کا اندراج نہ کریں۔',
				size: 60
			},
			{
				name: 'copyvio_url2',
				type: 'input',
				label: 'اضافی ربط: ',
				tooltip: 'اختیاری ہے۔ «http://» یا «https://» بھی لکھیں',
				size: 60
			},
			{
				name: 'copyvio_url3',
				type: 'input',
				label: 'اضافی ربط: ',
				tooltip: 'اختیاری ہے۔ «http://» یا «https://» بھی لکھیں',
				size: 60
			}
		]
	},
	{
		label: 'ع13: مسودہ نام فضا میں یا مبت میں موجود تخلیق مضمون کی قدیم اور متروک درخواستیں جن میں 6 مہینوں سے کوئی ترمیم نہ کی گئی ہو',
		value: 'afc',
		tooltip: 'تخلیق مضمون کی کوئی بھی مسترد یا غیر تجویز کردہ درخواست جس میں 6 ماہ سے زائد عرصہ میں کوئی ترمیم نہ کی گئی ہو۔',
		hideWhenRedirect: true,
		showInNamespaces: [2, 118]  // user, draft namespaces only
	},
	{
		label: 'ع14: غیر ضروری ضد ابہام صفحہ',
		value: 'disambig',
		tooltip: 'یہ معیار محض ان یتیم ضد ابہام صفحات کے لیے ہے جن میں یہ شرائط موجود ہوں: 1) دو یا دو سے کم ویکیپیڈیا صفحات کی ضد ابہام سازی جن کے عنوان میں "(ضد ابہام)" موجود ہو۔ 2) عنوان سے قطع نظر غیر موجود ویکیپیڈیا صفحات کی ضد ابہام سازی۔'  
	}
];

Twinkle.speedy.redirectList = [
	{
		label: 'ر2: مرکزی نام فضا سے کسی دوسری نام فضا کی جانب رجوع مکررات باستثنائے زمرہ:، سانچہ:، ویکیپیڈیا:، معاونت: اور باب:',
		value: 'rediruser',
		tooltip: '(اس میں ویکیپیڈیا کی مشابہ نام فضا وپ: شامل نہیں ہے)۔ اگر یہ کسی منتقلی صفحہ کا نتیجہ تھا تو رجوع مکرر حذف کرنے سے قبل ایک یا دو دن انتظار کر لیں۔',
		showInNamespaces: [ 0 ]
	},
	{
		label: 'ر3: وہ رجوع مکررات جو کسی غیر معقول املائی غلطی یا غلط ناموں سے حال ہی میں بنائے گئے ہوں',
		value: 'redirtypo',
		tooltip: 'اگرچہ عام املائی غلطیوں یا غلط ناموں سے رجوع مکررات کبھی مفید بھی ہوتے ہیں مثلاً دیگر زبانوں کے عنوان سے بنائے جانے والے رجوع مکررات۔'
	},
	{
		label: 'ر4: فائل نام فضا کا رجوع مکرر جس کا عنوان ویکی ذخائر کے صفحہ سے مماثل ہو',
		value: 'redircom',
		tooltip: 'اس رجوع مکرر سے کوئی صفحہ مربوط نہیں ہونا چاہیے (ہاں اگر ان روابط سے واضح طور پر یہ فائل مقصود ہے یا ویکی ذخائر کی جانب رجوع مکرر ہے تو کوئی حرج نہیں)۔',
		showInNamespaces: [ 6 ]
	},
	{
		label: 'ع6: غلط ضد ابہام صفحہ کی جانب رجوع مکرر',
		value: 'movedab',
		tooltip: 'یہ محض ان رجوع مکررات کے لیے ہے جس کا عنوان (ضد ابہام) پر ختم ہونے والا ضد ابہام صفحہ ہو اور اصل موضوع موجود نہ ہو۔',
		hideWhenMultiple: true
	},
	{
		label: 'ع8: نادرست اہداف مثلاً غیر موجود صفحات یا نامناسب عناوین سے رجوع مکرر',
		value: 'redirnone',
		tooltip: 'اس معیار میں وہ صفحہ شامل نہیں جو منصوبے کے لیے مفید ہو، خصوصاً حذف شدگی کی گفتگو جن کا نوشتہ میں کہیں اندراج نہ ہو، صارف صفحات اور صارف کے تبادلۂ خیال صفحات اور ان کے وثائق، وہ معقول رجوع مکررات جنہیں درست اہداف کی جانب منتقل کیا جا سکے اور ان فائلوں کے صفحات اور تبادلہ خیال صفحات جو ویکی ذخائر میں موجود ہوں۔',
		hideWhenMultiple: true
	}
];

Twinkle.speedy.normalizeHash = {
	reason: 'فوری حذف',
	nonsense: 'ع1',
	test: 'ع2',
	vandalism: 'ع3',
	hoax: 'ع3',
	repost: 'ع4',
	banned: 'ع5',
	move: 'ع6',
	xfd: 'ع6',
	movedab: 'ع6',
	copypaste: 'ع6',
	g6: 'ع6',
	author: 'ع7',
	g8: 'ع8',
	talk: 'ع8',
	subpage: 'ع8',
	redirnone: 'ع8',
	templatecat: 'ع8',
	imagepage: 'ع8',
	attack: 'ع10',
	negublp: 'ع10',
	spam: 'ع11',
	spamuser: 'ع11',
	copyvio: 'ع12',
	afc: 'ع13',
	disambig: 'ع14',
	nocontext: 'م1',
	foreign: 'م2',
	nocontent: 'م3',
	transwiki: 'م5',
	a7: 'م7',
	person: 'م7',
	corp: 'م7',
	web: 'م7',
	band: 'م7',
	club: 'م7',
	animal: 'م7',
	event: 'م7',
	a9: 'م9',
	a10: 'م10',
	madeup: 'م11',
	rediruser: 'ر2',
	redirtypo: 'ر3',
	redircom: 'ر4',
	redundantimage: 'ف1',
	noimage: 'ف2',
	fpcfail: 'ف2',
	noncom: 'ف3',
	unksource: 'ف4',
	unfree: 'ف5',
	f5: 'ف5',
	norat: 'ف6',
	badfairuse: 'ف7',
	commons: 'ف8',
	imgcopyvio: 'ف9',
	badfiletype: 'ف10',
	nopermission: 'ف11',
	catempty: 'ز1',
	userreq: 'ص1',
	nouser: 'ص2',
	notwebhost: 'ص5',
	p1: 'ب1',
	emptyportal: 'ب2',
	// local template criteria
	policy: 'س2',
	duplicatetemplate: 'س3'
};

Twinkle.speedy.callbacks = {
	getTemplateCodeAndParams: function(params) {
		var code, parameters, i;
		if (params.normalizeds.length > 1) {
			code = '{{حذ-متعدد';
			params.utparams = {};
			$.each(params.normalizeds, function(index, norm) {
				code += '|' + norm.toUpperCase();
				parameters = params.templateParams[index] || [];
				for (var i in parameters) {
					if (typeof parameters[i] === 'string' && !parseInt(i, 10)) {  // skip numeric parameters - {{db-multiple}} doesn't understand them
						code += '|' + i + '=' + parameters[i];
					}
				}
				$.extend(params.utparams, Twinkle.speedy.getUserTalkParameters(norm, parameters));
			});
			code += '}}';
		} else {
			parameters = params.templateParams[0] || [];
			code = '{{db-' + params.values[0];
			for (i in parameters) {
				if (typeof parameters[i] === 'string') {
					code += '|' + i + '=' + parameters[i];
				}
			}
			if (params.usertalk) {
				code += '|help=off';
			}
			code += '}}';
			params.utparams = Twinkle.speedy.getUserTalkParameters(params.normalizeds[0], parameters);
		}

		return [code, params.utparams];
	},

	parseWikitext: function(wikitext, callback) {
		var query = {
			action: 'parse',
			prop: 'text',
			pst: 'true',
			text: wikitext,
			contentmodel: 'wikitext',
			title: mw.config.get('wgPageName'),
			disablelimitreport: true,
			format: 'json'
		};

		var statusIndicator = new Morebits.status('حذف کا خلاصہ تیار ہو رہا ہے');
		var api = new Morebits.wiki.api('فوری حذف کے ٹیگ کا تجزیہ جاری ہے', query, function(apiobj) {
			var reason = decodeURIComponent($(apiobj.getResponse().parse.text).find('#delete-reason').text()).replace(/\+/g, ' ');
			if (!reason) {
				statusIndicator.warn('سانچۂ حذف سے خلاصہ تیار نہیں کیا جا سکا');
			} else {
				statusIndicator.info('مکمل');
			}
			callback(reason);
		}, statusIndicator);
		api.post();
	},

	noteToCreator: function(pageobj) {
		var params = pageobj.getCallbackParameters();
		var initialContrib = pageobj.getCreator();

		// disallow notifying yourself
		if (initialContrib === mw.config.get('wgUserName')) {
			Morebits.status.warn('آپ (' + initialContrib + ') ہی نے یہ صفحہ بنایا ہے؛ لہذا اطلاع رسانی کی کارروائی منسوخ کی جا رہی ہے');
			initialContrib = null;

		// don't notify users when their user talk page is nominated/deleted
		} else if (initialContrib === mw.config.get('wgTitle') && mw.config.get('wgNamespaceNumber') === 3) {
			Morebits.status.warn('اولین مشارکت کنندہ کو اطلاع دی جا رہی ہے: اس صارف نے اپنا تبادلۂ خیال صفحہ خود تخلیق کیا ہے؛ لہذا اطلاع رسانی کی کارروائی منسوخ کی جا رہی ہے');
			initialContrib = null;

		// quick hack to prevent excessive unwanted notifications, per request. Should actually be configurable on recipient page...
		} else if ((initialContrib === 'Shuaib-bot' || initialContrib === 'ObaidBot' || initialContrib === 'پیغامبر خوش آمدید') && params.normalizeds[0] === 'ف2') {
			Morebits.status.warn('اولین مشارکت کنندہ کو اطلاع دی جا رہی ہے: اس صفحہ کو روبہ نے تخلیق کیا ہے؛ لہذا اطلاع رسانی کی کارروائی منسوخ کی جا رہی ہے');
			initialContrib = null;

		// Check for already existing tags
		} else if (Twinkle.speedy.hasCSD && params.warnUser && !confirm('اس صفحہ میں پہلے سے حذف شدگی کا ٹیگ چسپاں ہے، چنانچہ اس بات کا امکان ہے کہ صفحہ ساز کو پہلے ہی اس کی اطلاع دی جا چکی ہو۔ کیا آپ دوبارہ اطلاع دینا چاہتے ہیں؟')) {
			Morebits.status.info('اولین مشارکت کنندہ کو اطلاع دی جا رہی ہے', 'صارف نے منسوخ کر دیا؛ لہذا اطلاع رسانی کی کارروائی منسوخ کی جا رہی ہے۔');
			initialContrib = null;
		}

		if (initialContrib) {
			var usertalkpage = new Morebits.wiki.page('تبادلۂ خیال صارف:' + initialContrib, 'اولین مشارکت کنندہ (' + initialContrib + ') کو اطلاع دی جا رہی ہے'),
				notifytext, i, editsummary;

			// special cases: "db" and "db-multiple"
			if (params.normalizeds.length > 1) {
				notifytext = '\n{{subst:db-' + (params.warnUser ? 'deleted' : 'notice') + '-multiple|1=' + Morebits.pageNameNorm;
				var count = 2;
				$.each(params.normalizeds, function(index, norm) {
					notifytext += '|' + count++ + '=' + norm.toUpperCase();
				});
			} else if (params.normalizeds[0] === 'فوری حذف') {
				notifytext = '\n{{subst:db-reason-' + (params.warnUser ? 'deleted' : 'notice') + '|1=' + Morebits.pageNameNorm;
			} else {
				notifytext = '\n{{subst:db-csd-' + (params.warnUser ? 'deleted' : 'notice') + '-custom|1=';
				if (params.values[0] === 'copypaste') {
					notifytext += params.templateParams[0].sourcepage;
				} else {
					notifytext += Morebits.pageNameNorm;
				}
				notifytext += '|2=' + Twinkle.speedy.localKeys[params.values[0]];
			}

			for (i in params.utparams) {
				if (typeof params.utparams[i] === 'string') {
					notifytext += '|' + i + '=' + params.utparams[i];
				}
			}
			notifytext += (params.welcomeuser ? '' : '|nowelcome=yes') + '}} ~~~~';

			var editsummary = "اطلاع نامہ: فوری حذف شدگی کی نامزدگی";
			if (params.normalizeds.indexOf('ع10') === -1) {  // no article name in summary for G10 taggings
				editsummary += ' [[:' + Morebits.pageNameNorm + ']].';
			} else {
				editsummary += ' کا حملہ صفحہ';
			}

			usertalkpage.setAppendText(notifytext);
			usertalkpage.setEditSummary(editsummary);
			usertalkpage.setChangeTags(Twinkle.changeTags);
			usertalkpage.setCreateOption('recreate');
			usertalkpage.setWatchlist(Twinkle.getPref('watchSpeedyUser'));
			usertalkpage.setFollowRedirect(true, false);
			usertalkpage.append(function onNotifySuccess() {
				// add this nomination to the user's userspace log, if the user has enabled it
				if (params.lognomination) {
					Twinkle.speedy.callbacks.user.addToLog(params, initialContrib);
				}
			}, function onNotifyError() {
				// if user could not be notified, log nomination without mentioning that notification was sent
				if (params.lognomination) {
					Twinkle.speedy.callbacks.user.addToLog(params, null);
				}
			});
		} else if (params.lognomination) {
			// log nomination even if the user notification wasn't sent
			Twinkle.speedy.callbacks.user.addToLog(params, null);
		}
	},

	sysop: {
		main: function(params) {
			var reason;
			if (!params.normalizeds.length && params.normalizeds[0] === 'فوری حذف') {
				reason = prompt('حذف کا خلاصہ درج کریں جو نوشتہ حذف شدگی میں محفوظ ہوگا:', '');
				Twinkle.speedy.callbacks.sysop.deletePage(reason, params);
			} else {
				var code = Twinkle.speedy.callbacks.getTemplateCodeAndParams(params)[0];
				Twinkle.speedy.callbacks.parseWikitext(code, function(reason) {
					if (params.promptForSummary) {
						reason = prompt('حذف کا خلاصہ تحریر کریں یا خودکار طور پر درج کیے جانے والے خلاصے کے لیے ٹھیک کی بٹن پر کلک کریں', reason);
					}
					Twinkle.speedy.callbacks.sysop.deletePage(reason, params);
				});
			}
		},
		deletePage: function(reason, params) {
			var thispage = new Morebits.wiki.page(mw.config.get('wgPageName'), 'صفحہ حذف ہو رہا ہے');

			if (reason === null) {
				return Morebits.status.error('وجہ طلب کی جا رہی ہے', 'صارف نے منسوخ کر دیا');
			} else if (!reason || !reason.replace(/^\s*/, '').replace(/\s*$/, '')) {
				return Morebits.status.error('وجہ طلب کی جا رہی ہے', "آپ نے وجہ درج نہیں کی۔ مجھے نہیں معلوم کہ منتظمین اس قدر لا پروائی کیوں برتتے ہیں اور ان اوٹ پٹانگ حرکتوں کا محرک کیا ہے۔ سردست یہ کارروائی منسوخ کی جا رہی ہے۔");
			}

			var deleteMain = function(callback) {
				thispage.setEditSummary(reason);
				thispage.setChangeTags(Twinkle.changeTags);
				thispage.setWatchlist(params.watch);
				thispage.deletePage(function() {
					thispage.getStatusElement().info('done');
					typeof callback === 'function' && callback();
					Twinkle.speedy.callbacks.sysop.deleteTalk(params);
				});
			};

			// look up initial contributor. If prompting user for deletion reason, just display a link.
			// Otherwise open the talk page directly
			if (params.warnUser) {
				thispage.setCallbackParameters(params);
				thispage.lookupCreation(function(pageobj) {
					deleteMain(function() {
						Twinkle.speedy.callbacks.noteToCreator(pageobj);
					});
				});
			} else {
				deleteMain();
			}
		},
		deleteTalk: function(params) {
			// delete talk page
			if (params.deleteTalkPage &&
					params.normalized !== 'ف8' &&
					!document.getElementById('ca-talk').classList.contains('new')) {
				var talkpage = new Morebits.wiki.page(mw.config.get('wgFormattedNamespaces')[mw.config.get('wgNamespaceNumber') + 1] + ':' + mw.config.get('wgTitle'), 'تبادلۂ خیال صفحہ حذف کیا جا رہا ہے');
				talkpage.setEditSummary('[[وپ:فحذ#ع8|ع8]]: تبادلۂ خیال برائے حذف شدہ صفحہ «' + Morebits.pageNameNorm + '»');
				talkpage.setChangeTags(Twinkle.changeTags);
				talkpage.deletePage();
				// this is ugly, but because of the architecture of wiki.api, it is needed
				// (otherwise success/failure messages for the previous action would be suppressed)
				window.setTimeout(function() {
					Twinkle.speedy.callbacks.sysop.deleteRedirects(params);
				}, 1800);
			} else {
				Twinkle.speedy.callbacks.sysop.deleteRedirects(params);
			}
		},
		deleteRedirects: function(params) {
			// delete redirects
			if (params.deleteRedirects) {
				var query = {
					action: 'query',
					titles: mw.config.get('wgPageName'),
					prop: 'redirects',
					rdlimit: 'max', // 500 is max for normal users, 5000 for bots and sysops
					format: 'json'
				};
				var wikipedia_api = new Morebits.wiki.api('رجوع مکررات کی فہرست اخذ کی جا رہی ہے۔۔۔', query, Twinkle.speedy.callbacks.sysop.deleteRedirectsMain,
					new Morebits.status('رجوع مکرر حذف کیا جا رہا ہے'));
				wikipedia_api.params = params;
				wikipedia_api.post();
			}

			// promote Unlink tool
			var $link, $bigtext;
			if (mw.config.get('wgNamespaceNumber') === 6 && params.normalized !== 'ف8') {
				$link = $('<a/>', {
					href: '#',
					text: 'بے ربطی کا آلہ استعمال کرنے کے لیے یہاں کلک کریں',
					css: { fontSize: '130%', fontWeight: 'bold' },
					click: function() {
						Morebits.wiki.actionCompleted.redirect = null;
						Twinkle.speedy.dialog.close();
						Twinkle.unlink.callback('حذف شدہ فائل ' + Morebits.pageNameNorm + ' کے روابط اور/یا اس کے استعمال کو ختم کیا جا رہا ہے');
					}
				});
				$bigtext = $('<span/>', {
					text: 'روابط کو غیر مربوط کرنے اور فائل کے استعمال کے نمونوں کو ہٹانے کے لیے',
					css: { fontSize: '130%', fontWeight: 'bold' }
				});
				Morebits.status.info($bigtext[0], $link[0]);
			} else if (params.normalized !== 'ف8') {
				$link = $('<a/>', {
					href: '#',
					text: 'بے ربطی کا آلہ استعمال کرنے کے لیے یہاں کلک کریں',
					css: { fontSize: '130%', fontWeight: 'bold' },
					click: function() {
						Morebits.wiki.actionCompleted.redirect = null;
						Twinkle.speedy.dialog.close();
						Twinkle.unlink.callback('حذف شدہ صفحہ ' + Morebits.pageNameNorm + ' کے روابط ہٹائے جا رہے ہیں');
					}
				});
				$bigtext = $('<span/>', {
					text: 'روابط کو غیر مربوط کرنے کے لیے',
					css: { fontSize: '130%', fontWeight: 'bold' }
				});
				Morebits.status.info($bigtext[0], $link[0]);
			}
		},
		deleteRedirectsMain: function(apiobj) {
			var response = apiobj.getResponse();
			var snapshot = response.query.pages[0].redirects || [];
			var total = snapshot.length;
			var statusIndicator = apiobj.statelem;

			if (!total) {
				statusIndicator.status('رجوع مکرر نہیں مل سکا');
				return;
			}

			statusIndicator.status('0%');

			var current = 0;
			var onsuccess = function(apiobjInner) {
				var now = mw.language.convertNumber(parseInt(100 * ++current / total, 10)) + '٪';
				statusIndicator.update(now);
				apiobjInner.statelem.unlink();
				if (current >= total) {
					statusIndicator.info(now + ' (مکمل)');
					Morebits.wiki.removeCheckpoint();
				}
			};

			Morebits.wiki.addCheckpoint();

			snapshot.forEach(function(value) {
				var title = value.title;
				var page = new Morebits.wiki.page(title, 'رجوع مکرر «' + title + '» حذف کیا جا رہا ہے');
				page.setEditSummary('[[وپ:فحذ#ع8|ع8]]: غیر موجود صفحہ کا رجوع مکرر «' + Morebits.pageNameNorm + '»');
				page.setChangeTags(Twinkle.changeTags);
				page.deletePage(onsuccess);
			});
		}
	},

	user: {
		main: function(pageobj) {
			var statelem = pageobj.getStatusElement();

			if (!pageobj.exists()) {
				statelem.error("معلوم ہوتا ہے کہ یہ صفحہ موجود نہیں، شاید پہلے ہی حذف کیا جا چکا ہو");
				return;
			}

			var params = pageobj.getCallbackParameters();

			// given the params, builds the template and also adds the user talk page parameters to the params that were passed in
			// returns => [<string> wikitext, <object> utparams]
			var buildData = Twinkle.speedy.callbacks.getTemplateCodeAndParams(params),
				code = buildData[0];
			params.utparams = buildData[1];

			// Set the correct value for |ts= parameter in {{db-g13}}
			if (params.normalizeds.indexOf('ع13') !== -1) {
				code = code.replace('$TIMESTAMP', pageobj.getLastEditTime());
			}

			// Tag if possible, post on talk if not
			if (pageobj.canEdit() && ['wikitext', 'Scribunto', 'javascript', 'css', 'sanitized-css'].indexOf(pageobj.getContentModel()) !== -1) {
				var text = pageobj.getPageText();

				statelem.status('صفحہ پر موجود ٹیگوں کو جانچا جا رہا ہے ۔۔۔');

				// check for existing deletion tags
			    var tag = /(?:\{\{\s*(حش-.*?|db|delete|db-.*?|فوری حذف|speedy deletion-.*?|فوری حذف-.*?)(?:\s*\||\s*\}\}))/.exec( text );
				// This won't make use of the db-multiple template but it probably should
				if (tag && !confirm('فوری حذف کا سانچہ {{' + tag[1] + '}} صفحہ میں پہلے سے چسپاں ہے۔  کیا آپ حذف کا دوسرا ٹیگ بھی چسپاں کرنا چاہتے ہیں؟')) {
					return;
				}
				var xfd = /\{\{((?:article for deletion|مجوزہ حذف|proposed deletion|مجوزہ حذف شدگی|حذف زماندار|prod blp|template for discussion)\/مجوزہ|[cfm]fd\b)/i.exec(text) || /#invoke:(RfD)/.exec(text);
				if (xfd && !confirm('حذف کا ٹیگ {{' + xfd[1] + '}} صفحہ میں موجود ہے۔ کیا آپ حذف کا دوسرا ٹیگ بھی چسپاں کرنا چاہتے ہیں؟')) {
					return;
				}

				// curate/patrol the page
				if (Twinkle.getPref('markSpeedyPagesAsPatrolled')) {
					pageobj.triage();
				}

				// Wrap SD template in noinclude tags if we are in template space.
				// Won't work with userboxes in userspace, or any other transcluded page outside template space
				if (mw.config.get('wgNamespaceNumber') === 10) {  // Template:
					code = '<noinclude>' + code + '</noinclude>';
				}

				// Remove tags that become superfluous with this action
				text = text.replace(/\{\{\s*([Uu]serspace draft|مسودہ صارف)\s*(\|(?:\{\{[^{}]*\}\}|[^{}])*)?\}\}\s*/g, '');
				if (mw.config.get('wgNamespaceNumber') === 6) {
					// remove "move to Commons" tag - deletion-tagged files cannot be moved to Commons
					text = text.replace(/\{\{نامزد ?(mtc|(copy |move |انتقال به |)?to ?(commons|ذخائر|ویکی ذخائر)|move to wikimedia commons|copy to wikimedia commons|کامنز میں منتقلی|ذخائر میں منتقلی)[^}]*\}\}/gi, '');
				}

				if (params.requestsalt) {
					if (params.normalizeds.indexOf('ع10') === -1) {
						code += '\n{{نمک پاشی}}';
					} else {
						code = '{{نمک پاشی}}\n' + code;
					}
				}

				if (mw.config.get('wgPageContentModel') === 'Scribunto') {
					// Scribunto isn't parsed like wikitext, so CSD templates on modules need special handling to work
					var equals = '';
					while (code.indexOf(']' + equals + ']') !== -1) {
						equals += '=';
					}
					code = "require('Module:Module wikitext')._addText([" + equals + '[' + code + ']' + equals + ']);';
				} else if (['javascript', 'css', 'sanitized-css'].indexOf(mw.config.get('wgPageContentModel')) !== -1) {
					// Likewise for JS/CSS pages
					code = '/* ' + code + ' */';
				}

				// Generate edit summary for edit
				var editsummary;
				if (params.normalizeds.length > 1) {
					editsummary = 'فوری حذف شدگی کی درخواست (';
					$.each(params.normalizeds, function(index, norm) {
						editsummary += '[[وپ:فحذ#' + norm.toUpperCase() + '|فحذ ' + norm.toUpperCase() + ']]، ';
					});
					editsummary = editsummary.substr(0, editsummary.length - 2); // remove trailing comma
					editsummary += ')۔';
				} else if (params.normalizeds[0] === 'فوری حذف') {
					editsummary = '[[وپ:فحذ|فوری حذف شدگی کی درخواست]] بوجہ «' + params.templateParams[0]['1'] + '»۔';
				} else {
					editsummary = 'فوری حذف شدگی کی درخواست ([[وپ:فحذ#' + params.normalizeds[0].toUpperCase() + '|فحذ ' + params.normalizeds[0].toUpperCase() + ']])۔';
				}

				// Blank attack pages
				if (params.normalizeds.indexOf('ع10') !== -1) {
					text = code;
				} else {
					// Insert tag after short description or any hatnotes
					var wikipage = new Morebits.wikitext.page(text);
					text = wikipage.insertAfterTemplates(code + '\n', Twinkle.hatnoteRegex).getText();
				}


				pageobj.setPageText(text);
				pageobj.setEditSummary(editsummary);
				pageobj.setWatchlist(params.watch);
				pageobj.save(Twinkle.speedy.callbacks.user.tagComplete);
			} else { // Attempt to place on talk page
				var talkName = new mw.Title(pageobj.getPageName()).getTalkPage().toText();
				if (talkName !== pageobj.getPageName()) {
					if (params.requestsalt) {
						code += '\n{{نمک پاشی}}';
					}

					pageobj.getStatusElement().warn('صفحہ میں تبدیلی نہیں ہو سکی، لہذا تبادلۂ خیال صفحہ پر ٹیگ چسپاں کیا جا رہا ہے');

					var talk_page = new Morebits.wiki.page(talkName, 'تبادلۂ خیال صفحہ پر متعلقہ ٹیگ خودکارانہ چسپاں کیا جا رہا ہے');
					talk_page.setNewSectionTitle(pageobj.getPageName() + ' فوری حذف شدگی کے لیے نامزد کیا گیا ہے');
					talk_page.setNewSectionText(code + '\n\nمیں صفحہ ' + pageobj.getPageName() + ' میں ٹیگ چپساں نہیں کر پا رہا ہوں۔ براہ کرم اسے حذف کر دیجیے۔ ~~~~');
					talk_page.setCreateOption('recreate');
					talk_page.setFollowRedirect(true);
					talk_page.setWatchlist(params.watch);
					talk_page.setChangeTags(Twinkle.changeTags);
					talk_page.setCallbackParameters(params);
					talk_page.newSection(Twinkle.speedy.callbacks.user.tagComplete);
				} else {
					pageobj.getStatusElement().error('صفحہ محفوظ ہے اور ترمیم کی درخواست کے لیے جگہ نہیں ہے، لہذا کارروائی منسوخ کی جا رہی ہے');
				}
			}
		},

		tagComplete: function(pageobj) {
			var params = pageobj.getCallbackParameters();

			// Notification to first contributor, will also log nomination to the user's userspace log
			if (params.usertalk) {
				var thispage = new Morebits.wiki.page(Morebits.pageNameNorm);
				thispage.setCallbackParameters(params);
				thispage.lookupCreation(Twinkle.speedy.callbacks.noteToCreator);
			// or, if not notifying, add this nomination to the user's userspace log without the initial contributor's name
			} else if (params.lognomination) {
				Twinkle.speedy.callbacks.user.addToLog(params, null);
			}
		},

		addToLog: function(params, initialContrib) {
			var usl = new Morebits.userspaceLogger(Twinkle.getPref('speedyLogPageName'));
			
			usl.initialText =
				"یہ [[وپ:فحذ|فوری حذف شدگی]] کی ان تمام نامزدگیوں کا نوشتہ ہے جو اس صارف نے [[وپ:پلک|پلک]] کے فوری حذف شدگی ماڈیول کے ذریعہ کیے ہیں۔\n\n" +
				'اگر آپ اس نوشتہ کو باقی نہیں رکھنا چاہتے ہیں تو اسے [[وپ:پلک/ترجیحات|پلک کی ترجیحات]] سے غیر فعال کر دیں، اور  ' +
				'اس صفحہ کو [[وپ:فحذ#ص1|فحذ ص1]] کے تحت فوری حذف شدگی کے لیے نامزد کریں۔' +
				((Morebits.userIsSysop || Morebits.userIsEliminator) ? '\n\nایہ نوشتہ پلک کی مدد سے کی جانے والی فوری حذف شدگیوں کا تعاقب نہیں کرے گا۔' : '');

			var formatParamLog = function(normalize, csdparam, input) {
				if ((normalize === 'ع4' && csdparam === 'xfd') ||
					(normalize === 'ع6' && csdparam === 'page') ||
					(normalize === 'ع6' && csdparam === 'fullvotepage') ||
					(normalize === 'ع6' && csdparam === 'sourcepage') ||
					(normalize === 'م2' && csdparam === 'source') ||
					(normalize === 'م10' && csdparam === 'article') ||
					(normalize === 'ف1' && csdparam === 'filename')) {
					input = '[[:' + input + ']]';
				} else if (normalize === 'ع5' && csdparam === 'user') {
					input = '[[:صارف:' + input + ']]';
				} else if (normalize === 'ع12' && csdparam.lastIndexOf('url', 0) === 0 && input.lastIndexOf('http', 0) === 0) {
					input = '[' + input + ' ' + input + ']';
				} else if (normalize === 'ف8' && csdparam === 'filename') {
					input = '[[commons:' + input + '|' + input + ']] (ذخائر)';
				} else if (normalize === 'ف1' && csdparam === 'criterion') {
					input = '[[وپ:فحذ#' + input + ']]';
				}
				return ' {' + Twinkle.speedy.localKeys.csdparam + ' ' + normalize + ': ' + input + '}'; // Twinkle.speedy.localKeys added to localize csdparam
			};

			var extraInfo = '';

			// If a logged file is deleted but exists on commons, the wikilink will be blue, so provide a link to the log
			var fileLogLink = mw.config.get('wgNamespaceNumber') === 6 ? ' ([{{fullurl:خاص:نوشتہ|page=' + mw.util.wikiUrlencode(mw.config.get('wgPageName')) + '}} سیاهه])' : '';

			var editsummary = 'فوری حذف شدگی کی نامزدگی کا نوشتہ میں اندراج';
			var appendText = '# [[:' + Morebits.pageNameNorm;

			if (params.normalizeds.indexOf('ع10') === -1) {  // no article name in log for G10 taggings
				appendText += ']]' + fileLogLink + ': ';
				editsummary += ' [[:' + Morebits.pageNameNorm + ']] کا حملہ صفحہ۔';
			} else {
				appendText += '|یہ]] حملہ صفحہ' + fileLogLink + ': ';
				editsummary += ' کا حملہ صفحہ ہے۔';
			}
			if (params.normalizeds.length > 1) {
				appendText += 'متعدد معیار (';
				$.each(params.normalizeds, function(index, norm) {
					appendText += '[[وپ:فحذ#' + norm.toUpperCase() + '|' + norm.toUpperCase() + ']]، ';
				});
				appendText = appendText.substr(0, appendText.length - 2);  // remove trailing comma
				appendText += ')';
			} else if (params.normalizeds[0] === 'فوری حذف') {
				appendText += '{{tl|db-reason}}';
			} else {
				appendText += '[[وپ:فحذ#' + params.normalizeds[0].toUpperCase() + '|فحذ ' + params.normalizeds[0].toUpperCase() + ']] ({{tl|db-' + Twinkle.speedy.localKeys[params.values[0]] + '}})';
			}

			// If params is "empty" it will still be full of empty arrays, but ask anyway
			if (params.templateParams) {
				// Treat custom rationale individually
				if (params.normalizeds[0] && params.normalizeds[0] === 'فوری حذف') {
					extraInfo += formatParamLog('شخصی', 'وجہ', params.templateParams[0]['1']);
				} else {
					params.templateParams.forEach(function(item, index) {
						var keys = Object.keys(item);
						if (keys[0] !== undefined && keys[0].length > 0) {
							// Second loop required since some items (G12, F9) may have multiple keys
							keys.forEach(function(key, keyIndex) {
								if (keys[keyIndex] === 'blanked' || keys[keyIndex] === 'ts') {
									return true; // Not worth logging
								}
								extraInfo += formatParamLog(params.normalizeds[index].toUpperCase(), Twinkle.speedy.localKeys[keys[keyIndex]] ? Twinkle.speedy.localKeys[keys[keyIndex]] : keys[keyIndex], item[key]);
							});
						}
					});
				}
			}

			if (params.requestsalt) {
				appendText += '؛ تخلیق محفوظ کی درخواست بھی کی گئی ([[وپ:نمک|نمک پاشی]])';
			}
			if (extraInfo) {
				appendText += '؛ مزید تفصیلات:' + extraInfo;
			}
			if (initialContrib) {
				appendText += ' {{userv|1=' + initialContrib + '}} کو اطلاع دے دی گئی';
			}
			appendText += ' — ~~~~~\n';

			usl.changeTags = Twinkle.changeTags;
			usl.log(appendText, editsummary);
		}
	}
};

// validate subgroups in the form passed into the speedy deletion tag
Twinkle.speedy.getParameters = function twinklespeedyGetParameters(form, values) {
	var parameters = [];

	$.each(values, function(index, value) {
		var currentParams = [];
		switch (value) {
			case 'reason':
				if (form['csd.reason_1']) {
					var dbrationale = form['csd.reason_1'].value;
					if (!dbrationale || !dbrationale.trim()) {
						alert('شخصی وجہ: براہ کرم اس کی وجہ درج کریں۔');
						parameters = null;
						return false;
					}
					currentParams['1'] = dbrationale;
				}
				break;

			case 'userreq':  // U1
				if (form['csd.userreq_rationale']) {
					var u1rationale = form['csd.userreq_rationale'].value;
					if (mw.config.get('wgNamespaceNumber') === 3 && !(/\//).test(mw.config.get('wgTitle')) &&
							(!u1rationale || !u1rationale.trim())) {
						alert('فحذ ص1: براہ کرم تبادلۂ خیال صفحات کو نامزد کرتے وقت وجہ ضرور درج کریں۔');
						parameters = null;
						return false;
					}
					currentParams.rationale = u1rationale;
				}
				break;

			case 'repost':  // G4
				if (form['csd.repost_xfd']) {
					var deldisc = form['csd.repost_xfd'].value;
					if (deldisc) {
						if (!new RegExp('^:?' + Morebits.namespaceRegex(4) + ':', 'i').test(deldisc)) {
							alert('فحذ ع4: حذف شدگی کی گفتگو کے صفحہ کا نام اگر درج کریں تو لازماً «ویکیپیڈیا:» سے شروع کریں۔');
							parameters = null;
							return false;
						}
						currentParams.xfd = deldisc;
					}
				}
				break;

			case 'banned':  // G5
				if (form['csd.banned_user'] && form['csd.banned_user'].value) {
					currentParams.user = form['csd.banned_user'].value.replace(/^\s*صارف:/i, '');
				}
				break;

			case 'move':  // G6
				if (form['csd.move_page'] && form['csd.move_reason']) {
					var movepage = form['csd.move_page'].value,
						movereason = form['csd.move_reason'].value;
					if (!movepage || !movepage.trim()) {
						alert('فحذ ع6 (منتقلی صفحہ): براہ کرم منتقل کیے جانے والے صفحہ کا عنوان یہاں درج کریں۔');
						parameters = null;
						return false;
					}
					if (!movereason || !movereason.trim()) {
						alert('فحذ ع6 (منتقلی صفحہ): براہ کرم منتقل کرنے کی وجہ درج کریں۔');
						parameters = null;
						return false;
					}
					currentParams.page = movepage;
					currentParams.reason = movereason;
				}
				break;

			case 'xfd':  // G6
				if (form['csd.xfd_fullvotepage']) {
					var xfd = form['csd.xfd_fullvotepage'].value;
					if (xfd) {
						if (!new RegExp('^:?' + Morebits.namespaceRegex(4) + ':', 'i').test(xfd)) {
							alert('فحذ ع6 (نبح): حذف شدگی کی گفتگو کے صفحہ کا نام اگر درج کریں تو لازماً «ویکیپیڈیا:» سے شروع کریں۔');
							parameters = null;
							return false;
						}
						currentParams.fullvotepage = xfd;
					}
				}
				break;

			case 'copypaste':  // G6
				if (form['csd.copypaste_sourcepage']) {
					var copypaste = form['csd.copypaste_sourcepage'].value;
					if (!copypaste || !copypaste.trim()) {
						alert('فحذ ع6 (نقل چسپاں): براہ کرم ماخذی صفحہ کا عنوان درج کریں۔');
						parameters = null;
						return false;
					}
					currentParams.sourcepage = copypaste;
				}
				break;

			case 'g6':  // G6
				if (form['csd.g6_rationale'] && form['csd.g6_rationale'].value) {
					currentParams.rationale = form['csd.g6_rationale'].value;
				}
				break;

			case 'author':  // G7
				if (form['csd.author_rationale'] && form['csd.author_rationale'].value) {
					currentParams.rationale = form['csd.author_rationale'].value;
				}
				break;

			case 'g8':  // G8
				if (form['csd.g8_rationale'] && form['csd.g8_rationale'].value) {
					currentParams.rationale = form['csd.g8_rationale'].value;
				}
				break;

			case 'templatecat':  // G8
				if (form['csd.templatecat_rationale'] && form['csd.templatecat_rationale'].value) {
					currentParams.rationale = form['csd.templatecat_rationale'].value;
				}
				break;

			case 'attack':  // G10
				currentParams.blanked = 'yes';
				// it is actually blanked elsewhere in code, but setting the flag here
				break;

			case 'copyvio':  // G12
				if (form['csd.copyvio_url'] && form['csd.copyvio_url'].value) {
					currentParams.url = form['csd.copyvio_url'].value;
				}
				if (form['csd.copyvio_url2'] && form['csd.copyvio_url2'].value) {
					currentParams.url2 = form['csd.copyvio_url2'].value;
				}
				if (form['csd.copyvio_url3'] && form['csd.copyvio_url3'].value) {
					currentParams.url3 = form['csd.copyvio_url3'].value;
				}
				break;

			case 'afc':  // G13
				currentParams.ts = '$TIMESTAMP'; // to be replaced by the last revision timestamp when page is saved
				break;

			case 'redundantimage':  // F1
				if (form['csd.redundantimage_filename']) {
					var redimage = form['csd.redundantimage_filename'].value;
					if (!redimage || !redimage.trim()) {
						alert('فحذ ف1: براہ کرم دوسری فائل کا نام درج کریں۔');
						parameters = null;
						return false;
					}
					currentParams.filename = new RegExp('^\\s*' + Morebits.namespaceRegex(6) + ':', 'i').test(redimage) ? redimage : 'فائل:' + redimage;
				}
				break;

			case 'badfairuse':  // F7
				if (form['csd.badfairuse_rationale'] && form['csd.badfairuse_rationale'].value) {
					currentParams.rationale = form['csd.badfairuse_rationale'].value;
				}
				break;

			case 'commons':  // F8
				if (form['csd.commons_filename']) {
					var filename = form['csd.commons_filename'].value;
					if (filename && filename.trim() && filename !== Morebits.pageNameNorm) {
						currentParams.filename = new RegExp('^\\s*' + Morebits.namespaceRegex(6) + ':', 'i').test(filename) ? filename : 'فائل:' + filename;
					}
				}
				break;

			case 'imgcopyvio':  // F9
				if (form['csd.imgcopyvio_url'] && form['csd.imgcopyvio_rationale']) {
					var f9url = form['csd.imgcopyvio_url'].value;
					var f9rationale = form['csd.imgcopyvio_rationale'].value;
					if ((!f9url || !f9url.trim()) && (!f9rationale || !f9rationale.trim())) {
						alert('فحذ ف9: ف9 کے تحت فائل کو نامزد کرتے وقت مکمل ربط یا وجہ (یا دونوں) لازماً درج کریں۔');
						parameters = null;
						return false;
					}
					if (form['csd.imgcopyvio_url'].value) {
						currentParams.url = f9url;
					}
					if (form['csd.imgcopyvio_rationale'].value) {
						currentParams.rationale = f9rationale;
					}
				}
				break;

			case 'foreign':  // A2
				if (form['csd.foreign_source']) {
					var foreignlink = form['csd.foreign_source'].value;
					if (!foreignlink || !foreignlink.trim()) {
						alert('فحذ م2: براہ کرم اُس مضمون کا بین الویکی ربط درج کریں جس کی یہ نقل ہے۔');
						parameters = null;
						return false;
					}
					currentParams.source = foreignlink;
				}
				break;

			case 'transwiki':  // A5
				if (form['csd.transwiki_location'] && form['csd.transwiki_location'].value) {
					currentParams.location = form['csd.transwiki_location'].value;
				}
				break;

			case 'a10':  // A10
				if (form['csd.a10_article']) {
					var duptitle = form['csd.a10_article'].value;
					if (!duptitle || !duptitle.trim()) {
						alert('فحذ م10:  براہ کرم مکرر مضمون کا عنوان درج کریں۔');
						parameters = null;
						return false;
					}
					currentParams.article = duptitle;
				}
				break;

			case 'p1':  // P1
				if (form['csd.p1_criterion']) {
					var criterion = form['csd.p1_criterion'].value;
					if (!criterion || !criterion.trim()) {
						alert('فحذ ب1: براہ کرم کوئی وجہ یا معیار درج کریں۔');
						parameters = null;
						return false;
					}
					currentParams.criterion = criterion;
				}
				break;

			default:
				break;
		}
		parameters.push(currentParams);
	});
	return parameters;
};

// Function for processing talk page notification template parameters
// key1/value1: for {{db-criterion-[notice|deleted]}} (via {{db-csd-[notice|deleted]-custom}})
// utparams.param: for {{db-[notice|deleted]-multiple}}
Twinkle.speedy.getUserTalkParameters = function twinklespeedyGetUserTalkParameters(normalized, parameters) {
	var utparams = [];

	// Special cases
	if (normalized === 'فوری حذف') {
		utparams['2'] = parameters['1'];
	} else if (normalized === 'ع6') {
		utparams.key1 = 'to';
		utparams.value1 = Morebits.pageNameNorm;
	} else if (normalized === 'ع12') {
		['url', 'url2', 'url3'].forEach(function(item, idx) {
			if (parameters[item]) {
				idx++;
				utparams['key' + idx] = item;
				utparams['value' + idx] = utparams[item] = parameters[item];
			}
		});
	} else {
		// Handle the rest
		var param;
		switch (normalized) {
			case 'ع4':
				param = 'xfd';
				break;
			case 'م2':
				param = 'source';
				break;
			case 'م5':
				param = 'location';
				break;
			case 'م10':
				param = 'article';
				break;
			case 'ف9':
				param = 'url';
				break;
			case 'ب1':
				param = 'criterion';
				break;
			default:
				break;
		}
		// No harm in providing a usertalk template with the others' parameters
		if (param && parameters[param]) {
			utparams.key1 = param;
			utparams.value1 = utparams[param] = parameters[param];
		}
	}
	return utparams;
};

/**
 * @param {Event} e
 * @returns {Array}
 */
Twinkle.speedy.resolveCsdValues = function twinklespeedyResolveCsdValues(e) {
	var values = (e.target.form ? e.target.form : e.target).getChecked('csd');
	if (values.length === 0) {
		alert('براہ کرم کسی ایک معیار کو منتخب کریں!');
		return null;
	}
	return values;
};

Twinkle.speedy.callback.evaluateSysop = function twinklespeedyCallbackEvaluateSysop(e) {
	var form = e.target.form ? e.target.form : e.target;

	if (e.target.type === 'checkbox' || e.target.type === 'text' ||
			e.target.type === 'select') {
		return;
	}

	var tag_only = form.tag_only;
	if (tag_only && tag_only.checked) {
		Twinkle.speedy.callback.evaluateUser(e);
		return;
	}

	var values = Twinkle.speedy.resolveCsdValues(e);
	if (!values) {
		return;
	}
	var templateParams = Twinkle.speedy.getParameters(form, values);
	if (!templateParams) {
		return;
	}

	var normalizeds = values.map(function(value) {
		return Twinkle.speedy.normalizeHash[value];
	});

	// analyse each criterion to determine whether to watch the page, prompt for summary, or notify the creator
	var watchPage, promptForSummary;
	normalizeds.forEach(function(norm) {
		if (Twinkle.getPref('watchSpeedyPages').indexOf(norm) !== -1) {
			watchPage = Twinkle.getPref('watchSpeedyExpiry');
		}
		if (Twinkle.getPref('promptForSpeedyDeletionSummary').indexOf(norm) !== -1) {
			promptForSummary = true;
		}
	});

	var warnusertalk = form.warnusertalk.checked && normalizeds.some(function (norm, index) {
		return Twinkle.getPref('warnUserOnSpeedyDelete').indexOf(norm) !== -1 &&
			!(norm === 'ع6' && values[index] !== 'copypaste');
	});

	var welcomeuser = warnusertalk && normalizeds.some(function (norm) {
		return Twinkle.getPref('welcomeUserOnSpeedyDeletionNotification').indexOf(norm) !== -1;
	});

	var params = {
		values: values,
		normalizeds: normalizeds,
		watch: watchPage,
		deleteTalkPage: form.talkpage && form.talkpage.checked,
		deleteRedirects: form.redirects.checked,
		warnUser: warnusertalk,
		welcomeuser: welcomeuser,
		promptForSummary: promptForSummary,
		templateParams: templateParams
	};

	Morebits.simpleWindow.setButtonsEnabled(false);
	Morebits.status.init(form);

	Twinkle.speedy.callbacks.sysop.main(params);
};

Twinkle.speedy.callback.evaluateUser = function twinklespeedyCallbackEvaluateUser(e) {
	var form = e.target.form ? e.target.form : e.target;

	if (e.target.type === 'checkbox' || e.target.type === 'text' ||
			e.target.type === 'select') {
		return;
	}

	var values = Twinkle.speedy.resolveCsdValues(e);
	if (!values) {
		return;
	}
	var templateParams = Twinkle.speedy.getParameters(form, values);
	if (!templateParams) {
		return;
	}

	// var multiple = form.multiple.checked;

	var normalizeds = values.map(function(value) {
		return Twinkle.speedy.normalizeHash[value];
	});

	// analyse each criterion to determine whether to watch the page/notify the creator
	var watchPage = normalizeds.some(function(csdCriteria) {
		return Twinkle.getPref('watchSpeedyPages').indexOf(csdCriteria) !== -1;
	}) && Twinkle.getPref('watchSpeedyExpiry');

	var notifyuser = form.notify.checked && normalizeds.some(function(norm, index) {
		return Twinkle.getPref('notifyUserOnSpeedyDeletionNomination').indexOf(norm) !== -1 &&
			!(norm === 'ع6' && values[index] !== 'copypaste');
	});
	var welcomeuser = notifyuser && normalizeds.some(function(norm) {
		return Twinkle.getPref('welcomeUserOnSpeedyDeletionNotification').indexOf(norm) !== -1;
	});
	var csdlog = Twinkle.getPref('logSpeedyNominations') && normalizeds.some(function(norm) {
		return Twinkle.getPref('noLogOnSpeedyNomination').indexOf(norm) === -1;
	});

	var params = {
		values: values,
		normalizeds: normalizeds,
		watch: watchPage,
		usertalk: notifyuser,
		welcomeuser: welcomeuser,
		lognomination: csdlog,
		requestsalt: form.salting.checked,
		templateParams: templateParams
	};

	Morebits.simpleWindow.setButtonsEnabled(false);
	Morebits.status.init(form);

	Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');
	Morebits.wiki.actionCompleted.notice = 'ٹیگ کاری مکمل';

	var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'صفحہ میں ٹیگ لگایا جا رہا ہے');
	wikipedia_page.setChangeTags(Twinkle.changeTags); // Here to apply to triage
	wikipedia_page.setCallbackParameters(params);
	wikipedia_page.load(Twinkle.speedy.callbacks.user.main);
};

Twinkle.addInitCallback(Twinkle.speedy, 'speedy');
})(jQuery);


// </nowiki>