ذريعات وڪي: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.sdwiki || {}).title;
		}).then(function (fairUsedOn) {
			if (!fairUsedOn) {
				mw.notify('معلوم ٿي پيو ته هي تصوير ڪنهن مضمون ۾ مستقل ناهي');
			} else {
				$('#wpUploadDescription').val(
					$('#wpUploadDescription').val().replace(new RegExp(PAGENAME_PLACEHOLDER, 'g'), fairUsedOn)
				);
			}
		});
	}
});