MediaWiki:Gadget-twinklespeedy.js

From Wikimedia Incubator

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
//<nowiki>
 
 
(function($){
 
 
/*
 ****************************************
 *** twinklespeedy.js: CSD module
 ****************************************
 * Mode of invocation:     Tab ("فوری حذف")
 * Active on:              Non-special, existing pages
 * Config directives in:   TwinkleConfig
 *
 * 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.userIsInGroup('sysop') ? "وپ:فوری حذف کے مطابق صفحہ حذف کریں" : "وپ:فوری حذف کے مطابق فوری حذف کی درخواست دیں" );
};
 
// This function is run when the CSD tab/header link is clicked
Twinkle.speedy.callback = function twinklespeedyCallback() {
	Twinkle.speedy.initDialog(Morebits.userIsInGroup( 'sysop' ) ? Twinkle.speedy.callback.evaluateSysop : Twinkle.speedy.callback.evaluateUser, true);
};
 
// Used by unlink feature
Twinkle.speedy.dialog = null;
 
// The speedy criteria list can be in one of several modes
Twinkle.speedy.mode = {
	sysopSubmit: 1,  // radio buttons, no subgroups, submit when "درج" button is clicked
	sysopRadioClick: 2,  // radio buttons, no subgroups, submit when a radio button is clicked
	userMultipleSubmit: 3,  // check boxes, subgroups, "درج" button already pressent
	userMultipleRadioClick: 4,  // check boxes, subgroups, need to add a "درج" button
	userSingleSubmit: 5,  // radio buttons, subgroups, submit when "درج" button is clicked
	userSingleRadioClick: 6,  // radio buttons, subgroups, submit when a radio button is clicked
 
	// are we in "delete page" mode?
	// (sysops can access both "delete page" [sysop] and "tag page only" [user] modes)
	isSysop: function twinklespeedyModeIsSysop(mode) {
		return mode === Twinkle.speedy.mode.sysopSubmit ||
			mode === Twinkle.speedy.mode.sysopRadioClick;
	},
	// do we have a "درج" button once the form is created?
	hasSubmitButton: function twinklespeedyModeHasSubmitButton(mode) {
		return mode === Twinkle.speedy.mode.sysopSubmit ||
			mode === Twinkle.speedy.mode.userMultipleSubmit ||
			mode === Twinkle.speedy.mode.userMultipleRadioClick ||
			mode === Twinkle.speedy.mode.userSingleSubmit;
	},
	// is db-multiple the outcome here?
	isMultiple: function twinklespeedyModeIsMultiple(mode) {
		return mode === Twinkle.speedy.mode.userMultipleSubmit ||
			mode === Twinkle.speedy.mode.userMultipleRadioClick;
	},
	// do we want subgroups? (if not we have to use prompt())
	wantSubgroups: function twinklespeedyModeWantSubgroups(mode) {
		return !Twinkle.speedy.mode.isSysop(mode);
	}
};
 
// 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( "رہنمائے پلک", ":en:WP:TW/DOC#speedy" );
 
	var form = new Morebits.quickForm( callbackfunc, (Twinkle.getPref('speedySelectionStyle') === 'radioClick' ? 'change' : null) );
	if( Morebits.userIsInGroup( 'sysop' ) ) {
		form.append( {
				type: 'checkbox',
				list: [
					{
						label: 'صرف ٹیگ چسپاں کریں، حذف نہ کریں',
						value: 'tag_only',
						name: 'tag_only',
						tooltip: 'اگر آپ حذف کرنے کی بجائے محض حذف کا ٹیگ چسپاں کرنا چاہیں',
						checked : Twinkle.getPref('deleteSysopDefaultToTag'),
						event: function( event ) {
							var cForm = event.target.form;
							var cChecked = event.target.checked;
							// enable/disable talk page checkbox
							if (cForm.talkpage) {
								cForm.talkpage.disabled = cChecked;
								cForm.talkpage.checked = !cChecked && Twinkle.getPref('deleteTalkPageOnDelete');
							}
							// enable/disable redirects checkbox
							cForm.redirects.disabled = cChecked;
							cForm.redirects.checked = !cChecked;
 
							// enable/disable notify checkbox
							cForm.notify.disabled = !cChecked;
							cForm.notify.checked = cChecked;
							// enable/disable multiple
							cForm.multiple.disabled = !cChecked;
							cForm.multiple.checked = false;
 
							Twinkle.speedy.callback.modeChanged(cForm);
 
							event.stopPropagation();
						}
					}
				]
			} );
		form.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
			form.append( {
				type: 'checkbox',
				list: [
					{
						label: 'تبادلۂ خیال صفحہ بھی حذف کریں',
						value: 'talkpage',
						name: 'talkpage',
						tooltip: "اس اختار کو فعال کرنے سے تبادلۂ خیال صفحہ بھی حذف ہوگا۔ تاہم اگر آپ نے F8 معیار منتخب کیا ہے (کامنز میں منتقل شدہ) تو اس صورت میں تبادلہ خیال صفحہ حذف *نہیں ہوگا*۔",
						checked: Twinkle.getPref('deleteTalkPageOnDelete'),
						disabled: Twinkle.getPref('deleteSysopDefaultToTag'),
						event: function( event ) {
							event.stopPropagation();
						}
					}
				]
			} );
		}
		form.append( {
				type: 'checkbox',
				list: [
					{
						label: 'تمام رجوع مکررات بھی حذف کریں',
						value: 'redirects',
						name: 'redirects',
						tooltip: "اس اختار کو فعال کرنے سے رجوع مکررات بھی حذف ہو جائیں گے۔",
						checked: Twinkle.getPref('deleteRedirectsOnDelete'),
						disabled: Twinkle.getPref('deleteSysopDefaultToTag'),
						event: function( event ) {
							event.stopPropagation();
						}
					}
				]
			} );
		form.append( { type: 'header', label: 'ٹیگ متعلقہ اختیارات' } );
	}
 
	form.append( {
			type: 'checkbox',
			list: [
				{
					label: 'اگر ممکن ہو تو صفحہ ساز کو مطلع کریں',
					value: 'notify',
					name: 'notify',
					tooltip: "اگر آپ نے پلک کی ترجیحات میں اپنے منتخب کردہ معیار کے لیے اطلاعی سانچہ منتخب کیا ہے " +
						"اور اس خانہ کو فعال کرتے ہیں تو اس صورت میں صفحہ ساز صارف کے تبادلۂ خیال پر اطلاعی سانچہ چسپاں کر دیا جائے گا، نیز ممکن ہے سانچہ خوش آمدید بھی لگایا جائے۔",
					checked: !Morebits.userIsInGroup( 'sysop' ) || Twinkle.getPref('deleteSysopDefaultToTag'),
					disabled: Morebits.userIsInGroup( 'sysop' ) && !Twinkle.getPref('deleteSysopDefaultToTag'),
					event: function( event ) {
						event.stopPropagation();
					}
				}
			]
		} );
	form.append( {
			type: 'checkbox',
			list: [
				{
					label: 'متعدد معیارات کے ٹیگ چسپاں کریں',
					value: 'multiple',
					name: 'multiple',
					tooltip: "اگر اسے منتخب کیا جائے تو تو آپ اس صفحہ کے لیے متعدد موزوں معیارات منتخب کر سکتے ہیں، مثلاً، ع11 اور A7 کے مشترکہ معیار مضامین کے لیے رائج ہیں۔",
					disabled: Morebits.userIsInGroup( 'sysop' ) && !Twinkle.getPref('deleteSysopDefaultToTag'),
					event: function( event ) {
						Twinkle.speedy.callback.modeChanged( event.target.form );
						event.stopPropagation();
					}
				}
			]
		} );
 
	form.append( {
			type: 'div',
			name: 'work_area',
			label: 'فوری حذف شدگی کا ماڈیول شروع نہیں ہو سکا۔ براہ کرم دوبارہ کوشش کریں یا پلک کے ترقی دہندگان کو مطلع کریں۔'
		} );
 
	if( Twinkle.getPref( 'speedySelectionStyle' ) !== 'radioClick' ) {
		form.append( { type: 'submit' } );
	}
 
	var result = form.render();
	dialog.setContent( result );
	dialog.display();
 
	Twinkle.speedy.callback.modeChanged( result );
};
 
Twinkle.speedy.callback.modeChanged = function twinklespeedyCallbackModeChanged(form) {
	var namespace = mw.config.get('wgNamespaceNumber');
 
	// first figure out what mode we're in
	var mode = Twinkle.speedy.mode.userSingleSubmit;
	if (form.tag_only && !form.tag_only.checked) {
		mode = Twinkle.speedy.mode.sysopSubmit;
	} else {
		if (form.multiple.checked) {
			mode = Twinkle.speedy.mode.userMultipleSubmit;
		} else {
			mode = Twinkle.speedy.mode.userSingleSubmit;
		}
	}
	if (Twinkle.getPref('speedySelectionStyle') === 'radioClick') {
		mode++;
	}
 
	var work_area = new Morebits.quickForm.element( {
			type: 'div',
			name: 'work_area'
		} );
 
	if (mode === Twinkle.speedy.mode.userMultipleRadioClick) {
		work_area.append( {
				type: 'div',
				label: 'جب معیارات کا انتخاب مکمل ہو جائے تو کلک کریں:'
			} );
		work_area.append( {
				type: 'button',
				name: 'submit-multiple',
				label: 'درخواست درج کریں',
				event: function( event ) {
					Twinkle.speedy.callback.evaluateUser( event );
					event.stopPropagation();
				}
			} );
	}
 
	var radioOrCheckbox = (Twinkle.speedy.mode.isMultiple(mode) ? 'checkbox' : 'radio');
 
	if (namespace % 2 === 1 && namespace !== 3) {
		// show db-talk on talk pages, but not user talk pages
		work_area.append( { type: 'header', label: 'تبادلۂ خیال صفحات' } );
		work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.talkList, mode) } );
	}
 
	switch (namespace) {
		case 0:  // article
		case 1:  // talk
			work_area.append( { type: 'header', label: 'مضامین' } );
			work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.articleList, mode) } );
			break;
 
		case 2:  // user
		case 3:  // user talk
			work_area.append( { type: 'header', label: 'صارف صفحات' } );
			work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.userList, mode) } );
			break;
 
		case 6:  // file
		case 7:  // file talk
			work_area.append( { type: 'header', label: 'تصویریں' } );
			work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.fileList, mode) } );
			if (!Twinkle.speedy.mode.isSysop(mode)) {
				work_area.append( { type: 'div', label: 'فوری حذف شدگی کے معیارات F4 (بدون اجازت نامہ)، F5 (یتیم منصفانہ استعمال)، F6 (منطقی منصفانہ استعمال نہیں) اور F11 (بلا اجازت) کے ٹیگ چسپاں کرنے کے لیے پلک کا «حذف تصویر» ٹیب استعمال کریں۔' } );
			}
			break;
 
		case 10:  // template
		case 11:  // template talk
			work_area.append( { type: 'header', label: 'سانچہ جات' } );
			work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.templateList, mode) } );
			break;
 
		case 14:  // category
		case 15:  // category talk
			work_area.append( { type: 'header', label: 'زمرہ جات' } );
			work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.categoryList, mode) } );
			break;
 
		case 100:  // portal
		case 101:  // portal talk
			work_area.append( { type: 'header', label: 'ابواب' } );
			work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.portalList, mode) } );
			break;
 
		default:
			break;
	}
 
	work_area.append( { type: 'header', label: 'عمومی معیارات' } );
	work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.generalList, mode) });
 
	work_area.append( { type: 'header', label: 'رجوع مکررات' } );
	work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.redirectList, mode) } );
 
	var old_area = Morebits.quickForm.getElements(form, "work_area")[0];
	form.replaceChild(work_area.render(), old_area);
};
 
Twinkle.speedy.generateCsdList = function twinklespeedyGenerateCsdList(list, mode) {
	// mode switches
	var isSysop = Twinkle.speedy.mode.isSysop(mode);
	var multiple = Twinkle.speedy.mode.isMultiple(mode);
	var wantSubgroups = Twinkle.speedy.mode.wantSubgroups(mode);
	var hasSubmitButton = Twinkle.speedy.mode.hasSubmitButton(mode);
 
	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) {
		Twinkle.speedy.callback.evaluateUser(e);
		e.stopPropagation();
	};
 
	return $.map(list, function(critElement) {
		var criterion = $.extend({}, critElement);
 
		if (!wantSubgroups) {
			criterion.subgroup = null;
		}
 
		if (multiple) {
			if (criterion.hideWhenMultiple) {
				return null;
			}
			if (criterion.hideSubgroupWhenMultiple) {
				criterion.subgroup = null;
			}
		} else {
			if (criterion.hideWhenSingle) {
				return null;
			}
			if (criterion.hideSubgroupWhenSingle) {
				criterion.subgroup = null;
			}
		}
 
		if (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 (criterion.subgroup && !hasSubmitButton) {
			if ($.isArray(criterion.subgroup)) {
				criterion.subgroup.push({ 
					type: 'button',
					name: 'submit',
					label: 'درخواست درج کریں',
					event: submitSubgroupHandler
				});
			} else {
				criterion.subgroup = [
					criterion.subgroup,
					{
						type: 'button',
						name: 'submit',  // ends up being called "csd.submit" so this is OK
						label: 'درخواست درج کریں',
						event: submitSubgroupHandler
					}
				];
			}
			criterion.event = openSubgroupHandler;
		}
 
		return criterion;
	});
};
 
Twinkle.speedy.talkList = [
	{
		label: 'ع8: یتیم تبادلۂ خیال صفحات',
		value: 'talk',
		tooltip: 'اس انتخاب کو فعال کرنے کے بعد ایسے تمام صفحات علاحدہ کر دیے جائیں گے جو منصوبہ کے لیے مفید ہوں - خصوصاً صارف تبادلۂ خیال صفحات، تبادلۂ خیال صفحات کے وثائق اور ان فائلوں کے تبادلۂ خیال صفحات جو کامنز میں موجود ہیں۔'
	}
];
 
Twinkle.speedy.fileList = [
	{
		label: 'ف1 : اردو ویکیپیڈیا اور کامنز دونوں میں موجود فائل',
		value: 'redundantimage',
		tooltip: 'ایسی فائلیں جن کے زائد نسخے اسی شکل اور یکساں یا کچھ کم معیار کے ویکیپیڈیا میں موجود ہوں۔ یہ معیار اجازت ناموں کی وجہ سے ویکیمیڈیا کامنز میں موجود دوہری فائلوں پر منطبق نہیں ہوتا، چنانچہ ان پر {{subst:ncd|Image:newname.ext}} or {{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: 'unfree',
		tooltip: 'ایسی فائلیں جو کسی آزاد اجازت نامے یا دائرہ عام میں نہ ہوں اور نہ کسی مضمون میں مستعمل ہوں نیز ان پر چسپاں سانچہ کی بنا پر «زمرہ:یتیم منصفانہ استعمال والی تصویریں» کے کسی ذیلی زمرے میں ایک ہفتے سے زائد عرصہ سے موجود ہو۔ البتہ ان فائلوں کو باقی رکھا جا سکتا ہے جو جلد ہی کسی مضمون میں استعمال ہونے والی ہوں۔ مستقبل میں حذف ہونے والی فائلوں پر ٹیگ چسپاں کرنے کے لیے پلک کے "حذف تصویر" اختیار میں "یتیم منصفانہ استعمال" کو استعمال کریں۔',
		hideWhenUser: true
	},
	{
		label: 'ف6: منصفانہ استعمال کی وضاحت غیر موجود',
		value: 'norat',
		tooltip: 'منصفانہ استعمال کے بغیر اپلوڈ کی جانے والی فائلیں ایک ہفتے بعد حذف ہو سکتی ہیں۔ 4 مئی 2006ء سے قبل اپلوڈ کردہ فائلوں کو فوراً حذف نہ کریں، بلکہ اپلوڈ کنندہ کو مطلع کیا جائے کہ فلاں فائل میں منصفانہ استعمال کی وضاحت درکار ہے۔ 4 مئی 2006ء کے بعد اپلوڈ کی جانے والی فائلوں پر پلک کے "حذف تصویر" ماڈیول میں موجود «منصفانہ استعمال کی وضاحت غیر موجود» اختیار کی مدد سے ٹیگ چسپاں کیا جا سکتا ہے۔ ایسی فائلیں زمرہ:تصاویر کے مورخہ ذیلی زمرہ جات میں منصفانہ استعمال کی وضاحت غیر موجود کے ساتھ نظر آئے گی۔',
		hideWhenUser: true
	},
	{
		label: 'ف7: واضح طور پر نادرست منصفانہ استعمال کا ٹیگ',
		value: 'badfairuse',  // same as below
		tooltip: 'یہ ٹیگ محض ان فائلوں کے لیے ہے جن پر واضح طور پر نادرست منصفانہ استعمال کے ٹیگ چسپاں ہوں، مثلاً لوگو پر {{غیر آزاد لوگو}} کا ٹیگ۔ جن صورتوں میں کچھ انتظار کی نوبت آجائے (مثلاً قابل تبدیل تصویریں یا متنازع وضاحتیں وغیرہ) تو آپ پلک کے "حذف تصویر" ماڈیول میں موجود اختیارات کو استعمال کریں۔',
		subgroup: {
			name: 'badfairuse_reason',
			type: 'input',
			label: 'اختیاری وضاحت: ',
			size: 60
		}
	},
	{
		label: 'ف7: منصفانہ استعمال کے تحت ایسی تجارتی تصویروں کا استعمال جو خود ماخذ کی معلومات سے عاری ہوں',
		value: 'badfairuse',  // same as above
		tooltip: 'کسی ایسے تجارتی ماخذ (مثلاً اسوسیئیٹڈ پریس، گیٹی وغیرہ) سے ماخوذ غیر آزاد تصویریں یا میڈیا جہاں موجود فائلیں خود ماخذ کی معلومات سے عاری ہوں، منصفانہ استعمال کے لیے نادرست تصور کی جائے گی نیز "وپ:غیر آزاد مواد کے معیارات" کے تقاضوں کے مطابق نہ ہوگی۔',
		subgroup: {
			name: 'badfairuse_reason',
			type: 'input',
			label: 'اختیاری وضاحت: ',
			size: 60
		},
		hideWhenMultiple: true
	},
	{
		label: 'ف8: ایسی فائلیں جو مساوی یا زیادہ بہتر کیفیت میں ویکی کامنز پر بھی موجود ہوں',
		value: 'nowcommons',
		tooltip: 'بشرطیکہ درج ذیل شرائط پائی جائیں: 1: فائل کے دونوں نسخوں کی شکل یعنی فارمیٹ یکساں ہوں۔ 2: فائل کا اجازت نامہ اور ماخذی حالت کسی بھی شک و شبہ سے پرے ہو، نیز موجود اجازت نامہ بلا کسی شک و شبہ کے کامنز پر قابل قبول ہو۔ 3: فائل کے صفحۂ وضاحت میں درج معلومات کامنز کے صفحۂ وضاحت میں بھی موجود ہوں۔ اس میں اپلوڈ کا مکمل تاریخچہ مع اپلوڈ کنندہ کا مقامی صفحہ صارف کا ربط بھی شامل ہونا چاہیے۔ 4: فائل محفوظ نہ ہو، نیز فائل کے صفحۂ وضاحت پر اسے کامنز میں منتقل کرنے کی درخواست موجود نہ ہو۔ 5: اگر کامنز پر موجود نسخہ کسی مختلف نام سے موجود ہو تو تمام مقامی حوالہ جات کامنز پر مع مقامی نام کے درج کرنا لازمی ہے۔ 6: {{c-uploaded}} فائلوں کے لیے: انہیں جیسے ہی صفحہ اول سے ہٹایا جائے، فوراً حذف کر دیا جائے۔',
		subgroup: {
			name: 'nowcommons_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
		}
	},
	{
		label: 'ف10: بے کار غیر میڈیا فائل',
		value: 'badfiletype',
		tooltip: 'اپلوڈ کردہ ایسی فائلیں جو تصویر ہوں، نہ آواز اور نہ ویڈیو (مثلاً .doc, .pdf, or .xls  فائلیں) اور نہ کسی مضمون میں مستعمل ہوں اور نہ مستقبل میں کسی استعمال کا امکان ہو۔'
	},
	{
		label: 'ف11: اجازت کا ثبوت موجود نہیں',
		value: 'nopermission',
		tooltip: 'اگر اپلوڈ کنندہ نے کسی اجازت نامے کا ذکر کیا اور صاحب کاپی رائٹ/ماخذ کے طور پر کسی تیسرے شخص کا نام درج کیا لیکن ایسی کوئی شہادت یا ثبوت فراہم نہیں کیا کہ وہ تیسرا شخص حقیقت میں اس سے متفق ہے تو اپلوڈ کنندہ کو مطلع کرنے کے ایک ہفتے بعد اس فائل کو حذف کیا جا سکتا ہے۔',
		hideWhenUser: true
	},
	{
		label: 'ع8: متعلقہ غیر موجود فائل کا صفحۂ وضاحت',
		value: 'imagepage',
		tooltip: 'اسے محض اس وقت استعمال کیا جائے جب فائل موجود نہ ہو۔ کامنز پر موجود فائلوں کے مقامی صفحات وضاحت اور خراب فائلوں کے لیے ف2 معیار، ناقابل قبول رجوع مکررات کے لیے ر3 معیار، اور کامنز کے شکستہ روابط کے لیے ع6 معیار استعمال کریں۔'
	}
];
 
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: 'ایسے مضامین جن پر وپ:مضامین برائے حذف میں گفتگو ہو چکی ہے اور یہ نتیجہ نکلا کہ مضمون کے مواد کو کسی دوسری ویکی میں منتقل کر کے ان معلومات کو محفوظ کر لیں اور منتقلی کے بعد حذف کر دیا جائے۔ اسی طرح ایسے مضامین جو محض فرہنگ کے اندراج کے مانند ہوں انہیں بھی ویکی لغت میں منتقل کرنے کے بعد حذف کر دیا جائے۔'
	},
	{
		label: 'م7: غیر معروف شخصیت، حلقہ، کمپنی، ویب مواد، انفرادی جانور یا تقریب',
		value: 'م7',
		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: 'م9',
		tooltip: 'ایسی کسی موسیقی ریکاڑ کے متعلق تحریر کردہ مضمون جس کا موضوع قابل لحاظ نہ ہو اور اس کے فنکاروں پر مضمون سرے سے موجود ہی نہ ہو یا اسے حذف کر دیا گیا ہو۔'
	},
	{
		label: 'م10: حالیہ تحریر کردہ مضمون جو دوسرے مضمون کی نقل ہو',
		value: 'م10',
		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: 'یہ معیار ایسے زمرہ جات کے لیے ہے جن میں سانچوں کے ذریعہ مضامین اور صفحات شامل ہوتے تھے لیکن اب وہ سانچے حذف ہو چکے۔ اس میں وہ زمرے شامل نہیں جو زیر استعمال ہوں۔'
	}
];
 
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: 'ص3: غیر آزاد نگارخانہ',
		value: 'gallery',
		tooltip: 'صارف نام فضا میں موجود ایسے نگارخانے جن میں زیادہ تر "منصفانہ استعمال" یا غیر آزاد فائلیں موجود ہوں۔ غیر آزاد مواد کے تعلق سے ویکیپیڈیا کی حکمت عملی غیر آزاد فائلوں کو اپلوڈ کرنے سے باز رکھتی ہے خواہ وہ صارف نام فضا میں ہوں۔ البتہ آزاد فائلوں، دائرہ عام کا مواد، جی ایف ڈی ایل فائلوں، کریئیٹیو کامنز اور اس جیسے دیگر اجازت ناموں کے تحت شائع کردہ فائلوں کی اجازت ہے لیکن منصفانہ استعمال والی فائلیں قابل قبول نہیں۔'
	},
	{
		label: 'ص5: وپ:ویب ہوسٹ نہیں کی واضح خلاف ورزیاں',
		value: 'notwebhost',
		tooltip: 'صارف نام فضا میں موجود وہ صفحات جن میں ویکیپیڈیا کے اہداف و مقاصد سے غیر متعلق تحریریں، معلومات، گفتگو اور/یا دیگر سرگرمیاں درج ہوں، نیز اس صارف صفحہ کے مالک نے صارف نام فضا سے باہر چند ترمیمیں کی ہوں یا نہ کی ہوں۔ البتہ ان میں معقول مسوادت اور ذاتی معلومات کے طرز پر تحریر کردہ صفحات شامل نہیں۔'
	},
	{
		label: 'ع11: اشتہاری صارف نام کے تحت اشتہاری صفحۂ صارف',
		value: 'spamuser',
		tooltip: 'ایسے صارف نام کے تحت موجود صفحہ صارف جو کسی چیز کی تشہیر کا اشارہ دے۔ خیال رہے کہ کمپنی یا مصنوعات پر صارف نام فضا میں کسی مضمون کی موجودگی اسے قابل حذف نہیں بنا سکتی۔ اگر صارف صفحہ میں فاضل کاری کی گئی ہو لیکن صارف نام ایسا نہ ہو تو اس صورت میں ع11 کا ٹیگ ہی چسپاں کرنا کافی ہوگا۔',
		hideWhenMultiple: true
	}
];
 
Twinkle.speedy.templateList = [
	{
		label: 'س2: وہ سانچہ جو واضح طور پر موجودہ اصول و ضوابط کی غلط تشریح کرے',
		value: 'policy',
		tooltip: 'ان میں «فوری حذف شدگی» کے وہ سانچے بھی شامل ہیں جو فوری حذف شدگی کے مسائل کے لیے بنائے گئے ہوں لیکن فوری حذف شدگی کے معیار نہ ہوں نیز ایسے اظہار لاتعلقی کے سانچے بھی جو مضامین میں استعمال کرنے کے لیے بنائے گئے ہوں۔'
	},
	{
		label: 'س3: دوہرا سانچہ یا سخت کوڈ شدہ نمونہ',
		value: 'duplicatetemplate',
		tooltip: 'وہ سانچے جو کسی دوسرے سانچے کا چربہ ہوں یا انہیں اس انداز میں بنایا گیا ہو کہ ان کے نتائج دیگر سانچوں سے مشابہ ہوں۔',
		subgroup: {
			name: 'duplicatetemplate_2',
			type: 'input',
			label: 'جس سانچہ کاچربہ ہو اس کا نام: ',
			tooltip: '«سانچہ:» سابقہ ضروری نہیں۔'
		},
		hideWhenMultiple: true
	},
	{
		label: 'س3: غیر مفید سانچہ',
		value: 'س3',
		tooltip: 'اس کی مدد سے آپ وجہ درج کر سکتے ہیں۔ متعدد صورتوں میں دوسرے معیارات زیادہ مناسب ہوتے ہیں مثلاً ع1، ع2، ع6 یا ع8۔ لہذا ان صورتوں میں اسے استعمال کیا جا سکتا ہے۔',
		subgroup: {
			name: 't3_rationale',
			type: 'input',
			label: 'وجہ: ',
			tooltip: 'وجہ درج کرنا ضروری ہے۔',
			size: 60
		},
		hideWhenMultiple: true
	}
];
 
Twinkle.speedy.portalList = [
	{
		label: 'ب1: باب اگر مضمون کی شکل میں ہو',
		value: 'ب1',
		tooltip: 'اس صورت میں مضمون کا معیار (م1، م3، م7 یا م10) درج کرنا لازمی ہے۔',
		subgroup: {
			name: 'p1_1',
			type: 'select',
			label: 'مضمون کا موزوں فوری حذف شدگی کا معیار: '
		},
		hideWhenMultiple: true
	},
	{
		label: 'ب2: خالی باب',
		value: 'emptyportal',
		tooltip: 'اس موضوع سے متعلق باب جس پر کوئی غیر نامکمل دیباچہ مضمون نہ ہو نیز کم از کم تین ایسے غیر نامکمل مضامین نہ ہوں جو موضوع پر تفصیلی مواد فراہم کریں، مناسب ہوگا کہ اس باب کے عنوان کے تحت گفتگو کی جائے۔'
	}
];
 
Twinkle.speedy.generalList = [
	{
		label: 'شخصی وجہ' + (Morebits.userIsInGroup('sysop') ? ' (حذف کی ذاتی وجہ)' : ' بذریعہ سانچہ {{فوری حذف}}'),
		value: 'reason',
		tooltip: 'فوری حذف شدگی کے دیگر معیارات میں سے کم از کم ایک معیار اس صفحہ پر منطبق ہونا لازمی ہے، نیز وجہ لکھتے وقت اس معیار کو ضرور درج کریں۔',
		subgroup: {
			name: 'reason_1',
			type: 'input',
			label: 'وجہ: ',
			size: 60
		},
		hideWhenMultiple: true,
		hideSubgroupWhenSysop: true
	},
	{
		label: 'ع1: مہمل اور لغویات سے پر۔ وہ صفحات جو محض غیر متعلق متن یا بے کار اور مہمل نیز بے معنی مواد یا تاریخچہ پر مشتمل ہوں۔',
		value: 'nonsense',
		tooltip: 'اس میں کمزور تحریر، جانبدار مضمون، بیہودہ تبصرے، تخریب کاری، افسانوی مواد، غیر اردو یا نادرست ترجمہ شدہ متن اور غیر معقول نظریات یا افواہیں شامل نہیں۔ الغرض ان پر  ع1 معیار منطبق نہیں ہوگا۔'
	},
	{
		label: 'ع2: تجرباتی صفحہ',
		value: 'test',
		tooltip: 'ترمیم کاری یا ویکیپیڈیا کے دیگر کاموں کو جانچنے کے لیے بنایا گیا صفحہ۔ اس میں صارف نام فضا کے تحت بنایا گیا صفحہ نیز غیر مستعمل یا دوہرے سانچے شامل نہیں(البتہ س3 معیار منطبق ہو سکتا ہے)۔'
	},
	{
		label: 'ع3: نری تخریب کاری',
		value: 'vandalism',
		tooltip: 'مکمل تخریب کاری (اس میں وہ رجوع مکررات بھی شامل ہیں جو منتقلی کی تخریب کاری کے وقت پیچھے رہ جاتے ہیں)۔'
	},
	{
		label: 'ع3: واضح افسانہ طرازی',
		value: 'hoax',
		tooltip: 'تخریب کاری کی حد تک واضح افسانہ طرازی۔',
		hideWhenMultiple: true
	},
	{
		label: 'ع4: وپ:مضامین برائے حذف پر گفتگو کے نتیجے میں حذف شدہ مواد کی باز تخلیق',
		value: 'repost',
		tooltip: 'وپ:مضامین برائے حذف یا حذف کی دیگر کارروائیوں کے نتیجے میں حذف ہونے والے صفحہ کی نقل خواہ کسی بھی عنوان سے ہو۔ اس دفعہ میں وہ مواد شامل نہیں جو صارف صفحہ پر درج کیا گیا ہو یا حذف کی کارروائی کے بغیر حذف کیا گیا ہو، نیز  اگر سابقہ حذف شدگیاں مجوزہ یا فوری تھیں تو فوری حذف شدگی کے دیگر معیار اس وقت بھی منطبق ہونگے۔',
		subgroup: {
			name: 'repost_1',
			type: 'input',
			label: 'حذف کی گفتگو کا ربط: ',
			tooltip: '«ویکیپیڈیا:» سابقہ لازمی ہے۔',
			size: 60
		}
	},
	{
		label: 'ع5: ممنوع یا معطل صارف',
		value: 'banned',
		tooltip: 'وہ صفحات جو معطل یا ممنوع صارفین نے اپنے تعطل یا پابندی کی خلاف ورزی کرتے ہوئے بنائے ہوں اور ان میں دیگر صارفین کی قابل لحاظ ترامیم نہ ہوں۔',
		subgroup: {
			name: 'banned_1',
			type: 'input',
			label: 'معطل صارف کا نام درج کریں (اگر معلوم ہو): ',
			tooltip: 'یہاں "صارف:" سابقہ درج نہ کریں'
		},
		hideSubgroupWhenMultiple: true
	},
	{
		label: 'ع6: ضم تاریخچہ',
		value: 'histmerge',
		tooltip: 'تاریخچوں کو ضم کرنے کے لیے عارضی طور پر حذف',
		subgroup: {
			name: 'histmerge_1',
			type: 'input',
			label: 'ضم کیے جانے والے صفحہ کا عنوان یہاں درج کریں: '
		},
		hideWhenMultiple: true
	},
	{
		label: 'ع6: منتقلی',
		value: 'move',
		tooltip: 'غیر متنازع منتقلی کی راہ ہموار کرنے مثلاً رجوع مکرر کو واپس پھیرنے کے لیے۔',
		subgroup: [
			{
				name: 'move_1',
				type: 'input',
				label: 'منتقل کیے جانے والے صفحہ کا عنوان: '
			},
			{
				name: 'move_2',
				type: 'input',
				label: 'وجہ: ',
				size: 60
			}
		],
		hideWhenMultiple: true
	},
	{
		label: 'ع6: مبح',
		value: 'xfd',
		tooltip: 'کسی منتظم نے حذف کی رائے شماری کو «حذف پر عمل درآمد» کہہ کر بند کر دیا ہے لیکن اس نے متعلقہ مضمون حذف نہیں کیا۔',
		subgroup: {
			name: 'xfd_fullvotepage',
			type: 'input',
			label: 'جس صفحہ پر حذف کی رائے شماری ہوئی ہے اس کا عنوان: ',
			size: 40
		},
		hideWhenMultiple: true
	},
	{
		label: 'ع6: غیر ضروری ضد ابہام صفحہ',
		value: 'disambig',
		tooltip: 'یہ معیار محض ان یتیم ضد ابہام صفحات کے لیے ہے جن میں یہ شرائط موجود ہوں: 1) دو یا دو سے کم ویکیپیڈیا صفحات کی ضد ابہام سازی جن کے عنوان میں "(ضد ابہام)" موجود ہو۔ 2) عنوان سے قطع نظر غیر موجود ویکیپیڈیا صفحات کی ضد ابہام سازی۔',
		hideWhenMultiple: true
	},
	{
		label: 'ع6: غلط ضد ابہام صفحہ کی جانب رجوع مکرر',
		value: 'movedab',
		tooltip: 'یہ محض ان رجوع مکررات کے لیے ہے جس کا عنوان (ضد ابہام) پر ختم ہونے والا ضد ابہام صفحہ ہو اور اصل موضوع موجود نہ ہو۔',
		hideWhenMultiple: true
	},
	{
		label: 'ع6: نقل و چسپاں منتقلی صفحہ',
		value: 'copypaste',
		tooltip: 'یہ محض اس نقل و چسپاں منتقلی کے لیے جسے عارضی طور پر حذف کرنا پڑے تاکہ صاف منتقلی صفحہ کے لیے جگہ بن سکے۔',
		subgroup: {
			name: 'copypaste_1',
			type: 'input',
			label: 'اصل صفحہ کا عنوان جسے یہاں نقل و چسپاں کیا گیا ہے: '
		},
		hideWhenMultiple: true
	},
	{
		label: 'ع6: صفائی نولکھائی',
		value: 'ع6',
		tooltip: 'صفائی نولکھائی کے دیگر غیر متنازع کام',
		subgroup: {
			name: 'g6_rationale',
			type: 'input',
			label: 'وجہ: ',
			size: 60
		}
	},
	{
		label: 'ع7: مصنف نے حذف کرنے کی درخواست کی یا صفحہ کا مواد حذف کرکے اسے خالی کردیا',
		value: 'author',
		tooltip: 'وہ صفحہ جسے حذف کرنے کی درخواست نیک نیتی سے خود اس کا مصنف کرے، بشرطیکہ اس صفحہ کا اصل مواد اسی مصنف نے لکھا ہو۔ اگر مصنف صفحہ کا تمام مواد حذف کر کے اسے خالی کردے تو اسے بھی حذف کی درخواست ہی سمجھا جائے گا۔',
		subgroup: {
			name: 'author_rationale',
			type: 'input',
			label: 'اختیاری وضاحت: ',
			tooltip: 'Perhaps linking to where the author requested this deletion.',
			size: 60
		}
	},
	{
		label: 'ع8: حذف شدہ یا غیر موجود صفحہ سے مربوط صفحات',
		value: 'ع8',
		tooltip: 'مثلاً تبادلۂ خیال کے یتیم صفحات؛ اصل صفحہ کے بغیر ذیلی صفحات؛ متعلقہ فائل کے بغیر فائل کے صفحات؛ نادرست ہدف کی جانب رجوع مکررات مثلاً غیر موجود ہدف، قطار در قطار رجوع مکرر اور غلط عناوین؛ یا حذف شدہ اور مکرر سانچوں سے پُر زمرہ جات۔ اس معیار میں وہ صفحہ شامل نہیں جو منصوبے کے لیے مفید ہو، خصوصاً حذف شدگی کی گفتگو جن کا نوشتہ میں کہیں اندراج نہ ہو، صارف صفحات اور صارف کے تبادلۂ خیال صفحات اور ان کے وثائق، وہ معقول رجوع مکررات جنہیں درست اہداف کی جانب منتقل کیا جا سکے اور ان فائلوں کے صفحات اور تبادلہ خیال صفحات جو ویکیمیڈیا کامنز میں موجود ہوں۔',
		subgroup: {
			name: 'g8_rationale',
			type: 'input',
			label: 'اختیاری وضاحت: ',
			size: 60
		}
	},
	{
		label: 'ع8: اصل صفحہ کے بغیر ذیلی صفحات',
		value: 'subpage',
		tooltip: 'اس معیار میں وہ صفحہ شامل نہیں جو منصوبے کے لیے مفید ہو، خصوصاً حذف شدگی کی گفتگو جن کا نوشتہ میں کہیں اندراج نہ ہو، صارف صفحات اور صارف کے تبادلۂ خیال صفحات اور ان کے وثائق، وہ معقول رجوع مکررات جنہیں درست اہداف کی جانب منتقل کیا جا سکے اور ان فائلوں کے صفحات اور تبادلہ خیال صفحات جو ویکیمیڈیا کامنز میں موجود ہوں۔',
		hideWhenMultiple: true
	},
	{
		label: 'ع10: صفحہ حملہ',
		value: 'attack',
		tooltip: 'Pages that serve no purpose but to disparage their subject or some other entity (e.g., "John Q. Doe is an imbecile"). This includes a biography of a living person that is negative in tone and unsourced, where there is no NPOV version in the history to revert to. Administrators deleting such pages should not quote the content of the page in the deletion summary!'
	},
	{
		label: 'ع۱۰: زندگی‌نامهٔ زندگان کاملاً منفی و بی‌منبع',
		value: 'negublp',
		tooltip: 'زندگی‌نامه یک فرد زنده که کاملا بدون منبع و با لحن منفی نوشته شده‌است. هیچ نسخه بی‌طرفی در تاریخچه مقاله وجود ندارد تا بدان واگردانده شود. ',
		hideWhenMultiple: true
	},
	{
		label: 'ع11 : اشتہاربازی',
		value: 'spam',
		tooltip: 'Pages which exclusively promote a company, product, group, service, or person and which would need to be fundamentally rewritten in order to become encyclopedic. Note that an article about a company or a product which describes its subject from a neutral point of view does not qualify for this criterion; an article that is blatant advertising should have inappropriate content as well'
	},
	{
		label: 'ع12 : کاپی رائٹ کی خلاف ورزی',
		value: 'copyvio',
		tooltip: 'Either: (1) Material was copied from another website that does not have a license compatible with Wikipedia, or is photography from a stock photo seller (such as Getty Images or Corbis) or other commercial content provider; (2) There is no non-infringing content in the page history worth saving; or (3) The infringement was introduced at once by a single person rather than created organically on wiki and then copied by another website such as one of the many Wikipedia mirrors',
		subgroup: [
			{
				name: 'copyvio_url',
				type: 'input',
				label: 'نشانی وب (در صورت وجود): ',
				tooltip: 'اگر نوشته از منبع برخطی برداشته شده‌است، نشانی وب آن را از جمله پروتکل «http://» یا «https://» اینجا قرار دهید. اگر نشانی وب در فهرست سیاه جفنگ قرار دارد، می‌توانید پروتکل را ننویسید.',
				size: 60
			},
			{
				name: 'copyvio_url2',
				type: 'input',
				label: 'یک نشانی وب دیگر: ',
				tooltip: 'اختیاری است.',
				size: 60
			},
			{
				name: 'copyvio_url3',
				type: 'input',
				label: 'یک نشانی وب دیگر: ',
				tooltip: 'اختیاری است.',
				size: 60
			}
		]
	},
	{
		label: 'ع۱۳: درخواست‌های قدیمی و ترک‌شدهٔ ایجاد مقاله',
		value: 'afc',
		tooltip: 'هر درخواست نظرخواهی برای انتقال ارائه‌نشده یا ردشده که بیش از ۶ ماه ویرایش نشده‌است.'
	}
];
 
Twinkle.speedy.redirectList = [
	{
		label: 'ت۲ : تغییرمسیر از فضای‌نام اصلی به هر فضای‌نام دیگری بجز فضاهای نام رده:، الگو:، ویکی‌پدیا:، راهنما: و درگاه:',
		value: 'rediruser',
		tooltip: '(این شامل شبه فضاهای نام میانبر ویکی‌پدیا نمی‌شود). اگر این نتیجهٔ انتقال صفحه بود، یک یا دو روز پیش از حذف تغییرمسیر صبر کنید.'
	},
	{
		label: 'ت۳ : تغییرمسیر دارای اشتباه املایی نامحتمل که به تازگی ساخته شده‌است',
		value: 'redirtypo',
		tooltip: 'اگرچه، تغییرمسیرهایی از غلط‌های املایی رایج یا اسم بی‌مسمی عموماً مفید هستند، زیرا تغییرمسیرهایی به زبان‌های دیگر هستند.'
	},
	{
		label: 'ع۸: تغییرمسیر به اهداف نامعتبر همچون اهداف ناموجود، تغییرمسیرهای حلقه‌ای و عنوان‌های نادرست',
		value: 'redirnone',
		tooltip: 'این هر صفحه‌ای را که برای پروژه مفید باشد، به ویژه بحث‌های حذف که جایی ثبت نشده‌اند، صفحه‌های بحث کاربر یا صفحهٔ کاربری، بایگانی‌های صفحهٔ بحث، تغییرمسیرهای محتمل که می‌توانند به اهداف معتبر تغییر یابند و صفحه‌های پرونده یا صفحه‌های بحث پرونده‌ها که در انبار ویکی‌مدیا وجود دارند مستثنی می‌کند.'
	}
];
 
Twinkle.speedy.normalizeHash = {
	'reason': 'db',
	'nonsense': 'ع1',
	'test': 'ع2',
	'vandalism': 'ع3',
	'hoax': 'ع3',
	'repost': 'ع4',
	'banned': 'ع5',
	'histmerge': 'ع6',
	'move': 'ع6',
	'xfd': 'ع6',
	'disambig': 'ع6',
	'movedab': 'ع6',
	'copypaste': 'ع6',
	'ع6': 'ع6',
	'author': 'ع7',
	'ع8': 'ع8',
	'talk': 'ع8',
	'subpage': 'ع8',
	'redirnone': 'ع8',
	'templatecat': 'ع8',
	'imagepage': 'ع8',
	'attack': 'ع10',
	'negublp': 'ع10',
	'spam': 'ع11',
	'spamuser': 'ع11',
	'copyvio': 'ع12',
	'afc': 'ع13',
	'nocontext': 'م1',
	'foreign': 'م2',
	'nocontent': 'م3',
	'transwiki': 'م5',
	'م7': 'م7',
	'person': 'م7',
	'corp': 'م7',
	'web': 'م7',
	'band': 'م7',
	'club': 'م7',
	'animal': 'م7',
	'event': 'م7',
	'م9': 'م9',
	'م10': 'م10',
	'madeup': 'م11',
	'rediruser': 'ر2',
	'redirtypo': 'ر3',
	'redundantimage': 'ف1',
	'noimage': 'ف2',
	'fpcfail': 'ف2',
	'noncom': 'ف3',
	'unksource': 'ف4',
	'unfree': 'ف5',
	'norat': 'ف6',
	'badfairuse': 'ف7',
	'nowcommons': 'ف8',
	'imgcopyvio': 'ف9',
	'badfiletype': 'ف10',
	'nopermission': 'ف11',
	'catempty': 'ز1',
	'userreq': 'ص1',
	'nouser': 'ص2',
	'gallery': 'ص3',
	'notwebhost': 'ص5',
	'policy': 'ر2',
	'duplicatetemplate': 'س3',
	'س3': 'س3',
	'ب1': 'ب1',
	'emptyportal': 'ب2'
};
 
// keep this synched with [[MediaWiki:Deletereason-dropdown]]
Twinkle.speedy.reasonHash = {
	'reason': '',
// عمومی
	'nonsense': 'بے معنی یا بے کار',
	'test': 'تجرباتی صفحہ',
	'vandalism': '[[وپ:تخریب کاری|تخریب کاری]]',
	'hoax': '[[وپ:افسانے نہ گھڑیں|واضح افسانہ طرازی]]',
	'repost': '[[وپ:مضامین برائے حذف]] کی بنا پر حذف ہونے والا مضمون دوبارہ بنایا گیا',
	'banned': 'تخلیق شدہ بذریعہ [[وپ:پابندی|ممنوع]] یا [[وپ:معطل|معطل]] صارف',
	'histmerge': 'تاریخچوں کو ضم کرنے کے لیے عارضی حذف شدگی',
	'move': 'منتقلی کی راہ ہموار کرنے کے لیے',
	'xfd': '[[وپ:مبح|مضامین برائے حذف]] کی گفتگو کے نتیجے میں حذف',
	'disambig': 'غیر ضروری ضد ابہام صفحہ',
	'movedab': '[[:en:WP:MALPLACED|بے جا ضد ابہام صفحے]] سے رجوع مکرر',
	'copypaste': 'منتقلی صفحہ بذریعہ [[:en:WP:CPMV|نقل و چسپاں]]',
	'ع6': 'صفائی نولکھائی',
	'author': 'صفحہ ساز صارف کی درخواست پر عمل درآمد',
	'ع۸': 'غیر موجود یا حذف شدہ صفحہ سے مربوط صفحہ',
	'talk': 'غیر موجود یا حذف شدہ صفحہ کا [[وپ:تبادلۂ خیال صفحہ|تبادلہ خیال صفحہ]]',
	'subpage': 'غیر موجود یا حذف شدہ صفحہ کا [[وپ:ذیلی صفحہ|ذیلی صفحہ]]',
	'redirnone': 'غیر موجود یا حذف شدہ صفحہ کا [[وپ:رجوع مکرر|رجوع مکرر]]',
	'templatecat': 'حذف شدہ سانچوں سے پُر زمرہ',
	'imagepage': 'غیر موجود فائل کا صفحۂ وضاحت',
	'attack': '[[وپ:صفحہ حملہ|صفحہ حملہ]] یا منفی اسلوب میں تحریر شدہ بلا حوالہ [[وپ:بحش|سوانح عمری]]',
	'negublp': 'منفی اسلوب میں تحریر شدہ بلا حوالہ [[وپ:بقید حیات شخصیات کی سوانح عمری|سوانح عمری]]',
	'spam': '[[وپ:فاضل کاری|فاضل کاری]] یا واضح اشتہار بازی',
	'copyvio': '[[وپ:کاپی رائٹ|کاپی رائٹ]] کی واضح خلاف ورزی',
	'afc': '[[:en:WP:AFC|مضمون تحریر کرنے کی درخواست]] واپس لے لی گئی',
// مضامین
	'nocontext': 'انتہائی مختصر مضمون اور موضوع کی شناخت کے لیے درکار مواد کی قلت',
	'foreign': 'دوسرے ویکی منصوبہ کا غیر ترجمہ شدہ مضمون',
	'nocontent': 'درکار مواد موجود نہیں',
	'transwiki': 'ساتھی منصوبے میں منتقل شدہ',
	'م7': 'غیر معروف اور غیر اہم موضوع (شخصیت، ادارہ، تنظیم، جانور اور ویب مواد وغیرہ)',
	'person' : 'غیر معروف اور غیر اہم موضوع (شخصیت)',
	'web': 'غیر معروف اور غیر اہم موضوع (ویب مواد)',
	'corp': 'غیر معروف اور غیر اہم موضوع (تنظیم)',
	'club': 'غیر معروف اور غیر اہم موضوع (کلب)',
	'band': 'غیر معروف اور غیر اہم موضوع (طائفہ)',
	'animal': 'غیر معروف اور غیر اہم موضوع (جانور)',
	'event': 'غیر معروف اور غیر اہم موضوع (تقریب)',
	'م9': 'غیر معروف موسیقی ریکارڈ جس کے فنکاروں پر مضمون موجود نہیں',
	'م10': 'حالیہ تحریر کردہ مضمون جو پہلے سے موجود ایک مضمون کا چربہ ہے',
	'madeup': 'واضح طور پر مضمون نویس یا اس کے ساتھیوں کی ذہنی اپج ہے اور اس کی معروفیت اور اہمیت کا کوئی ذکر نہیں',
// فائلیں
	'redundantimage': 'ویکیپیڈیا یا کامنز میں اس کا دوسرا نسخہ موجود ہے',
	'noimage': 'خالی یا خراب شدہ فائل',
	'fpcfail': 'کامنز پر موجود فائل کا غیر ضروری صفحہ وضاحت',
	'noncom': 'نادرست اجازت نامہ',
	'unksource': 'اجازت نامے کی ناکافی معلومات',
	'unfree': 'غیر مستعمل اور غیر آزاد فائل',
	'norat': 'غیر آزاد فائل جس کے منصفانہ استعمال کی وضاحت درج نہیں',
	'badfairuse': 'نادرست منصفانہ استعمال',
	'nowcommons': 'کامنز پر موجود ہے',
	'imgcopyvio': '[[:en:WP:COPYVIO|کاپی رائٹ کی واضح خلاف ورزی]]',
	'badfiletype': 'بے کار فائل (تصویر، آواز یا فلم نہیں)',
	'nopermission': 'اجازت کا ثبوت موجود نہیں',
// زمرہ جات
	'catempty': 'خالی زمرہ',
// صارف صفحات
	'userreq': 'صارف کے اپنے نام فضا میں موجود صفحہ کے حذف کی درخواست پر عمل',
	'nouser': 'غیر موجود صارف کا صارف یا ذیلی صفحہ',
	'gallery': 'غیر آزاد نگار خانہ',
	'notwebhost': '[[وپ:ویب ہوسٹ نہیں|ویب ہوسٹ نہیں ہے]]',
// سانچے
	'policy': 'واضح طور پر موجودہ اصول و ضوابط کی غلط تشریح پر مشتمل سانچہ',
	'duplicatetemplate': 'غیر مستعمل اور مکرر سانچہ',
	'س3': 'غیر مستعمل و مکرر سانچہ',
// ابواب
	'ب1': 'باب مضمون کی شکل میں',
	'emptyportal': 'غیر مناسب موضوع پر مشتمل باب',
// رجوع مکررات
	'rediruser': 'مرکزی نام فضا سے دوسری نام فضا کی جانب رجوع مکرر',
	'redirtypo': 'نادرست حالیہ تخلیق شدہ رجوع مکرر'
};
 
Twinkle.speedy.callbacks = {
	sysop: {
		main: function( params ) {
			var thispage;
 
			Morebits.wiki.addCheckpoint();  // prevent actionCompleted from kicking in until user interaction is done
 
			// look up initial contributor. If prompting user for deletion reason, just display a link.
			// Otherwise open the talk page directly
			if( params.openusertalk ) {
				thispage = new Morebits.wiki.page( mw.config.get('wgPageName') );  // a necessary evil, in order to clear incorrect status text
				thispage.setCallbackParameters( params );
				thispage.lookupCreator( Twinkle.speedy.callbacks.sysop.openUserTalkPage );
			}
 
			// delete page
			var reason;
			thispage = new Morebits.wiki.page( mw.config.get('wgPageName'), "صفحہ حذف کیا جا رہا ہے" );
			if (params.normalized === 'db') {
				reason = prompt("حذف کا خلاصہ درج کریں جو نوشتہ حذف شدگی میں محفوظ ہوگا:", "");
			} else {
				var presetReason = "[[وپ:فحش#" + params.normalized.toUpperCase() + "|" + params.normalized.toUpperCase() + "]]: " + params.reason;
				if (Twinkle.getPref("promptForSpeedyDeletionSummary").indexOf(params.normalized) !== -1) {
					reason = prompt("حذف کا خلاصہ درج کریں یا خودکار طور پر درج کیے جانے والے خلاصے کے لیے ٹھیک کی بٹن پر کلک کریں", presetReason);
				} else {
					reason = presetReason;
				}
			}
			if (reason === null) {
				Morebits.status.error("وجہ طلب کی جا رہی ہے", "صارف نے منسوخ کر دیا");
				Morebits.wiki.removeCheckpoint();
				return;
			} else if (!reason || !reason.replace(/^\s*/, "").replace(/\s*$/, "")) {
				Morebits.status.error("وجہ طلب کی جا رہی ہے", "آپ نے وجہ درج نہیں کی۔ I don't know... what with admins and their apathetic antics... I give up...");
				Morebits.wiki.removeCheckpoint();
				return;
			}
			thispage.setEditSummary( reason + Twinkle.getPref('deletionSummaryAd') );
			thispage.deletePage(function() {
				thispage.getStatusElement().info("مکمل");
				Twinkle.speedy.callbacks.sysop.deleteTalk( params );
			});
			Morebits.wiki.removeCheckpoint();
		},
		deleteTalk: function( params ) {
			// delete talk page
			if (params.deleteTalkPage &&
					params.normalized !== 'ف8' &&
					document.getElementById( 'ca-talk' ).className !== 'new') {
				var talkpage = new Morebits.wiki.page( Morebits.wikipedia.namespaces[ mw.config.get('wgNamespaceNumber') + 1 ] + ':' + mw.config.get('wgTitle'), "تبادلۂ خیال صفحہ حذف کیا جا رہا ہے" );
				talkpage.setEditSummary('[[وپ:فحش#ع8|ع8]]: تبادلۂ خیال برائے حذف شدہ صفحہ «' + Morebits.pageNameNorm + '»' + Twinkle.getPref('deletionSummaryAd'));
				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',
					'list': 'backlinks',
					'blfilterredir': 'redirects',
					'bltitle': mw.config.get('wgPageName'),
					'bllimit': 5000  // 500 is max for normal users, 5000 for bots and sysops
				};
				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]);
			}
		},
		openUserTalkPage: function( pageobj ) {
			pageobj.getStatusElement().unlink();  // don't need it anymore
			var user = pageobj.getCreator();
			var params = pageobj.getCallbackParameters();
 
			var query = {
				'title': 'تبادلۂ خیال صارف:' + user,
				'action': 'edit',
				'preview': 'yes',
				'vanarticle': Morebits.pageNameNorm
			};
 
			if (params.normalized === 'db' || Twinkle.getPref("promptForSpeedyDeletionSummary").indexOf(params.normalized) !== -1) {
				// provide a link to the user talk page
				var $link, $bigtext;
				$link = $('<a/>', {
					'href': mw.util.wikiScript('index') + '?' + Morebits.queryString.create( query ),
					'text': 'صارف ' + user + ' کا تبادلۂ خیال صفحہ کھولنے کے لیے یہاں کلک کریں',
					'target': '_blank',
					'css': { 'fontSize': '130%', 'fontWeight': 'bold' }
				});
				$bigtext = $('<span/>', {
					'text': 'صفحہ ساز کو اطلاع دینے کے لیے',
					'css': { 'fontSize': '130%', 'fontWeight': 'bold' }
				});
				Morebits.status.info($bigtext[0], $link[0]);
			} else {
				// open the initial contributor's talk page
				var statusIndicator = new Morebits.status('صارف ' + user + ' کے تبادلۂ خیال صفحہ کا خانہ ترمیم کھل رہا ہے', 'کھل رہا ہے۔۔۔');
 
				switch( Twinkle.getPref('userTalkPageMode') ) {
				case 'tab':
					window.open( mw.util.wikiScript('index') + '?' + Morebits.queryString.create( query ), '_blank' );
					break;
				case 'blank':
					window.open( mw.util.wikiScript('index') + '?' + Morebits.queryString.create( query ), '_blank', 'location=no,toolbar=no,status=no,directories=no,scrollbars=yes,width=1200,height=800' );
					break;
				case 'window':
					/* falls through */
				default:
					window.open( mw.util.wikiScript('index') + '?' + Morebits.queryString.create( query ),
						( window.name === 'twinklewarnwindow' ? '_blank' : 'twinklewarnwindow' ),
						'location=no,toolbar=no,status=no,directories=no,scrollbars=yes,width=1200,height=800' );
					break;
				}
 
				statusIndicator.info( 'complete' );
			}
		},
		deleteRedirectsMain: function( apiobj ) {
			var xmlDoc = apiobj.getXML();
			var $snapshot = $(xmlDoc).find('backlinks bl');
			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 = parseInt( 100 * (++current)/total, 10 ) + '%';
				statusIndicator.update( now );
				apiobjInner.statelem.unlink();
				if( current >= total ) {
					statusIndicator.info( now + ' (مکمل)' );
					Morebits.wiki.removeCheckpoint();
				}
			};
 
			Morebits.wiki.addCheckpoint();
 
			$snapshot.each(function(key, value) {
				var title = $(value).attr('title');
				var page = new Morebits.wiki.page(title, 'رجوع مکرر «' + title + '» حذف کیا جا رہا ہے');
				page.setEditSummary('[[وپ:فحش#ع8|ع8]]: غیر موجود صفحہ کا رجوع مکرر "' + Morebits.pageNameNorm + '"' + Twinkle.getPref('deletionSummaryAd'));
				page.deletePage(onsuccess);
			});
		}
	},
 
	user: {
		main: function(pageobj) {
			var statelem = pageobj.getStatusElement();
 
			if (!pageobj.exists()) {
				statelem.error( "معلوم ہوتا ہے کہ یہ صفحہ موجود نہیں، شاید پہلے ہی حذف کیا جا چکا ہو۔" );
				return;
			}
 
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
 
			statelem.status( 'صفحہ پر موجود ٹیگوں کو جانچا جا رہا ہے ۔۔۔' );
 
			// check for existing deletion tags
			var tag = /(?:\{\{\s*(حش-.*?|db|delete|db-.*?|فوری حذف|speedy deletion-.*?|فوری حذف-.*?)(?:\s*\||\s*\}\}))/.exec( text );
			if( tag ) {
				statelem.error( [ Morebits.htmlNode( 'strong', tag[1] ) , " صفحہ میں پہلے سے چسپاں ہے۔" ] );
				return;
			}
 
			var xfd = /(?:\{\{([rsaiftcm]fd|md1|proposed deletion)[^{}]*?\}\})/i.exec( text );
			if( xfd && !confirm( "حذف کا ٹیگ {{" + xfd[1] + "}} صفحہ میں موجود ہے۔ کیا آپ حذف کا دوسرا ٹیگ بھی چسپاں کرنا چاہتے ہیں؟" ) ) {
				return;
			}
 
			var code, parameters, i;
			if (params.normalizeds.length > 1) {
				code = "{{db-multiple";
				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];
					}
				}
				code += "}}";
				params.utparams = Twinkle.speedy.getUserTalkParameters(params.normalizeds[0], parameters);
			}
 
			var thispage = new Morebits.wiki.page(mw.config.get('wgPageName'));
			// patrol the page, if reached from خاص:جدید صفحات
			if( Twinkle.getPref('markSpeedyPagesAsPatrolled') ) {
				thispage.patrol();
			}
 
			// 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*([Nn]ew unreviewed article|[Uu]nreviewed|[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, "");
			}
 
			// 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] === "db") {
				editsummary = '[[وپ:فحش|فوری حذف شدگی کی درخواست]] بوجہ \"' + parameters["1"] + '\"۔';
			} else if (params.values[0] === "histmerge") {
				editsummary = "[[" + parameters["1"] + "]] میں تاریخچہ ضم کرنے کی درخواست ([[وپ:فحش#ع6|فحش ع6]])۔";
			} else {
				editsummary = "فوری حذف شدگی کی درخواست ([[وپ:فحش#" + params.normalizeds[0].toUpperCase() + "|فحش " + params.normalizeds[0].toUpperCase() + "]])۔";
			}
 
			pageobj.setPageText(code + ((params.normalizeds.indexOf('ع10') !== -1) ? '' : ("\n" + text) )); // cause attack pages to be blanked
			pageobj.setEditSummary(editsummary + Twinkle.getPref('summaryAd'));
			pageobj.setWatchlist(params.watch);
			pageobj.setCreateOption('nocreate');
			pageobj.save(Twinkle.speedy.callbacks.user.tagComplete);
		},
 
		tagComplete: function(pageobj) {
			var params = pageobj.getCallbackParameters();
 
			// Notification to first contributor
			if (params.usertalk) {
				var callback = function(pageobj) {
					var initialContrib = pageobj.getCreator();
 
					// disallow warning yourself
					if (initialContrib === mw.config.get('wgUserName')) {
						Morebits.status.warn("آپ (" + initialContrib + ") ہی نے یہ صفحہ بنایا ہے؛ لہذا اطلاع رسانی کی کارروائی منسوخ کی جا رہی ہے");
 
					// don't notify users when their user talk page is nominated
					} else if (initialContrib === mw.config.get('wgTitle') && mw.config.get('wgNamespaceNumber') === 3) {
						Morebits.status.warn("اولین مشارکت کنندہ کو اطلاع دی جا رہی ہے:اس صارف نے اپنا تبادلۂ خیال صفحہ خود تخلیق کیا ہے؛ لہذا اطلاع رسانی کی کارروائی منسوخ کی جا رہی ہے");
 
					// quick hack to prevent excessive unwanted notifications, per request. Should actually be configurable on recipient page...
					} else if ((initialContrib === "Cyberbot I" || initialContrib === "Shuaib-bot") && params.normalizeds[0] === "ف2") {
						Morebits.status.warn("اولین مشارکت کنندہ کو اطلاع دی جا رہی ہے: اس صفحہ کو روبہ نے تخلیق کیا ہے؛ لہذا اطلاع رسانی کی کارروائی منسوخ کی جا رہی ہے");
 
					} else {
						var usertalkpage = new Morebits.wiki.page('User talk:' + initialContrib, "اولین مشارکت کنندہ (" + initialContrib + ") کو اطلاع دی جا رہی ہے"),
							notifytext, i;
 
						// specialcase "db" and "db-multiple"
						if (params.normalizeds.length > 1) {
							notifytext = "\n{{نقل:db-notice-multiple|1=" + Morebits.pageNameNorm;
							var count = 2;
							$.each(params.normalizeds, function(index, norm) {
								notifytext += "|" + (count++) + "=" + norm.toUpperCase();
							});
						} else if (params.normalizeds[0] === "db") {
							notifytext = "\n{{نقل:db-reason-notice|1=" + Morebits.pageNameNorm;
						} else {
							notifytext = "\n{{نقل:db-csd-notice-custom|1=" + Morebits.pageNameNorm + "|2=" + 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 deletions
							editsummary += " [[" + Morebits.pageNameNorm + "]].";
						} else {
							editsummary += " کا حملہ صفحہ۔";
						}
 
						usertalkpage.setAppendText(notifytext);
						usertalkpage.setEditSummary(editsummary + Twinkle.getPref('summaryAd'));
						usertalkpage.setCreateOption('recreate');
						usertalkpage.setFollowRedirect(true);
						usertalkpage.append();
					}
 
					// 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);
					}
				};
				var thispage = new Morebits.wiki.page(Morebits.pageNameNorm);
				thispage.lookupCreator(callback);
			}
			// 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);
			}
		},
 
		// note: this code is also invoked from twinkleimage
		// the params used are:
		//   for CSD: params.values, params.normalizeds  (note: normalizeds is an array)
		//   for DI: params.fromDI = true, params.type, params.normalized  (note: normalized is a string)
		addToLog: function(params, initialContrib) {
			var wikipedia_page = new Morebits.wiki.page("User:" + mw.config.get('wgUserName') + "/" + Twinkle.getPref('speedyLogPageName'), "صارف نام فضا کے نوشتہ میں اندراج جاری ہے");
			params.logInitialContrib = initialContrib;
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.speedy.callbacks.user.saveLog);
		},
 
		saveLog: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
 
			var appendText = "";
 
			// add blurb if log page doesn't exist
			if (!pageobj.exists()) {
				appendText +=
					"یہ [[وپ:فحش|فوری حذف شدگی]] کی ان تمام نامزدگیوں کا نوشتہ ہے جو اس صارف نے [[وپ:پلک|پلک]] کے فوری حذف شدگی ماڈیول کے ذریعہ کیے ہیں۔\n\n" +
					"اگر آپ اس نوشتہ کو باقی نہیں رکھنا چاہتے ہیں تو اسے [[وپ:پلک/ترجیحات|پلک کی ترجیحات]] سے غیر فعال کر دیں، اور " +
					"اس صفحہ کو [[وپ:فحش#ص1|فحش ص1]] کے تحت فوری حذف شدگی کے لیے نامزد کریں۔\n";
				if (Morebits.userIsInGroup("sysop")) {
					appendText += "\n\nیہ نوشتہ پلک کی مدد سے کی جانے والی فوری حذف شدگیوں کا تعاقب نہیں کرے گا۔";
				}
			}
 
			// create monthly header
			var date = new Date();
			var headerRe = new RegExp("^==+\\s*" + date.getUTCMonthName() + "\\s+" + date.getUTCFullYear() + "\\s*==+", "m");
			if (!headerRe.exec(text)) {
				appendText += "\n\n=== {{نقل:CURRENTMONTHNAME}} {{نقل:CURRENTYEAR}} ===";
			}
 
			appendText += "\n# [[:" + Morebits.pageNameNorm + "]]: ";
			if (params.fromDI) {
				appendText += "حذف تصویر [[وپ:فحش#" + params.normalized.toUpperCase() + "|فحش " + params.normalized.toUpperCase() + "]] (" + params.type + ")";
			} else {
				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] === "db") {
					appendText += "{{tl|db-reason}}";
				} else {
					appendText += "[[وپ:فحش#" + params.normalizeds[0].toUpperCase() + "|فحش " + params.normalizeds[0].toUpperCase() + "]] ({{tl|db-" + params.values[0] + "}})";
				}
			}
 
			if (params.logInitialContrib) {
				appendText += "؛ {{user|1=" + params.logInitialContrib + "}} کو اطلاع کر دی گئی";
			}
			appendText += " ~~~~~\n";
 
			pageobj.setAppendText(appendText);
			pageobj.setEditSummary("[[" + Morebits.pageNameNorm + "]] کی فوری حذف شدگی کی نامزدگی کو نوشتہ میں درج کیا جا رہا ہے۔" + Twinkle.getPref('summaryAd'));
			pageobj.setCreateOption("recreate");
			pageobj.append();
		}
	}
};
 
