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

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

// <nowiki> // DO NOT REMOVE THIS LINE EVER
/*jslint browser: true, white: true*/
/*global mediaWiki, jQuery*/
/*!
 * @author User:Ebraminio, User:Yamaha5
 */
(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 urWikiName(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 === 'ur';
				})[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(urlink, enlink) {
		enlink = enlink.replace(/\_/g, ' ');
		return urWikiName(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 urWikiName(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(
						urlink,
						catText,
						'زمرہ ساز کی مدد سے [[:en:' + enlink + ']] بنایا گیا',
						function () {
							mw.notify('زمرہ ' + urlink + ' بن گیا۔');
						}
					);
				});
			});
		});
	}

	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: '',
			bot: true,
			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));