User:Yethrosh/tourwiki.js

// for installing, add importScript("User:محمد شعیب/tourwiki.js") to your common.js, like https://en.wikipedia.org/w/index.php?diff=620778090 (function (mw, $) {	if (mw.config.get('wgAction') !== 'view' || (mw.config.get('wgNamespaceNumber') !== 0 && mw.config.get('wgNamespaceNumber') !== 14)) {		return;	}	function faToken {		return $.ajax({ url: '//ur.wikipedia.org/w/api.php', data: { action: 'tokens', format: 'json', origin: location.protocol + '//' + location.hostname },			xhrFields: { withCredentials: true }		}).then(function (data) { return data.tokens.edittoken; });	}	function loadFaPage(title) {		return new mw.Api({ ajax: { url: location.protocol + '//ur.wikipedia.org/w/api.php' } }).get({ action: 'query', prop: 'revisions', titles: title, rvprop: 'content', format: 'json', origin: location.protocol + '//' + location.hostname }).then(function (data) { return $.map(data.query.pages, function (value) { return value; })[0].revisions[0]['*']; });	}	function saveFaPage(title, token, text, summary) {		return $.ajax({ url: '//ur.wikipedia.org/w/api.php', type: 'POST', data: { action: 'edit', title: title, text: text, summary: summary, nocreate: '', minor: '', token: token, format: 'json', origin: location.protocol + '//' + location.hostname },			xhrFields: { withCredentials: true }		}).then(function (data) { if (data.error && data.error.info) { mw.notify(data.error.info); throw data.error.info; }			if (data.edit && data.edit.nochange !== undefined) { throw 'no change!'; }		}, function (data) { mw.notify(data); });	}       var GENERAL_BOT = 'ویکیپیڈیا:درخواست تخلیق مضمون (روبالہ)';	var CITIES_BOT = 'ویکیپیڈیا:ویکی منصوبہ تخلیق مضامین شہر/درخواست تخلیق';	var CATEGORIES_BOT = 'ویکیپیڈیا:درخواست تخلیق زمرہ (روبالہ)';	var PEOPLE_BOT = 'ویکیپیڈیا:درخواست تخلیق مضمون (روبالہ)/افراد';	var OTHER_REQUESTS = 'ویکیپیڈیا:درخواست شدہ مضامین';

var requestingPages = { 'غیر فعال، اسے منتخب نہ کریں': GENERAL_BOT, 'وپ:شہر، شہر و رہائشی علاقہ جات': CITIES_BOT, 'غیر فعال، اسے منتخب نہ کریں': CATEGORIES_BOT, 'غیر فعال، اسے منتخب نہ کریں': PEOPLE_BOT, 'وپ:درخواست شدہ مضامین، برائے درخواست غیر روبہ جاتی مضامین': OTHER_REQUESTS };	function addRequest(requestFaPage, faName) { return $.when(faToken, loadFaPage(requestFaPage)).then(function (token, requests) {			var enName = mw.config.get('wgPageName').replace(/_/g, ' ');			if (requestFaPage !== OTHER_REQUESTS)				requests = requests + '\n*' + faName + '@' + mw.config.get('wgTitle');			else				requests = requests.replace( /(<!-- \*\*\*توجہ\*\*\*: نئی درخواستیں)/, '* ' + faName + ' (en:' + enName + ')' + '\n$1' );			return saveFaPage( requestFaPage, token, requests, 'درخواست تخلیق ' +  + enName +  + ' بذریعہ آلہ!' );		});	}	function suggestRequestPlace { if ($('.infobox.geography').length !== 0) { return CITIES_BOT; } else if ($('.infobox.biota, .infobox.haudio, .description a[href="/wiki/Single_(music)"]').length !== 0 ||				($('#coordinates').length !== 0 && $('.infobox.vcard .fn').length !== 0)) { return GENERAL_BOT; } else if (mw.config.get('wgNamespaceNumber') === 14) { return CATEGORIES_BOT; } else if ($('.infobox.vcard .fn').length !== 0) { return PEOPLE_BOT; }		return OTHER_REQUESTS; }	function pageExists(page) { return $.ajax({			url: '//ur.wikipedia.org/w/api.php',			data: {				action: 'query',				titles: page,				format: 'json',				origin: location.protocol + '//' + location.hostname			}		}).then(function (data) { return data.query.pages['-1'] === undefined; }); }	$.when($.ready, mw.loader.using('jquery.ui')).then(function {		// if already has a link to fawiki, give up		if ($('.interlanguage-link.interwiki-ur').length !== 0) { return; }

// styles mw.util.addCSS(			"#tourwiki-form * { font-family: Jameel Noori Nastaleeq, 'Alvi Nastaleeq', 'Droid Arabic Kufi', sans-serif !important; } " +			"#tourwiki-form .ui-dialog-buttonset { float: left; } " +			"#tourwiki-form .ui-dialog-titlebar-close { right: initial; left: .75em; } " +			"#tourwiki-form .ui-dialog-title { float: right; }"		);

$('#ca-tourwiki').remove; $(mw.util.addPortletLink($('#p-views').length !== 0 ? 'p-views' : 'p-cactions', '#', 'tourwiki!', 'ca-tourwiki', null, null, '#ca-view')).click(function (e) {			e.preventDefault;			$(' ', { dir: 'rtl', id: 'tourwiki-form', style: "position: relative;" }).append($(' ', {				style: 'margin-top: 0.4em;',				text: 'تخلیق بذریعہ: '			}).append($(' ', { id: 'tourwiki-select', style: 'padding: 1px; vertical-align: baseline; font-family: inherit' }).append( $.map(requestingPages, function (item, description) {					return $(' ', { value: item, text: description }).prop('disabled', mw.config.get('wgNamespaceNumber') === 14 && item !== CATEGORIES_BOT || mw.config.get('wgNamespaceNumber') === 0 && item === CATEGORIES_BOT);				}) )), $(' ', {				style: 'padding-top: 1em',				text: 'اردو عنوان: '			}).append($(' ', { dir: 'rtl', id: 'tourwiki-name', style: 'font-family: inherit; width: 50%' }).on('input', function { var that = $(this), page = that.val; if (page === ) { $('#tourwiki-status').html(); return; } if (mw.config.get('wgNamespaceNumber') == 14) { page = 'زمرہ:' + page; } pageExists(page).then(function (exists) {					if (page !== that.val) { // that request is no longer relevant						return;					}					if (!exists) {						$('#tourwiki-status').html(' ✓ «' + page + '» مناسب نام ہے۔');					} else {						$('#tourwiki-status').html(' ✗ «' + page + '» اس وقت موجود ہے!');					}				}); }), $(' ', {				id: 'tourwiki-status' }))).dialog({ width: 500, title: 'اردو ویکیپیڈیا میں درخواست تخلیق', buttons: [{ text: 'درخواست', title: 'اس پر کلک کرنے کے بعد آپ کی درخواست محفوظ ہوجائے گی، تاہم کچھ وقفہ کے بعد روبہ آپ کی درخواست مکمل کرے گا!', class: 'ui-button-blue', click: function { var faName = $('#tourwiki-name').val; var requestingPage = $('#tourwiki-select').val; if (!faName || !requestingPage) { return; } $(this).dialog('close'); addRequest(requestingPage, faName).then(function {							mw.notify('درخواست کامیابی سے درج کرلی گئی');						}, function  {							mw.notify('درخواست تخلیق نامکمل');						}); }				}],				close: function { $(this).remove; }			}).parent.prop('id', 'tourwiki-form');			$('#tourwiki-select').val(suggestRequestPlace);		}); }); }(mediaWiki, jQuery));