ميدياويكي:Gadget-Linkscount.js

من كوبتيكبيديا
اذهب إلى التنقل اذهب إلى البحث

ملاحظة: بعد النشر، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.

  • فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
  • جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
  • إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
  • أوبرا: اضغط Ctrl-F5.
// https://www.wikidata.org/wiki/MediaWiki:Linkscount.js
//MediaWiki integrated backlinks count tool
$(function () {
	if (mw.config.get('wgCanonicalSpecialPageName') !== 'Whatlinkshere') return;

	var userLanguage = mw.config.get('wgUserLanguage');
	var messages = (function () {
		var translations = {
			en: {
				linksCountText: 'links: ',
				transclusionCountText: 'transclusions: ',
				countText: 'count',
				comma: ','
			},
			ar: {
				linksCountText: 'الوصلات: ',
				transclusionCountText: 'التضمينات: ',
				countText: 'العداد',
				comma: '،'
			}
	    };
	    return translations[userLanguage]
	    	? translations[userLanguage]
	    	: translations.en;
	}());
	
	var finished;
	function init() {
		finished = false;
		$('#linkscount-tool').remove();
		$('h1').append($('<span>', {
			id: 'linkscount-tool'
		}).append(' ', $('<a>', {
			text: ' (' + messages.countText + ')'
		}).click(function (e) {
			e.preventDefault();
			finished = true;
			var button = $(this).css('color', 'lightgray');
			var page = $('#mw-whatlinkshere-target').val();
			var ns = 0;
			if (page.indexOf(':') !== -1) {
				var possibleNs = page.split(':')[0].toLowerCase();
				if (Object.keys(mw.config.get('wgNamespaceIds')).indexOf(possibleNs) !== -1) {
					ns = mw.config.get('wgNamespaceIds')[possibleNs];
					page = page.split(':').slice(1).join(':');
				}
			}
			$.post('//tools.wmflabs.org/linkscount/', {
				namespace: ns,
				p: page,
				fromNamespace: $('#namespace').val(),
				invertFromNamespace: $('#nsinvert')[0].checked,
				dbname: mw.config.get('wgDBname')
			}).then(function (response) {
				var text = response.pagelinks.toLocaleString(userLanguage);
				if (response.templatelinks) {
					text = messages.transclusionCountText +
						response.templatelinks.toLocaleString(userLanguage) +
						messages.comma + ' ' + messages.linksCountText + text;
				}
				button.replaceWith($('<span>').text(' (' + text + ')'));
			});
		})));
	}
	
	init();
	function reinit() { if (finished) { init(); }}

	$('#namespace, #nsinvert').change(reinit);
	$('#mw-whatlinkshere-target').keyup(reinit);
});