Järjestelmäviesti:Gadget-WikidataWatchlistLabels.js

Wikipediasta
Siirry navigaatioon Siirry hakuun

Huomautus: Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.

  • Firefox ja Safari: Napsauta Shift-näppäin pohjassa Päivitä, tai paina Ctrl-F5 tai Ctrl-R (⌘-R Macilla)
  • Google Chrome: Paina Ctrl-Shift-R (⌘-Shift-R Macilla)
  • Internet Explorer ja Edge: Napsauta Ctrl-näppäin pohjassa Päivitä tai paina Ctrl-F5
  • Opera: Paina Ctrl-F5.
function getLabel(itemnumbers) {
	var langCode = mw.config.get('wgUserLanguage');
	$.ajax( {
		url: '//www.wikidata.org/w/api.php',
		data: {
			'format': 'json',
			'action': 'wbgetentities',
			'ids': itemnumbers.join('|'),
			'props': 'labels',
			'languages': langCode,
			'maxage': 30,
			'smaxage': 30,
			'languagefallback':true
		},
		dataType: 'jsonp',
		headers: { 'Api-User-Agent': 'WikidataWatchlistLabels ( https://en.wikipedia.org/wiki/User:Evad37/WikidataWatchlistLabels.js )' },
		cache: true
	} )
	.done( function ( data ) {
		if ( data.success ) {
			for ( var item in data.entities ) {
				// Get label
				var label = '[?]';
				if ( data.entities[item].labels && data.entities[item].labels[langCode] && data.entities[item].labels[langCode].value ) {
					label = data.entities[item].labels[langCode].value;
				}
				// Add labels to items
				$( "span." + item + " > a").empty().append(
					label,
					' ',
					$('<span>')
					.css('font-size', '85%')
					.text('(' + item + ')')
				);
			}
		}
	});
}

$( function($) {
	if( mw.config.get('wgNamespaceNumber') != -1 ) {
	// only operate in Special: namespace
	return;
	}
	// Hook on to changes in page content - initial load, 'New filters for edit review' changes, etc
	mw.hook( 'wikipage.content' ).add( function ( $content ) {
		var items = [];
		// Find items linked in comments
		$content.find(
			"li.mw-changeslist-src-mw-wikibase > span.comment > a.external, "+
			"table.mw-changeslist-src-mw-wikibase td.mw-changeslist-line-inner > span.comment > a.external, "+
			"table.mw-changeslist-line.mw-collapsible tr.mw-changeslist-src-mw-wikibase td.mw-enhanced-rc-nested span.comment > a.external"
		).each(function() {
			if ( $(this).attr('href').indexOf('//www.wikidata.org/wiki/') !== -1 ) {
				var pq = $( this ).text();
				var pqnumber = pq.replace("Property:","");
				// Test for validity
				if ( !/^(p|q)\d+$/i.test(pqnumber) ) {
					return;
				}
				$( this ).wrap("<span class='" + pqnumber + "'></span>" );
				if ( items.indexOf(pqnumber) === -1 ) {
					items.push(pqnumber);
				}
			}
		});
		// Find items following page titles
		$content.find(
			"li.mw-changeslist-src-mw-wikibase > a.wb-entity-link, "+
			"table.mw-changeslist-src-mw-wikibase td.mw-changeslist-line-inner > a.wb-entity-link, "+
			"table.mw-changeslist-line.mw-collapsible tr.mw-changeslist-src-mw-wikibase td.mw-enhanced-rc-nested > a.wb-entity-link"
		).each(function() {
			var qnum = $( this ).text();
			$( this ).wrap("<span class='" + qnum + "'></span>" );
			if ( items.indexOf(qnum) === -1 ) {
				items.push(qnum);
			}
		});
		// Get labels in batches of 50 (max for Wikidata api)
		for ( var i=0; i<items.length; i += 50 ) {
			getLabel(items.slice(i, i+49));
		}
	});
});