// 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_1"]) {
					var deldisc = form["csd.repost_1"].value;
					if (deldisc) {
						if (deldisc.substring(0, 9) !== "ویکیپیڈیا" && deldisc.substring(0, 3) !== "وپ:") {
							alert( 'فحش ع4: حذف شدگی کی گفتگو کے صفحہ کا نام اگر درج کریں تو لازماً "ویکیپیڈیا:" سے شروع کریں۔' );
							parameters = null;
							return false;
						}
						currentParams["1"] = deldisc;
					}
				}
				break;
 
			case 'banned':  // G5
				if (form["csd.banned_1"] && form["csd.banned_1"].value) {
					currentParams["1"] = form["csd.banned_1"].value.replace(/^\s*(User|صارف):/i, "");
				}
				break;
 
			case 'histmerge':  // G6
				if (form["csd.histmerge_1"]) {
					var merger = form["csd.histmerge_1"].value;
					if (!merger || !merger.trim()) {
						alert( 'فحش ع6 (ضم تاریخچہ): براہ کرم ہدف صفحہ کا عنوان درج کریں۔' );
						parameters = null;
						return false;
					}
					currentParams["1"] = merger;
				}
				break;
 
			case 'move':  // G6
				if (form["csd.move_1"] && form["csd.move_2"]) {
					var movepage = form["csd.move_1"].value,
						movereason = form["csd.move_2"].value;
					if (!movepage || !movepage.trim()) {
						alert( 'فحش ع6 (منتقلی صفحہ): براہ کرم منتقل کیے جانے والے صفحہ کا عنوان یہاں درج کریں۔' );
						parameters = null;
						return false;
					}
					if (!movereason || !movereason.trim()) {
						alert( 'فحش ع6 (منتقلی صفحہ): براہ کرم منتقل کرنے کی وجہ درج کریں۔' );
						parameters = null;
						return false;
					}
					currentParams["1"] = movepage;
					currentParams["2"] = movereason;
				}
				break;
 
			case 'xfd':  // G6
				if (form["csd.xfd_fullvotepage"]) {
					var xfd = form["csd.xfd_fullvotepage"].value;
					if (xfd) {
						if (xfd.substring(0, 9) !== "ویکیپیڈیا" && xfd.substring(0, 3) !== "وپ:") {
							alert( 'فحش ع6 (مبح): حذف شدگی کی گفتگو کے صفحہ کا نام اگر درج کریں تو لازماً "ویکیپیڈیا:" سے شروع کریں۔' );
							parameters = null;
							return false;
						}
						currentParams.fullvotepage = xfd;
					}
				}
				break;
 
			case 'copypaste':  // G6
				if (form["csd.copypaste_1"]) {
					var copypaste = form["csd.copypaste_1"].value;
					if (!copypaste || !copypaste.trim()) {
						alert( 'فحش ع6 (نقل چسپاں): براہ کرم ماخذی صفحہ کا عنوان درج کریں۔' );
						parameters = null;
						return false;
					}
					currentParams["1"] = copypaste;
				}
				break;
 
			case 'ع6':  // 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 'ع8':  // G8
				if (form["csd.g8_rationale"] && form["csd.g8_rationale"].value) {
					currentParams.rationale = form["csd.g8_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
				var query = {
							action: "query",
							titles: mw.config.get("wgPageName"),
							prop: "revisions",
							rvprop: "timestamp"
						},
						api = new Morebits.wiki.api( 'تازہ ترین نظر ثانی کو اخذ کیا جا رہا ہے', query, function( apiobj ) {
							var xmlDoc = apiobj.getXML(),
									isoDateString = $(xmlDoc).find("rev").attr("timestamp");
 
							currentParams.ts = isoDateString;
						});
 
				// Wait for API call to finish
				api.post({
					async: false
				});
 
				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 = redimage.replace(/^\s*(Image|File):/i, "");
				}
				break;
 
			case 'badfairuse':  // F7
				if (form["csd.badfairuse_reason"] && form["csd.badfairuse_reason"].value) {
					currentParams.reason = form["csd.badfairuse_reason"].value;
				}
				break;
 
			case 'nowcommons':  // F8
				if (form["csd.nowcommons_filename"]) {
					var filename = form["csd.nowcommons_filename"].value;
					if (filename && filename !== Morebits.pageNameNorm) {
						if (filename.indexOf("Image:") === 0 || filename.indexOf("File:") === 0) {
							currentParams["1"] = filename;
						} else {
							currentParams["1"] = "File:" + filename;
						}
					}
				}
				currentParams.date = "~~~~~";
				break;
 
			case 'imgcopyvio':  // F9
				if (form["csd.imgcopyvio_url"] && form["csd.imgcopyvio_url"].value) {
					currentParams.url = form["csd.imgcopyvio_url"].value;
				}
				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 'م10':  // 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 'duplicatetemplate':  // T3
				if (form["csd.duplicatetemplate_2"]) {
					var t3template = form["csd.duplicatetemplate_2"].value;
					if (!t3template || !t3template.trim()) {
						alert( 'فحش س3: براہ کرم اس سانچہ کا نام درج کریں جس کا یہ چربہ ہے۔' );
						parameters = null;
						return false;
					}
					currentParams["1"] = "~~~~~";
					currentParams["2"] = t3template.replace(/^\s*(Template|سانچہ):/i, "");
				}
				break;
 
			case 'س3':  // T3
				if (form["csd.t3_rationale"]) {
					var t3rationale = form["csd.t3_rationale"].value;
					if (!t3rationale || !t3rationale.trim()) {
						alert( 'فحش س3: براہ کرم وجہ درج کریں۔' );
						parameters = null;
						return false;
					}
					currentParams["1"] = "~~~~~";
					currentParams.rationale = t3rationale;
				}
				break;
 
			case 'ب1':  // P1
				if (form["csd.p1_criterion"]) {
					var criterion = form["csd.p1_criterion"].value;
					if (!criterion || !criterion.trim()) {
						alert( 'فحش ب1: براہ کرم کوئی وجہ یا معیار درج کریں۔' );
						parameters = null;
						return false;
					}
					currentParams["1"] = criterion;
				}
				break;
 
			default:
				break;
		}
		parameters.push(currentParams);
	});
	return parameters;
};
 
