واپرائيندڙ:Obaid Raza/common.js

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

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

  • فائرفاڪس: جڏهن 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 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="//sd.wikipedia.org/w/index.php?title=ویکیپیڈیا:روبہ_جات" target="وڪيپيڊيا:بوٽس">وڪيپيڊيا:بوٽس</a> کی مدد سے <a href="//sd.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 > 1000) {
						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));