MediaWiki:Gadget-allauktoritetsdata.js
Utseende
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)
- 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 );
} );
} );