ميډياويکي:TopswikiFinal.js

د ويکيپېډيا، وړیا پوهنغونډ له خوا

د نور تفصيل لپاره د غځول په تنۍ کلېک وکړئيادښت: د غوره توبونو د خوندي کولو وروسته، خپل د کتنمل (بروزر) ساتل شوې حافظه تازه کړی.د نور تفصيل لپاره د غځول په تنۍ کلېک وکړئ.

  • فايرفاکس/ سفري: په دې کتنمل کې د Reload د ټکوهلو په وخت د Shift تڼۍ نيولې وساتی، او يا هم Ctrl-F5 يا Ctrl-Rتڼۍ کېښکاږۍ (په Apple Mac کمپيوټر باندې ⌘-R کېښکاږۍ)
  • گووگل کروم: په دې کتنمل کې د Ctrl-Shift-R تڼۍ کېښکاږۍ (د مک لپاره ⌘-Shift-R)
  • انټرنټ اېکسپلورر: په دې کتنمل کې د Refresh د ټکوهلو په وخت کې د Ctrl تڼۍ کېښکاږلې ونيسۍ، او يا هم د Ctrl-F5 تڼۍ کېښکاږۍ
  • اوپرا: په دې کتنمل کې د خپل براوزر ساتل شوې حافظه پدې توگه سپينولی شی Tools→Preferences
