OBS: Efter du har publicerat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.

  • Firefox / Safari: Håll ned Skift och klicka på Uppdatera sidan eller tryck Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
  • Google Chrome: Tryck Ctrl-Skift-R (⌘-Skift-R på Mac)
  • Internet Explorer / Edge: Håll ned Ctrl och klicka på Uppdatera eller tryck Ctrl-F5
  • Opera: Tryck Ctrl-F5.
$( function() {
	if ( mw.config.get( 'wgNamespaceNumber' ) ||
		!mw.config.get( 'wgWikibaseItemId' ) ||
		mw.config.get( 'wgAction' ) !== 'view' ) {
		return;
	}

	var externalids = { total: 0 };

	function showAuthorityLinks() {
		if ( $( 'ol.authoritylinks-list' ).length !== 0 ) {
			return;
		}
		$.getJSON(
			'//query.wikidata.org/sparql',
			{
				query: 'SELECT DISTINCT ?prop ?propLabel ?formatter ?id WHERE { '
					+ 'wd:' + mw.config.get( 'wgWikibaseItemId' ) + ' ?p ?id. '
					+ '?prop wikibase:directClaim ?p; '
					+ 'wdt:P31/wdt:P279* wd:Q18614948; ' // Q18614948 = Wikidata property for authority control
					+ 'wdt:P1630 ?formatter. '
					+ 'SERVICE wikibase:label { bd:serviceParam wikibase:language "sv, en". } '
					+ '}',
				format: 'json',
				origin: 'https:' + mw.config.get( 'wgServer' )
			}
		).done( function( data ) {
			var authorities = data.results.bindings;
			var authoritylinklist = $( '<ul class="authoritylinks-list"></ul>' );

			for ( var x in authorities ) {
				propurl = authorities[ x ].prop.value;
				property = authorities[ x ].prop.value.substr( 31 );
				label = authorities[ x ].propLabel.value;
				formatter = authorities[ x ].formatter.value;
				id = authorities[ x ].id.value;

				url = formatter.replace( '$1', id );
				if ( authoritylinklist.children( '#' + property ).length == 0 ) {
					authoritylinklist.append( '<li id="' + property + '"><a href="' + propurl + '">' + label + '</a>:<ul></ul></li>' );
				} 
				authoritylinklist.find( '#' + property + ' ul' ).append( '<li><a href="' + url + '">' + id + '</a></li>' );
				
			}

			authoritylinklist.insertBefore( $( '#catlinks' ) );
			authoritylinklist.wrap( '<div class="authoritydata"></div>' );
			authoritylinklist.before( '<h2>Auktoritetsdata</h2>' );
		} );
	}

	$.getJSON(
		'//www.wikidata.org/w/api.php',
		{
			action: 'wbgetclaims',
			entity: mw.config.get( 'wgWikibaseItemId' ),
			props: '',
			format: 'json',
			origin: 'https:' + mw.config.get( 'wgServer' )
		}
	).done( function( data ) {
		for ( var c in data.claims ) {
			if ( data.claims[ c ][ 0 ].mainsnak.datatype == 'external-id' &&
			     data.claims[ c ][ 0 ].mainsnak.snaktype == 'value' &&
			     data.claims[ c ][ 0 ].rank != 'deprecated' ) {
				externalids[ data.claims[ c ][ 0 ].mainsnak.property ] = data.claims[ c ][ 0 ].mainsnak.datavalue.value;
				externalids.total++;
			}
		}

		$( '#t-wikibase' ).append( ' <span id="wd-ext-id">(<a href="#catlinks" title="Visa externa id från Wikidata">' + externalids.total + ' externa id</a>)</span>' );
		$( '#wd-ext-id a' ).click( showAuthorityLinks );
	} );
} );