میڈیاویکی:TourwikiUpload.js

آزاد دائرۃ المعارف، ویکیپیڈیا سے

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

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

$(function () {
	'use strict';

	var enName = new mw.Uri().query.enName;
	$('#mw-htmlform-source').replaceWith($('<div>', {
		text: 'انگریزی ویکیپیڈیا سے خودکار منتقلی',
		id: 'tofawiki-image',
		style: 'font-size: large'
	}).prepend($('<img>', {
		src: 'https://en.wikipedia.org/w/thumb.php?f=' + enName.replace('File:', '') + '&w=140'
	})));
	$('[name=wpUpload]').click(function (e) {
		e.preventDefault();
		$(this).prop('disabled', 'disabled');
		mw.notify('براہ کرم انتظار کریں۔۔۔', { autoHide: false });
		imageNameToUrl(enName).then(getBlob).then(function (blob) {
			var formData = new FormData();
			formData.append('action', 'upload');
			formData.append('filename', $('#wpDestFile').val());
			formData.append('token', mw.user.tokens.get('csrfToken'));
			formData.append('format', 'json');
			formData.append('text', $('#wpUploadDescription').val());
			formData.append('comment', '[[وپ:ویکی معاون|ویکی معاون]] کی مدد سے خودکار طور پر انگریزی ویکیپیڈیا سے فائل ' + enName.replace('File:', '') + ' اپلوڈ کی گئی');
			formData.append('watchlist', $('#wpWatchthis').prop('checked') ? 'watch' : 'nochange');
			formData.append('ignorewarnings', $('#wpIgnoreWarning').prop('checked') ? '1' : '0');
			formData.append('file', blob);
			return $.ajax({
				url: mw.util.wikiScript('api'),
				contentType: false,
				processData: false,
				type: 'POST',
				data: formData
			});
		}).then(function () {
			location.href = mw.util.getUrl('تصویر:' + $('#wpDestFile').val());
		}, function (data) {
			mw.notify(data.error);
		});
	});
	
	function imageNameToUrl(name) {
		return new mw.Api({ ajax: { url: '//en.wikipedia.org/w/api.php' } }).get({
			action: 'query',
			titles: name,
			prop: 'imageinfo',
			iiprop: 'url',
			format: 'json',
			origin: location.protocol + '//' + location.hostname
		}).then(function (x) {
			return x.query.pages[Object.keys(x.query.pages)[0]].imageinfo[0].url;
		});
	}
	
	function getBlob(url) {
		var defer = $.Deferred();
		// http://stackoverflow.com/a/17682424
		var xhr = new XMLHttpRequest();
		xhr.onreadystatechange = function () {
			if (this.readyState == 4 && this.status == 200) {
				defer.resolve(this.response);
			}
		};
		xhr.open('GET', url);
		xhr.responseType = 'blob';
		xhr.send();
		return defer;
	}
	
	function loadPageTextAndCategoriesEn(title) {
		return new mw.Api({ ajax: { url: '//en.wikipedia.org/w/api.php' } }).get({
			action: 'query',
			prop: 'revisions|categories',
			titles: title,
			clprop: 'hidden',
			rvprop: 'content',
			format: 'json',
			origin: location.protocol + '//' + location.hostname
		}).then(function (data) {
			var page = data.query.pages[Object.keys(data.query.pages)[0]];
			return {
				text: page.revisions[0]['*'],
				categories: page.categories.map(function (x) { return x.title.replace(/^Category:/, ''); })
			};
		});
	}
	
	var PAGENAME_PLACEHOLDER = 'یہاں مضمون کا عنوان درج کریں';
	loadPageTextAndCategoriesEn(enName).then(function (page) {
		var text = page.text, categories = page.categories.join('\n');
		$('#mw-htmlform-description').parent().after($('<textarea>', {
			disabled: 'disabled',
			dir: 'LTR',
			style: 'width: 600px; height: 400px;'
		}).val(text));
		
		var license, template, description;
 		if (/Album covers/i.test(categories)) {
			license = 'غلاف البم';
			template = 'دلیل استعمال برائے غیر آزاد غلاف البم';
			description = 'غلاف';
		} else if (/Coat of arms/i.test(categories)) {
			license = 'غیر آزاد علامت';
			template = 'دلیل استعمال غیر آزاد';
			description = 'غیر آزاد علامت';
		} else if (/stamp/i.test(categories)) {
			license = 'غیر آزاد ڈاک ٹکٹ';
			template = 'دلیل استعمال غیر آزاد';
			description = 'ڈاک ٹکٹ';
		} else if (/Currency‎/i.test(categories)) {
			license = 'غیر آزاد کرنسی';
			template = 'دلیل استعمال غیر آزاد';
			description = 'کرنسی کی تصویر';
		} else if (/Film poster|video covers|movie posters/i.test(categories)) {
			license = 'غلاف فلم';
			template = 'دلیل استعمال برائے غیر آزاد غلاف فلم';
			description = 'فلم کا غلاف';
		} else if (/Software covers/i.test(categories)) {
			license = 'غیر آزاد غلاف سافٹ ویئر';
			template = 'دلیل استعمال غیر آزاد';
			description = 'غلاف';
		} else if (/game covers/i.test(categories)) {
			license = 'غیر آزاد غلاف ویڈیو گیم';
			template = 'دلیل استعمال غیر آزاد';
			description = 'غلاف';
		} else if (/Book covers/i.test(categories)) {
			license = 'غلاف کتاب';
			template = 'دلیل استعمال غیر آزاد';
			description = 'سرورق';
		} else if (/Magazine covers|newspaper covers|journal covers‎/i.test(categories)) {
			license = 'غیر آزاد مجلہ سرورق';
			template = 'دلیل استعمال غیر آزاد';
			description = 'سرورق';
		} else if (/audio samples|audio clips/i.test(categories)) {
			license = 'غیر آزاد صوتی نمونہ';
			template = 'دلیل استعمال غیر آزاد';
			description = 'صوتی نمونہ';
		} else if (/video samples|Fair use media/i.test(categories)) {
			license = 'غیر آزاد ویڈیو نمونہ';
			template = 'دلیل استعمال غیر آزاد';
			description = 'ویڈیو نمونہ';
		} else if (/logos|symbols|seals|icon/i.test(categories)) {
			license = 'غیر آزاد لوگو';
			template = 'دلیل استعمال برائے غیر آزاد لوگو';
			description = 'لوگو';
		} else if (/Fair use character artwork/i.test(categories)) {
			license = 'غیر آزاد کردار';
			template = 'دلیل استعمال غیر آزاد';
			description = 'تصویر';
		} else if (/Non-free posters/i.test(categories)) {
			license = 'پوسٹر';
			template = 'دلیل استعمال غیر آزاد';
			description = 'پوسٹر/اشتہار';
		} else if (/game covers/i.test(categories)) {
			license = 'غیر آزاد غلاف ویڈیو گیم';
			template = 'دلیل استعمال برائے غیر آزاد غلاف ویڈیو گیم';
			description = 'غلاف ویڈیو گیم';
		} else if (/{{Non-free biog-pic/i.test(text)) {
			license = 'شخصیت کی غیر آزاد تصویر';
			template = 'دلیل استعمال غیر آزاد';
			description = 'تصویر';
		} else if (/public domain/i.test(categories)) {
			license = 'PD-USonly';
			template = 'معلومات';
			description = 'تصویر';
		} else if (/abroad/i.test(categories)) {
			license = 'PD-US-1923-abroad';
			template = 'معلومات';
			description = 'تصویر';
		} else {
			license = 'منصفانہ|تصویر|تصویر کش یا ناشر';
			template = 'دلیل استعمال غیر آزاد';
			description = 'تصویر';
		}
		if (template === 'معلومات') {
			$('#wpUploadDescription').val([
				'{{معلومات' ,
				'| وضاحت      = ' + description + ' [[' + PAGENAME_PLACEHOLDER + ']]',
				'| ماخذ         = [[:en:' + enName + '|انگریزی ویکیپیڈیا]]',
				'| انگریزی      = صارفین ویکیپیڈیا کے صارفین',
				'| اجازت نامہ    = {' + '{' + license + '}}',
				'}}'
			].join('\n'));
		} else {
			$('#wpUploadDescription').val([
				'{{' + template,
				'| Description       = ' + description + ' [[' + PAGENAME_PLACEHOLDER + ']]',
				'| Source          = [[:en:' + enName + '|انگریزی ویکیپیڈیا]]',
				'| Article         = ' + PAGENAME_PLACEHOLDER,
				'| Use   = خانہ معلومات میں',
				'| Minimality = ہاں',
				'| Purpose          = برائے استعمال در [[' + PAGENAME_PLACEHOLDER + ']]',
				'| Replaceability       = نہیں',
				'| Other information  = ',
				'}}',
				'',
				'== اجازت نامہ ==',
				'{' + '{' + license + '}}'
			].join('\n'));
		}
		return (text.match(/\|Article\s*=\s*(.+)/i) || text.match(/''\[\[(.+?)\]\]''/) || [])[1];
	}).then(replaceFairUsedOnPlaceholder);

	function replaceFairUsedOnPlaceholder(enFairused) {
		if (!enFairused) { return false; }
		return new mw.Api({ ajax: { url: '//en.wikipedia.org/w/api.php' } }).get({
			action: 'query',
			format: 'json',
			redirects: '',
			titles: enFairused,
			origin: location.protocol + '//' + location.hostname
		}).then(function (result) {
			return new mw.Api({ ajax: { url: '//www.wikidata.org/w/api.php' } }).get({
				action: 'wbgetentities',
				format: 'json',
				sites: 'enwiki',
				titles: (result.query.pages[Object.keys(result.query.pages)[0]] || {}).title,
				origin: location.protocol + '//' + location.hostname
			});
		}).then(function (data) {
			return (data.entities[Object.keys(data.entities)[0]].sitelinks.urwiki || {}).title;
		}).then(function (fairUsedOn) {
			if (!fairUsedOn) {
				mw.notify('معلوم ہوتا ہے کہ ابھی یہ تصویر کسی مضمون میں مستعمل نہیں ہے');
			} else {
				$('#wpUploadDescription').val(
					$('#wpUploadDescription').val().replace(new RegExp(PAGENAME_PLACEHOLDER, 'g'), fairUsedOn)
				);
			}
		});
	}
});