ذريعات وڪي:Gadget-CatMaker.js

کليل ڄاڻ چيڪلي، وڪيپيڊيا مان

تفصيل جي لاءِ ڪلڪ ڪريويادگيري: محفوظ ڪرڻ کانپوءِ تازين تبديلن کي کي ڏسڻ جي لاءِ توهان کي پنهنجي برائوزر جي ڪيش کي صاف ڪرڻ جي ضرورت آهي.

  • فائرفاڪس: جڏهن Reload تي ڪلڪ ڪريو ته Shift دٻائي رکو یا Ctrl-F5 یا Ctrl-R دٻايو (Mac تي R-⌘)
  • گوگل ڪروم: Ctrl-Shift-R دٻايو (Mac تي Shift-R-⌘)
  • انٽرنيٽ ايڪسپلورر: جڏهن Refresh تي ڪلڪ ڪريو ته Ctrl یا Ctrl-F5 دٻايو
  • اوپيرا: Tools → Preferences ۾ وڃو ۽ ڪيش صاف ڪريو
دستاويز[تخليق]
(function ($, mw) {
	'use strict';

	function createPage(title, text, summary, callback) {
		return new mw.Api().post({
			action: 'edit',
			title: title,
			text: text,
			summary: summary,
			createonly: '',
			minor: '',
			token: mw.user.tokens.get('csrfToken')
		}).then(function (data) {
			if (data.error && data.error.info) {
				mw.notify(title + ' ناڪام: ' + data.error.info);
			} else {
				callback();
			}
			return data;
		}, function (data) {
			mw.notify(title + ' ناڪام: ' + data);
			return data;
		});
	}

	function sdWikiName(title) {
		return $.ajax({
			url: '//en.wikipedia.org/w/api.php',
			data: {
				action: 'query',
				prop: 'langlinks',
				titles: title,
				redirects: 1,
				format: 'json',
				lllimit: 500
			},
			dataType: 'jsonp'
		}).then(function (data) {
			try {
				return $.grep($.map(data.query.pages, function (x) { return x; })[0].langlinks, function (x) {
					return x.lang === 'sd';
				})[0]['*'];
			} catch (ignore) { }
		});
	}

	function catParents(title) {
		return $.ajax({
			url: '//en.wikipedia.org/w/api.php',
			data: {
				action: 'query',
				prop: 'categories',
				titles: title,
				clshow: '!hidden',
				cllimit: 500,
				format: 'json'
			},
			dataType: 'jsonp'
		}).then(function (data) {
			try {
				return $.map($.map(data.query.pages, function (x) { return x; })[0].categories, function (x) {
					return x.title;
				});
			} catch (ignore) { }
		});
	}

	function getWikidataEntity(entitle) {
		return new mw.Api({ ajax: { url: '//www.wikidata.org/w/api.php' } }).get({
			action: 'wbgetentities',
			format: 'json',
			sites: 'enwiki',
			titles: entitle,
			normalize: 'true',
			origin: window.location.protocol + '//' + window.location.hostname
		}).then(function (x) { return $.map(x.entities, function (x) { return x; })[0]; });
	}

	function commonsCatFromEntity(entity) {
		try {
			return entity.claims.P373[0].mainsnak.datavalue.value;
		} catch (ignore) { }
	}

	function startCat(sdlink, enlink) {
		enlink = enlink.replace(/\_/g, ' ');
		return sdWikiName(enlink).then(function (x) {
			if (x) {
				mw.notify('زمرو پهرين کان موجود آهي');
				return;
			}
			return catParents(enlink).then(function (x) {
				if (!x) {
					mw.notify('صفحو "' + enlink + '" هدف وڪي ۾ موجود ناهي يا زمرو موجود ناهي');
					return;
				}
				return $.when.apply(null, $.map(x, function (y) {
					return sdWikiName(y);
				})).then(function () {
					var catText = $.map(arguments, function (x) {
							return '[[' + x + ']]';
						}).join('\n') + '\n[['+'en:' + enlink + ']]';
					catText = catText.replace(/\[\[undefined\]\]/g, '');
					catText = catText.replace(/\n\n/g, '\n');
					catText = catText.trim();
					return createPage(
						sdlink,
						catText,
						'تخلیق زمرو مطابق [[:en:' + enlink + ']] بذریعا زمرو ساز اوزار',
						function () {
							mw.notify('تخلیق ' + sdlink + ' ڪاميابي سان مڪمل.');
						}
					);
				});
			});
		});
	}

	function loadPage(title) {
		return new mw.Api().get({
			action: 'query',
			prop: 'revisions',
			titles: title,
			rvprop: 'content',
			format: 'json'
		}).then(function (data) {
			return $.map(data.query.pages, function (value) { return value; })[0].revisions[0]['*'];
		});
	}
 
	/**
	 * Save a page
	 */
	function savePage(title, text, summary) {
		return new mw.Api().post({
			action: 'edit',
			title: title,
			text: text,
			summary: summary,
			nocreate: '',
			minor: '',
			token: mw.user.tokens.get('csrfToken')
		}).then(function (data) {
			if (data.error && data.error.info) {
				mw.notify(data.error.info);
			}
		}, function (data) {
			mw.notify(data);
		});
	}

	function init(e) {
		e.preventDefault();
		$('<div>' +
			'<div style="width: 40em">زمرہ جات تخلیق کرنے کے لیے درج ذیل مثالیں ملاحظہ فرمائیں:<br>زمرہ1@Cateogry1<br>زمرہ2@Cateogry2<br>زمرہ3@Cateogry3</div><br><B>اہم نکات:</B><br><B>1-</B> نو تخلیق شدہ زمرے  چند گھنٹوں کے بعد <a href="//ur.wikipedia.org/w/index.php?title=ویکیپیڈیا:روبہ_جات" target="ویکیپیڈیا:روبہ جات">ویکیپیڈیا:روبہ جات</a> کی مدد سے <a href="//ur.wikipedia.org/w/index.php?title=ویکیپیڈیا:ویکی_ڈیٹا" target="ویکیپیڈیا:ویکی ڈیٹا">ویکیپیڈیا:ویکی ڈیٹا</a> سے منسلک ہو جائیں گے، جس کے بعد ہی دوسرے خودکار ذرائع سے ان کو صفحات پر لگایا جائے گا؛ تاہم اگر آپ چاہیں تو فوری طور پر خود ان زمرہ جات کو ویکی ڈیٹا سے مربوط کر سکتے ہیں، اور انہیں صفحات پر استعمال کر سکتے ہیں۔<br><B>2-</B>جو زمرے انگریزی ویکی پر موجود نہیں وہ نہیں بنائے جا سکیں گے۔<br>' +
			'<textarea style="width: 100%; background-color: yellow;" placeholder="زمرہ1@Cateogry1" id="catmakerinput" rows="7"></textarea>' +
			'</div>'
			).dialog({
			modal: true,
			width: 700,
			buttons: [{
				id: 'catmaker-button-import',
				text: 'تخلیق زمرو',
				click: function () {
					var formInput = $('#catmakerinput').val();
					formInput = formInput.replace('*', '').replace('#', '').replace('---', '@')
					if (formInput === '') { mw.notify('براہ کرم درست اندراج کریں'); return; }
					var requests = formInput.trim().split('\n');
					if (requests.length > 10000) {
						loadPage('وڪيپيڊيا:وڪي منصوبو زمرا/درخواست تخليق').then(function (content) {
							return savePage('وڪيپيڊيا:وڪي منصوبو زمرا/درخواست تخليق', content + '\n*' + requests.join('\n*').replace(/@/g, '---'), 'مدد لاء پڇو [[ذريعات وڪي:Gadget-CatMaker.js|زمرو ساز اوزار]]').then(function () {
								mw.notify('آپ کی درخواستیں روبہ سے بنانے کے لیے رکھ دی گئی ہیں، براہ کرم جانچ لیں۔');
								window.location = mw.util.getUrl('وڪيپيڊيا:وڪي منصوبو زمرا/درخواست تخليق', { action: 'history' });
							});
						});
						return;
					}
					$.when.apply(null, $.map(requests, function (x) {
						var req = x.replace(/زمرو:/, '').replace(/Category:/i, '').split('@');
						if (req.length !== 2) { return; }
						return startCat('زمرو:' + req[0], 'Category:' + req[1]);
					})).then(function () {
						mw.notify('تخلیق زمرو مڪمل، مهرباني ڪري جانچ ڪيو.');
						window.location = mw.util.getUrl('Special:Contributions/' + mw.config.get('wgUserName'));
					});
				}
			}]
		});
	}

	$(function () {
		mw.util.addCSS('#t-catmaker { font-weight: bold; }');
		$(mw.util.addPortletLink('p-tb', '#', 'زمرو ساز', 't-catmaker', 'تخلیق زمرا بذریعا اوزار زمرو')).click(init);
	});
}(jQuery, mediaWiki));