میڈیاویکی:Gadget-CatMaker.js

ویکی اقتباس سے

یاددہانی: محفوظ کرنے کے بعد، تبدیلیاں دیکھنے کے لیے آپ کو اپنے متصفح (browser) کے ابطن (cache) کو خالی کرنا ہوگا۔

  • فائرفاکس/ سفاری: جب Reload طق کریں تو Shift دباکر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R-⌘)
  • گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
  • انٹرنیٹ ایکسپلورر: جب Refresh طق کریں تو Ctrl یا Ctrl-F5 دبائیں
  • اوپیرا: Tools → Preferences میں ابطن (cache) صاف کریں
// <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.wikiquote.org.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.wikiquote.org.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: 'enwikiquote',
			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: '',
			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.wikiquote.org.org/w/index.php?title=ویکیپیڈیا:روبہ_جات" target="ویکیپیڈیا:روبہ جات">ویکیپیڈیا:روبہ جات</a> کی مدد سے <a href="//ur.wikiquote.org.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 > 100) {
						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-cactions', '#', 'زمرہ ساز', 't-catmaker', 'تخلیق زمرہ جات بذریعہ آلہ زمرہ')).click(init);
	});
}(jQuery, mediaWiki));