MediaWiki:Linkscount.js

/** * @description MediaWiki integrated backlinks count tool */ (function {	if (['Whatlinkshere', 'GlobalUsage'].indexOf(mw.config.get('wgCanonicalSpecialPageName')) === -1) return;	var isGlobalUsagePage = mw.config.get('wgCanonicalSpecialPageName') === 'GlobalUsage';

var userLanguage = mw.config.get('wgUserLanguage'); var messages = (function {		var translations = {			ckb: {				linksCountText: 'بەستەرەکان: ',				transclusionCountText: 'ترانسکڵووژن: ',				fileLinkCountText: 'بەکارھێنانی خۆماڵیی پەڕگە: ',				fileGlobalLinkCountText: 'بەکارھێنانی سەرانسەریی پەڕگە: ',				countText: 'ژمارە',				invalidTitleText: ,				serverErrorText: ,				comma: '،'			},			de: {				linksCountText: 'Links: ',				transclusionCountText: 'Vorlageneinbindungen: ',				fileLinkCountText: 'lokale Dateiverwendung: ',				fileGlobalLinkCountText: 'globale Dateiverwendung: ',				countText: 'zählen',				invalidTitleText: 'ungültiger Titel',				serverErrorText: 'Serverfehler; klicke für einen weiteren Versuch',				comma: ','			},			en: {				linksCountText: 'links: ',				transclusionCountText: 'transclusions: ',				fileLinkCountText: 'file local usages: ',				fileGlobalLinkCountText: 'file global usages: ',				countText: 'count', invalidTitleText: 'invalid title', serverErrorText: 'server error, click to retry', comma: ',' },			fa: { linksCountText: 'پیوندها: ', transclusionCountText: 'تراگنجایش‌ها: ', fileLinkCountText: 'استفادهٔ محلی پرونده: ', fileGlobalLinkCountText: 'استفادهٔ سراسری پرونده: ', countText: 'تعداد', invalidTitleText: 'عنوان نادرست', serverErrorText: 'خطای سرور، برای تلاش مجدد کلیک کنید', comma: '،' },			he: { linksCountText: 'קישורים: ', transclusionCountText: 'הכללות: ', fileLinkCountText: 'שימוש מקומי בקבצים: ', fileGlobalLinkCountText: 'שימוש גלובלי בקבצים: ', countText: 'ספירה', invalidTitleText: 'כותרת לא חוקית', serverErrorText: 'שגיאת שרת, לחץ כדי לנסות שוב', comma: ',' },			hu: { linksCountText: 'Linkek: ', transclusionCountText: 'Beillesztések: ', fileLinkCountText: 'Fájlhivatkozások: ', fileGlobalLinkCountText: 'Globális fájlhivatkozások: ', countText: 'Hivatkozások száma', invalidTitleText: 'Érvénytelen cím', serverErrorText: 'Szerverhiba, kattints az újrapróbálkozáshoz', comma: ',' },			sd: { linksCountText: 'ڳنڌڻا: ', transclusionCountText: 'نتيجو: ', fileLinkCountText: 'عام طور تي فائيل استعمال: ', fileGlobalLinkCountText: 'گلوبل فائل استعمال: ', countText: 'ڳڻپ', invalidTitleText: 'غلط عنوان', serverErrorText: 'سرور جي غلطي، ٻيهر ڪوشش ڪرڻ لاء ڪلڪ ڪريو', comma: '،' },			sv: { linksCountText: 'länkar: ', transclusionCountText: 'inkluderingar: ', fileLinkCountText: 'lokal filanvändning: ', fileGlobalLinkCountText: 'global filanvändning: ', countText: 'antal', invalidTitleText: 'ogiltig titel', serverErrorText: 'serverfel, klicka för att försöka igen', comma: ',' },		};		return translations[userLanguage] ? translations[userLanguage] : translations.en; });	var finished;	function init {		finished = false;		$('#linkscount-tool').remove;		$('fieldset:first').append($(' ', {			id: 'linkscount-tool'		}).append(' ', $('', { text: '(' + messages.countText + ')' }).click(function (e) { e.preventDefault; finished = true; var title = mw.Title.newFromText($('#mw-whatlinkshere-target, input[name=target]').val); if (title === null) { mw.notify(messages.invalidTitleText); return; }			var button = $(this).css('color', 'lightgray'); var ns = title.getNamespaceId; var page = title.getMain; $.post('https://linkscount.toolforge.org/', {				namespace: isGlobalUsagePage ? 6 : ns,				p: page,				fromNamespace: $('#namespace').val,				invertFromNamespace: isGlobalUsagePage ? false : $('#nsinvert')[0].checked,				dbname: mw.config.get('wgDBname')			}).then(function (response) {				if (response['#error']) {					init;					mw.notify(messages.serverErrorText);					return;				}				var text = response.pagelinks.toLocaleString(userLanguage);				if (response.templatelinks) {					text = messages.transclusionCountText +						response.templatelinks.toLocaleString(userLanguage) +						messages.comma + ' ' + messages.linksCountText + text;				}				if (response.filelinks) {					text = messages.fileLinkCountText +						response.filelinks.toLocaleString(userLanguage) +						messages.comma + ' ' + (response.templatelinks ? text : messages.linksCountText + text);				}				if (response.globalfilelinks) {					text = messages.fileGlobalLinkCountText +						response.globalfilelinks.toLocaleString(userLanguage) +						messages.comma + ' ' + (response.templatelinks || response.filelinks ? text : messages.linksCountText + text);				}				button.replaceWith($(' ').text('(' + text + ')'));			}).catch(function {				init;				mw.notify(messages.serverErrorText);			}); })));	}

function reinit { if (finished) { init; }}

$.when(		mw.loader.load('mediawiki.Title'),		$.ready	).then(function {		init;		$('#namespace, #nsinvert').change(reinit);		$('input[name=target]').change(reinit);		$('#mw-whatlinkshere-target').keyup(reinit);	}); });