// function for processing talk page notification template parameters
Twinkle.speedy.getUserTalkParameters = function twinklespeedyGetUserTalkParameters(normalized, parameters) {
	var utparams = [];
	switch (normalized) {
		case 'db':
			utparams["2"] = parameters["1"];
			break;
		case 'ع12':
			utparams.key1 = "url";
			utparams.value1 = utparams.url = parameters.url;
			break;
		case 'م10':
			utparams.key1 = "article";
			utparams.value1 = utparams.article = parameters.article;
			break;
		default:
			break;
	}
	return utparams;
};
 
 
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);
 
	var tag_only = form.tag_only;
	if( tag_only && tag_only.checked ) {
		Twinkle.speedy.callback.evaluateUser(e);
		return;
	}
 
	var value = Twinkle.speedy.resolveCsdValues(e)[0];
	if (!value) {
		return;
	}
	var normalized = Twinkle.speedy.normalizeHash[ value ];
 
	var params = {
		value: value,
		normalized: normalized,
		watch: Twinkle.getPref('watchSpeedyPages').indexOf( normalized ) !== -1,
		reason: Twinkle.speedy.reasonHash[ value ],
		openusertalk: Twinkle.getPref('openUserTalkPageOnSpeedyDelete').indexOf( normalized ) !== -1,
		deleteTalkPage: form.talkpage && form.talkpage.checked,
		deleteRedirects: form.redirects.checked
	};
 
	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 multiple = form.multiple.checked;
	var normalizeds = [];
	$.each(values, function(index, value) {
		var norm = Twinkle.speedy.normalizeHash[ value ];
 
		normalizeds.push(norm);
	});
 
	// analyse each criterion to determine whether to watch the page/notify the creator
	var watchPage = false;
	$.each(normalizeds, function(index, norm) {
		if (Twinkle.getPref('watchSpeedyPages').indexOf(norm) !== -1) {
			watchPage = true;
			return false;  // break
		}
	});
 
	var notifyuser = false;
	if (form.notify.checked) {
		$.each(normalizeds, function(index, norm) {
			if (Twinkle.getPref('notifyUserOnSpeedyDeletionNomination').indexOf(norm) !== -1) {
				if (norm === 'ع6' && ['disambig', 'copypaste'].indexOf(values[index]) === -1) {
					return true;
				}
				notifyuser = true;
				return false;  // break
			}
		});
	}
 
	var welcomeuser = false;
	if (notifyuser) {
		$.each(normalizeds, function(index, norm) {
			if (Twinkle.getPref('welcomeUserOnSpeedyDeletionNotification').indexOf(norm) !== -1) {
				welcomeuser = true;
				return false;  // break
			}
		});
	}
 
	var csdlog = false;
	if (Twinkle.getPref('logSpeedyNominations')) {
		$.each(normalizeds, function(index, norm) {
			if (Twinkle.getPref('noLogOnSpeedyNomination').indexOf(norm) === -1) {
				csdlog = true;
				return false;  // break
			}
		});
	}
 
	var params = {
		values: values,
		normalizeds: normalizeds,
		watch: watchPage,
		usertalk: notifyuser,
		welcomeuser: welcomeuser,
		lognomination: csdlog,
		templateParams: Twinkle.speedy.getParameters( form, values )
	};
	if (!params.templateParams) {
		return;
	}
 
	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.setCallbackParameters(params);
	wikipedia_page.load(Twinkle.speedy.callbacks.user.main);
};
})(jQuery);
 
 
//</nowiki>