میڈیاویکی:Gadget-twinkleimage.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:              File pages with a corresponding file which is local (not on Commons)
 * Config directives in:   TwinkleConfig
 */

Twinkle.image = function twinkleimage() {
	if (mw.config.get('wgNamespaceNumber') === 6 &&
			!document.getElementById("mw-sharedupload") &&
			document.getElementById("mw-imagepage-section-filehistory")) {

		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( "رہنمائے پلک", "en:WP:TW/DOC#image" );

	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: 'no source',
					checked: true,
					tooltip: 'فائل کے ماخذ کی معلومات درج نہیں'
				},
				{
					label: 'اجازت نامہ نہیں (مسح ف4)',
					value: 'no license',
					tooltip: 'فائل کے کاپی رائٹ کے متعلق معلومات درج نہیں'
				},
				{
					label: 'ماخذ اور اجازت نامہ نہیں (مسح ف4)',
					value: 'no source no license',
					tooltip: 'فائل کے ماخذ اور کاپی رائٹ دونوں کی معلومات درج نہیں'
				},
				{
					label: 'یتیم منصفانہ استعمال (مسح ف5)',
					value: 'orphaned fair use',
					tooltip: 'فائل کا اجازت نامہ نہیں ہے اور اسے محض منصفانہ استعمال کے تحت استعمال کی اجازت دی گئی ہے تاہم یہ فائل ویکیپیڈیا میں کہیں بھی مستعمل نہیں ہے'
				},
				{
					label: 'منصفانہ استعمال کی وجہ نہیں (مسح ف6)',
					value: 'no fair use rationale',
					tooltip: 'تصویر کو منصفانہ استعمال کے تحت استعمال کی اجازت دی گئی ہے لیکن یہ وضاحت نہیں کی گئی کہ یہ اجازت کس پالیسی کے تحت ہے'
				},
				{
					label: 'منصفانہ استعمال کی متنازع وجہ (مسح ف7)',
					value: 'disputed fair use rationale',
					tooltip: 'فائل کے منصفانہ استعمال کی جو وجہ درج کی گئی ہے وہ متنازع ہے'
				},
				{
					label: 'قابل تبدیل منصفانہ استعمال (مسح ف7)',
					value: 'replaceable fair use',
					tooltip: 'منصفانہ استعمال کے تحت اجازت یافتہ اس فائل کا متبادل موجود ہے جس میں یہی معلومات درج ہے'
				},
				{
					label: 'اجازت کا ثبوت نہیں (مسح ف11)',
					value: 'no permission',
					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',
					name: 'non_free',
					list: [
						{
							label: 'غیر آزاد',
							tooltip: 'فائل کو منصفانہ استعمال کے تحت استعمال کی اجازت دی گئی ہے'
						}
					]
				} );
		/* falls through */
		case 'اجازت نامہ نہیں':
			work_area.append( {
					type: 'checkbox',
					name: 'derivative',
					list: [
						{
							label: 'Derivative work which lacks a source for incorporated works',
							tooltip: 'File is a derivative of one or more other works whose source is not specified'
						}
					]
				} );
			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: 'تبدیلی: '
				} );
			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 type, non_free, source, reason, replacement, derivative;

	var notify = event.target.notify.checked;
	var types = event.target.type;
	for( var i = 0; i < types.length; ++i ) {
		if( types[i].checked ) {
			type = types[i].values;
			break;
		}
	}
	if( event.target.non_free ) {
		non_free = event.target.non_free.checked;
	}
	if( event.target.source ) {
		source = event.target.source.value;
	}
	if( event.target.reason ) {
		reason = event.target.reason.value;
	}
	if( event.target.replacement ) {
		replacement = event.target.replacement.value;
	}
	if( event.target.derivative ) {
		derivative = event.target.derivative.checked;
	}

	var csdcrit;
	switch( 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: unknown criterion" );
	}

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

	var params = {
		'type': type,
		'templatename': templatename,
		'normalized': csdcrit,
		'non_free': non_free,
		'source': source,
		'reason': reason,
		'replacement': replacement,
		'lognomination': lognomination
	};
	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( notify ) {
		wikipedia_page.lookupCreator(Twinkle.image.callbacks.userNotification);
	} else {
		// add to CSD log if desired
		if (lognomination) {
			params.fromDI = true;
			Twinkle.speedy.callbacks.user.addToLog(params, null);
		}
		// No auto-notification, display what was going to be added.
		var noteData = document.createElement( 'pre' );
		noteData.appendChild( document.createTextNode( "{{subst:di-" + templatename + "-notice|1=" + mw.config.get('wgTitle') + "}}~~~~" ) );
		Morebits.status.info( 'Notification', [ 'اولین اپلوڈ کنندہ کو حسب ذیل/یکساں معلومات بھیجی جائیں گی:', 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={{subst:#time: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";

		pageobj.setPageText(tag + text);
		pageobj.setEditSummary("اس فائل کو [[وپ:مسح#" + params.normalized + "|مسح " + params.normalized + "]] (" + params.type + ") کی بنیاد پر فوری حذف شدگی کے لیے نامزد کیا گیا" + Twinkle.getPref('summaryAd'));
		switch (Twinkle.getPref('deliWatchPage')) {
			case 'yes':
				pageobj.setWatchlist(true);
				break;
			case 'no':
				pageobj.setWatchlistFromPreferences(false);
				break;
			default:
				pageobj.setWatchlistFromPreferences(true);
				break;
		}
		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{{subst:di-" + params.templatename + "-notice|1=" + mw.config.get('wgTitle');
			if (params.type === 'اجازت کا ثبوت نہیں') {
				notifytext += params.source ? "|source=" + params.source : "";
			}
			notifytext += "}}~~~~";
			usertalkpage.setAppendText(notifytext);
			usertalkpage.setEditSummary("اطلاع رسانی: [[:" + Morebits.pageNameNorm + "]] پر حذف کا ٹیگ چسپاں کیا۔" + Twinkle.getPref('summaryAd'));
			usertalkpage.setCreateOption('recreate');
			switch (Twinkle.getPref('deliWatchUser')) {
				case 'yes':
					usertalkpage.setWatchlist(true);
					break;
				case 'no':
					usertalkpage.setWatchlistFromPreferences(false);
					break;
				default:
					usertalkpage.setWatchlistFromPreferences(true);
					break;
			}
			usertalkpage.setFollowRedirect(true);
			usertalkpage.append();
		}

		// add this nomination to the user's userspace log, if the user has enabled it
		if (params.lognomination) {
			params.fromDI = true;
			Twinkle.speedy.callbacks.user.addToLog(params, initialContrib);
		}
	}
};
})(jQuery);


//</nowiki>