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

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

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

// <nowiki>


(function($) {


/*
 ****************************************
 *** twinkleimage.js: Image CSD module
 ****************************************
 * Mode of invocation:     Tab ("حذف‌تص")
 * Active on:              Local nonredirect file pages (not on Commons)
 */

Twinkle.image = function twinkleimage() {
	if (mw.config.get('wgNamespaceNumber') === 6 && mw.config.get('wgArticleId') && !document.getElementById('mw-sharedupload') && !Morebits.isPageRedirect()) {
		Twinkle.addPortletLink(Twinkle.image.callback, 'حذف‌تص', 'tw-di', 'تصویر کو فوری حذف شدگی کے لیے نامزد کریں');
	}
};

Twinkle.image.callback = function twinkleimageCallback() {
	var Window = new Morebits.simpleWindow(600, 330);
	Window.setTitle('فوری حذف کے لیے نامزدگی');
	Window.setScriptName('پلک');
	Window.addFooterLink('فوری حذف شدگی کی پالیسی', 'وپ:فحذ');
	Window.addFooterLink('ترجیحات حذف تصاویر', 'وپ:پلک/ترجیحات#image');
	Window.addFooterLink('رہنمائے پلک', ':en:WP:TW/DOC#image');
	Window.addFooterLink('آپ کے تاثرات', 'تبادلۂ خیال ویکیپیڈیا:پلک');

	var form = new Morebits.quickForm(Twinkle.image.callback.evaluate);
	form.append({
		type: 'checkbox',
		list: [
			{
				label: 'اپلوڈ کنندہ کو مطلع کریں',
				value: 'notify',
				name: 'notify',
				tooltip: "اگر آپ اسی ایک صارف کی اپلوڈ کردہ کئی تصویروں کو نامزد کرنا اور اس کے تبادلہ خیال صفحہ کو اطلاعی پیغاموں سے پُر نہیں کرنا چاہتے تو اسے غیر فعال کر دیں",
				checked: Twinkle.getPref('notifyUserOnDeli')
			}
		]
	}
	);
	var field = form.append({
		type: 'field',
		label: 'مطلوبہ کارروائی کی نوعیت'
	});
	field.append({
		type: 'radio',
		name: 'type',
		event: Twinkle.image.callback.choice,
		list: [
			{
				label: 'ماخذ نہیں (فحذ ف4)',
				value: 'ماخذ نہیں',
				checked: true,
				tooltip: 'فائل کے ماخذ کی معلومات درج نہیں'
			},
			{
				label: 'اجازت نامہ نہیں (فحذ ف4)',
				value: 'اجازت نامہ نہیں',
				tooltip: 'فائل کے حقوق کے متعلق معلومات درج نہیں'
			},
			{
				label: 'ماخذ اور اجازت نامہ نہیں (فحذ ف4)',
				value: 'ماخذ اور اجازت نامہ نہیں',
				tooltip: 'فائل کے ماخذ اور حقوق دونوں کی معلومات درج نہیں'
			},
			{
				label: 'یتیم منصفانہ استعمال (فحذ ف5)',
				value: 'یتیم منصفانہ استعمال',
				tooltip: 'فائل کا اجازت نامہ نہیں ہے اور اسے محض منصفانہ استعمال کے تحت استعمال کی اجازت دی گئی ہے تاہم یہ فائل ویکیپیڈیا میں کہیں بھی مستعمل نہیں ہے'
			},
			{
				label: 'منصفانہ استعمال کی وجہ نہیں (فحذ ف6)',
				value: 'منصفانہ استعمال کی وجہ نہیں',
				tooltip: 'تصویر کو منصفانہ استعمال کے تحت استعمال کی اجازت دی گئی ہے لیکن یہ وضاحت نہیں کی گئی کہ یہ اجازت کس پالیسی کے تحت ہے'
			},
			{
				label: 'منصفانہ استعمال کی متنازع وجہ (فحذ ف7)',
				value: 'منصفانہ استعمال کی متنازع وجہ',
				tooltip: 'فائل کے منصفانہ استعمال کی جو وجہ درج کی گئی ہے وہ متنازع ہے'
			},
			{
				label: 'قابل تبدیل منصفانہ استعمال (فحذ ف7)',
				value: 'قابل تبدیل منصفانہ استعمال',
				tooltip: 'شاید یہ تصویر یا فائل ویکیپیڈیا کے غیر آزاد مواد کے استعمال کے پہلے معیار کے مطابق نہیں۔ جس موضوع سے یہ متعلق ہے اس کی دوسری تصویر انھی معلومات کے ساتھ شاید میسر آجائے۔'
			},
			{
				label: 'اجازت کا ثبوت نہیں (فحذ ف11)',
				value: 'اجازت نہیں',
				tooltip: 'فائل کی تصریحات میں اس بات کا ثبوت نہیں ملتا کہ اصل مصنف موجودہ اجازت نامہ سے متفق ہے'
			}
		]
	});
	form.append({
		type: 'div',
		label: 'دائرۂ کار',
		name: 'work_area'
	});
	form.append({ type: 'submit' });

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

	// We must init the parameters
	var evt = document.createEvent('Event');
	evt.initEvent('change', true, true);
	result.type[0].dispatchEvent(evt);
};

Twinkle.image.callback.choice = function twinkleimageCallbackChoose(event) {
	var value = event.target.values;
	var root = event.target.form;
	var work_area = new Morebits.quickForm.element({
		type: 'div',
		name: 'work_area'
	});

	switch (value) {
		case 'ماخذ اور اجازت نامہ نہیں':
		case 'ماخذ نہیں':
			work_area.append({
				type: 'checkbox',
				list: [
					{
						label: 'غیر آزاد',
						name: 'non_free',
						tooltip: 'فائل کو منصفانہ استعمال کے تحت استعمال کی اجازت دی گئی ہے'
					}
				]
			});
		/* falls through */
		case 'اجازت نامہ نہیں':
			work_area.append({
				type: 'checkbox',
				list: [
					{
						name: 'derivative',
						label: 'ماخوذ تصویر جس کے اصل ماخذ کی صراحت نہ ہو',
						tooltip: 'وہ فائل جس کی تیاری میں کسی ایک یا متعدد مآخذ سے مدد لی گئی ہو اور ان کا ذکر نہ ہو'
					}
				]
			});
			break;
		case 'اجازت نہیں':
			work_area.append({
				type: 'input',
				name: 'source',
				label: 'ماخذ:'
			});
			break;
		case 'منصفانہ استعمال کی متنازع وجہ':
			work_area.append({
				type: 'textarea',
				name: 'reason',
				label: 'اشکال:'
			});
			break;
		case 'یتیم منصفانہ استعمال':
			work_area.append({
				type: 'input',
				name: 'replacement',
				label: 'تبدیلی:',
				tooltip: 'پروندهٔ اختیاری برای جایگزینی با این پرونده. درج پیشوند «پرونده:» اختیاری است.'
			});
			break;
		case 'قابل تبدیل منصفانہ استعمال':
			work_area.append({
				type: 'textarea',
				name: 'reason',
				label: 'وجہ:'
			});
			break;
		default:
			break;
	}

	root.replaceChild(work_area.render(), $(root).find('div[name="work_area"]')[0]);
};

Twinkle.image.callback.evaluate = function twinkleimageCallbackEvaluate(event) {

	var input = Morebits.quickForm.getInputData(event.target);
	if (input.replacement) {
		input.replacement = (new RegExp('^' + Morebits.namespaceRegex(6) + ':', 'i').test(input.replacement) ? '' : 'فائل:') + input.replacement;
	}

	var csdcrit;
	switch (input.type) {
		case 'ماخذ اور اجازت نامہ نہیں':
		case 'ماخذ نہیں':
		case 'اجازت نامہ نہیں':
			csdcrit = 'ف4';
			break;
		case 'یتیم منصفانہ استعمال':
			csdcrit = 'ف5';
			break;
		case 'منصفانہ استعمال کی وجہ نہیں':
			csdcrit = 'ف6';
			break;
		case 'منصفانہ استعمال کی متنازع وجہ':
		case 'قابل تبدیل منصفانہ استعمال':
			csdcrit = 'ف7';
			break;
		case 'اجازت نہیں':
			csdcrit = 'ف11';
			break;
		default:
			throw new Error('Twinkle.image.callback.evaluate: نامعلوم معیار');
	}

	var lognomination = Twinkle.getPref('logSpeedyNominations') && Twinkle.getPref('noLogOnSpeedyNomination').indexOf(csdcrit.toLowerCase()) === -1;
	var templatename = input.derivative ? 'اا ' + input.type : input.type;

	var params = $.extend({
		templatename: templatename,
		normalized: csdcrit,
		lognomination: lognomination
	}, input);

	Morebits.simpleWindow.setButtonsEnabled(false);
	Morebits.status.init(event.target);

	Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');
	Morebits.wiki.actionCompleted.notice = 'ٹیگ چسپاں کر دیا گیا';

	// Tagging image
	var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'فائل پر حذف کا ٹیگ چسپاں کیا جا رہا ہے');
	wikipedia_page.setCallbackParameters(params);
	wikipedia_page.load(Twinkle.image.callbacks.taggingImage);

	// Notifying uploader
	if (input.notify) {
		wikipedia_page.lookupCreation(Twinkle.image.callbacks.userNotification);
	} else {
		// add to CSD log if desired
		if (lognomination) {
			Twinkle.image.callbacks.addToLog(params, null);
		}
		// No auto-notification, display what was going to be added.
		var noteData = document.createElement('pre');
		noteData.appendChild(document.createTextNode('{{جا:di-' + templatename + '-notice|1=' + mw.config.get('wgTitle') + '}}~~~~'));
		Morebits.status.info('اطلاع', [ 'اولین اپلوڈ کنندہ کو حسب ذیل یا اس نوع کی معلومات بھیجی جائیں گی:', document.createElement('br'), noteData ]);
	}
};

Twinkle.image.callbacks = {
	taggingImage: function(pageobj) {
		var text = pageobj.getPageText();
		var params = pageobj.getCallbackParameters();

		// 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, '');

		var tag = '{{di-' + params.templatename + '|date={{جا:#وقت:j F Y}}';
		switch (params.type) {
			case 'ماخذ اور اجازت نامہ نہیں':
			case 'ماخذ نہیں':
				tag += params.non_free ? '|non-free=yes' : '';
				break;
			case 'اجازت نہیں':
				tag += params.source ? '|source=' + params.source : '';
				break;
			case 'منصفانہ استعمال کی متنازع وجہ':
				tag += params.reason ? '|concern=' + params.reason : '';
				break;
			case 'یتیم منصفانہ استعمال':
				tag += params.replacement ? '|replacement=' + params.replacement : '';
				break;
			case 'قابل تبدیل منصفانہ استعمال':
				tag += params.reason ? '|1=' + params.reason : '';
				break;
			default:
				break;  // doesn't matter
		}
		tag += '|help=off}}\n';
		
		/* additions for urwiki */
		var type_summary = {
			'ماخذ نہیں': 'ماخذ نہیں',
			'اجازت نامہ نہیں': 'اجازت نامہ نہیں',
			'ماخذ اور اجازت نامہ نہیں': 'ماخذ اور اجازت نامہ نہیں',
			'یتیم منصفانہ استعمال': 'یتیم منصفانہ استعمال',
			'منصفانہ استعمال کی وجہ نہیں': 'منصفانہ استعمال کی وجہ نہیں',
			'منصفانہ استعمال کی متنازع وجہ': 'منصفانہ استعمال کی متنازع وجہ',
			'قابل تبدیل منصفانہ استعمال': 'قابل تبدیل منصفانہ استعمال',
			'اجازت نہیں': 'اجازت نہیں'
		};
		/* end additions for urwiki */
		
		pageobj.setPageText(tag + text);
		pageobj.setEditSummary('اس فائل کو [[وپ:فحذ#' + params.normalized + '|فحذ ' + params.normalized + ']] کی بنیاد پر فوری حذف شدگی کے لیے نامزد کیا گیا (' + type_summary[params.type] + ')۔');
		pageobj.setChangeTags(Twinkle.changeTags);
		pageobj.setWatchlist(Twinkle.getPref('deliWatchPage'));
		pageobj.setCreateOption('nocreate');
		pageobj.save();
	},
	userNotification: function(pageobj) {
		var params = pageobj.getCallbackParameters();
		var initialContrib = pageobj.getCreator();

		// disallow warning yourself
		if (initialContrib === mw.config.get('wgUserName')) {
			pageobj.getStatusElement().warn('آپ (' + initialContrib + ') نے اس صفحہ کو بنایا ہے، لہذا اطلاع رسانی کی کارروائی منسوخ کی جا رہی ہے');
		} else {
			var usertalkpage = new Morebits.wiki.page('تبادلۂ خیال صارف:' + initialContrib, 'اولین صارف (' + initialContrib + ') کو اطلاع دی جا رہی ہے');
			var notifytext = '\n{{جا:di-' + params.templatename + '-notice|1=' + mw.config.get('wgTitle');
			if (params.type === 'no permission') {
				notifytext += params.source ? '|source=' + params.source : '';
			}
			notifytext += '}} ~~~~';
			usertalkpage.setAppendText(notifytext);
			usertalkpage.setEditSummary('اطلاع رسانی: [[:' + Morebits.pageNameNorm + ']] پر حذف کا ٹیگ چسپاں کیا۔');
			usertalkpage.setChangeTags(Twinkle.changeTags);
			usertalkpage.setCreateOption('recreate');
			usertalkpage.setWatchlist(Twinkle.getPref('deliWatchUser'));
			usertalkpage.setFollowRedirect(true, false);
			usertalkpage.append();
		}

		// add this nomination to the user's userspace log, if the user has enabled it
		if (params.lognomination) {
			Twinkle.image.callbacks.addToLog(params, initialContrib);
		}
	},
	addToLog: function(params, initialContrib) {
		var usl = new Morebits.userspaceLogger(Twinkle.getPref('speedyLogPageName'));
		var csdparamTrans = {
			'reason': 'وجہ',
			'replacement': 'تبدیلی',
			'source': 'ماخذ'
		};
		usl.initialText =
				"یہ [[وپ:فحذ|فوری حذف شدگی]] کے لیے نامزد تمام صفحات کا نوشتہ ہے جسے اس صارف نے [[وپ:پلک|پلک]] کے ماڈیول فوری کی مدد سے نامزد کیا تھا۔\n\n" +
				'اگر آپ اس نوشتہ کو باقی نہیں رکھنا چاہتے ہیں تو [[وپ:پلک/ترجیحات|پلک کی ترجیحات]] سے اسے بند کر دیجیے، اور ' +
				'اس نوشتہ کو [[وپ:فحذ#ص1|فحذ ص1]] کے تحت فوری حذف کے لیے نامزد بھی کر دیجیے۔' +
				((Morebits.userIsSysop || Morebits.userIsEliminator) ? '\n\nیہ نوشتہ پلک کے ذریعہ فوری حذف کے لیے نامزد شدہ صفحات کا اندراج نہیں کرے گا۔' : '');

		var formatParamLog = function(normalize, csdparam, input) {
			if (normalize === 'ف5' && csdparam === 'replacement') {
				input = '[[:' + input + ']]';
			}
			return ' {' + csdparamTrans[csdparam] + normalize + ': ' + input + '}';
		};

		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 = ' ([{{fullurl:خاص:نوشتہ|page=' + mw.util.wikiUrlencode(mw.config.get('wgPageName')) + '}} نوشتہ])';

		var appendText = '# [[:' + Morebits.pageNameNorm + ']]' + fileLogLink + ': [[وپ:فحذ#' + params.normalized + '|فحذ ' + params.normalized + ']] کے تحت فوری حذف ({{سانچہ|di-' + params.templatename + '}})';

		['reason', 'replacement', 'source'].forEach(function(item) {
			if (params[item]) {
				extraInfo += formatParamLog(params.normalized, item, params[item]);
				return false;
			}
		});

		if (extraInfo) {
			appendText += '؛ مزید تفصیلات:' + extraInfo;
		}
		if (initialContrib) {
			appendText += '؛ {{userv|1=' + initialContrib + '}} کو خبر دے دی گئی';
		}
		appendText += ' ~~~~~\n';

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

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

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


// </nowiki>