لاسوند[جوړول]
// Author: User:Ebrahim
$(function () {
	'use strict';
	if (!$('#t-wikibase').length && $('.interlanguage-link').length && $('.wbc-editpage').length) {         
		mw.notify('د ویکي تړنې انتقال و ویکيډاټا ته، مهرباني وکړئ مخ مه تړئ...', { autoHide: false });
	}
	function wikidataToken() {
		return $.ajax({
			url: '//www.wikidata.org/w/api.php',
			data: {
				action: 'query',
				meta: 'tokens',
				format: 'json',
				origin: location.protocol + '//' + location.hostname
			},
			xhrFields: { withCredentials: true }
		}).then(function (data) {
			var token = data.query.tokens.csrftoken;
			if (token === '+\\') {
				// not logged in
				return $.Deferred().reject('login');
			} else {
				return token;
			}
		});
	}
	
	function getWikidataId(enTitle) {
		return new mw.Api({ ajax: { url: '//www.wikidata.org/w/api.php' } }).get({
			action: 'wbgetentities',
			format: 'json',
			sites: 'enwiki',
			titles: enTitle,
			props: 'info',
			origin: location.protocol + '//' + location.hostname
		}).then(function (x) {
			return x.entities[Object.keys(x.entities)[0]].id;
		});
	}
	
	function addWikidataSitelink(token, wikidataId, title, site) {
		return $.ajax({
			url: '//www.wikidata.org/w/api.php',
			type: 'POST',
			data: {
				action: 'wbsetsitelink',
				format: 'json',
				id: wikidataId,
				linksite: site,
				linktitle: title,
				bot: '1',
				token: token,
				origin: location.protocol + '//' + location.hostname
			},
			xhrFields: { withCredentials: true }
		}).then(function (data) {
			if (data.error) {
				return $.Deferred().reject(data);
			} else {
				return data;
			}
		});
	}
	
	function loadPage(title) {
		return new mw.Api().get({
			action: 'query',
			prop: 'revisions',
			titles: title,
			rvprop: 'content',
			format: 'json'
		}).then(function (data) {
			return data.query.pages[Object.keys(data.query.pages)[0]].revisions[0]['*'];
		});
	}
	
	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')
		});
	}
	
	function purgePage(title, site) {
		return new mw.Api().post({
			action: 'purge',
			format: 'json',
			titles: title,
			forcelinkupdate: '1'
		});
	}
	
	function purgePageEn(title, site) {
		return new mw.Api({ ajax: { url: '//en.wikipedia.org/w/api.php' } }).post({
			action: 'purge',
			format: 'json',
			titles: title,
			forcelinkupdate: '1',
			origin: location.protocol + '//' + location.hostname
		});
	}
	
	var faTitle = mw.config.get('wgPageName');
	
	function trigFillcat() {
		if (mw.config.get('wgNamespaceNumber') !== 14) { return; }
		var defer = $.Deferred();
		$.get('//tools.wmflabs.org/rezabot/hamsang_page.php', { title: psTitle }).then(function () {
			return $.get('//tools.wmflabs.org/rezabot/fillcat.php', { title: psTitle });
		}).then(defer.resolve, defer.resolve);
		mw.notify('د وړکړل شوي وېشنيزې غوښتنې ډکول.', { autoHide: false });
		return defer;
	}

	function trigMissedRef() {
		if (mw.config.get('wgNamespaceNumber') !== 0) { return; }
		if ($('#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B5%D9%81%D8%AD%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D8%A8%D8%A7_%DB%8C%D8%A7%D8%AF%DA%A9%D8%B1%D8%AF_%D8%AE%D8%B1%D8%A7%D8%A8_(%D9%81%D9%82%D8%AF%D8%A7%D9%86_%D9%85%D9%86%D8%A8%D8%B9)"]').length === 0) {return; } //وېشنيزه:خراب سرچينه لرونکي مخونه
		var defer = $.Deferred();
		$.get('//tools.wmflabs.org/dexbot/e.php', {title: psTitle}).then(defer.resolve, defer.resolve);
		mw.notify('د ناموجودې سرچينې غوښتنه', { autoHide: false });
		return defer;
	}

	function trigMissedFileUpload() {
		if ($('#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D8%B5%D9%81%D8%AD%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D8%AF%D8%A7%D8%B1%D8%A7%DB%8C_%D9%BE%DB%8C%D9%88%D9%86%D8%AF_%D8%AE%D8%B1%D8%A7%D8%A8_%D8%A8%D9%87_%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87"]').length === 0){return;}//وېشنيزه:دوتنې_ته_خراب_تړنې_لرونکې_مخونه
		if (mw.config.get('wgNamespaceNumber') !== 0) { return; }
		if ($('[class=new][title^="دوتنه:"]').length === 0) { return; }
		var defer = $.Deferred();
		$.get('//tools.wmflabs.org/rezabot/uploadfairuse.php', { title: psTitle }).then(defer.resolve, defer.resolve);
		mw.notify('د منصفانه ناموجودې دوتنې پورته کولو غوښتنه ورکړل شوه.', { autoHide: false });
		return defer;
	}

	function putHiddenWikidataPage() {
		$('<iframe>', {
			src: "https://www.wikidata.org/wiki/Q3",
			style: "display: none;"
		}).insertAfter('#content');
	}
	
	function refresh() {
		location.href = mw.util.getUrl(psTitle);
	}

	var enTitle = new mw.Uri().query.enName;
	$("#ca-abar-awzar").hide(); // ابراوزار د تړنې انتقال تر وخته و ویکيډاتا ته دې پټ وي
	$.when(wikidataToken(), getWikidataId(enTitle), mw.loader.using('mediawiki.util')).then(function (token, id) {
		return addWikidataSitelink(token, id, psTitle, 'pswiki');
	}).then(function () {
		return mw.config.get('wgNamespaceNumber') === 10
			? purgePage(psTitle) // just purge is enough for templates (ns 10)
			: loadPage(psTitle).then(function (text) {
				return savePage(psTitle, text.replace(/\[\[en:.*/, ''), 'د ویکي تړنې اوتوماتيکه لېږیدنه و ویکيډاټا ته');
			});
	}).then(function () {
		return purgePageEn(enTitle);
	}).then(trigFillcat, trigFillcat).then(function () {
		mw.notify('د بل ویکي همډوله وېشنيزه په کامیبابي سره جوړ شوه.');
	}, function () {
		putHiddenWikidataPage();
		return $.get('//tools.wmflabs.org/dexbot/interwikidata.php', { page: psTitle, en: enTitle });
	}).then(trigFillcat, trigFillcat).then(trigMissedFileUpload, trigMissedFileUpload).then(trigMissedRef, trigMissedRef).then(refresh, refresh);
});