User:Magnus Manske/annas archive.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
// <nowiki>
/*
This script adds links to Anna's Archive to appropriate items (books, research articles etc)

TO ACTIVATE, ADD

importScript( 'User:Magnus_Manske/annas_archive.js' ); // [[User:Magnus Manske/annas_archive.js]]

TO YOUR [[Special:MyPage/common.js]] USER SUBPAGE.
*/


function try_annas_archive() {
	if ( mw.config.get('wgNamespaceNumber') != 0 ) return ;
	if ( mw.config.get('wgAction') != 'view' ) return ;
	
	function aa_link(query) {
		return "&nbsp;<sup><a class='external' title='Annas Archive' href='https://annas-archive.org/search?q="+encodeURIComponent(query)+"'>AA</a></sup>";
	}

	mw.loader.using( [ 'user.options' ] ).then( function () {
		let is_scholarly_article = ($("#P31 a[title='Q13442814']").length>0) || ($("#P356").length>0);
		let is_book = ($("#P31 a[title='Q47461344']").length>0) || ($("#P8383").length>0) || ($("#P957").length>0) || ($("#P212").length>0);
		let is_other = ($("#P31 a[title='Q13433827']").length>0);
		if ( is_other || (!is_scholarly_article && !is_book) ) return;
		
		if ( $('#firstHeading span.wb-empty').length==0 ) {
			let title = $('span.wikibase-title-label').text();
			if ( title != '' ) $('span.wikibase-title-label').append(aa_link(title));
		}
		
		let properties = ['P1476','P356','P957','P212'];
		$.each(properties,function(num,prop){
			let key = "#"+prop+" div.wikibase-snakview-value";
			$(key).each(function(node_num,node){
				let value = $($(node).children()[0]).text();
				if ( value != '' ) $(node).append(aa_link(value));
			});
		});
	} ) ;
}

$( function(){try_annas_archive();} ) ;
// </nowiki>