MediaWiki:Common.js

From UnderMine Wiki
Jump to navigation Jump to search

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.
/* Any JavaScript here will be loaded for all users on every page load. */

// Article object, but may be possibly incorrect
// Code by alex4401
$( function () {
	function _getStructuredData() {
		var wgServer = mw.config.get( 'wgServer' ),
			wgSiteName = mw.config.get( 'wgSiteName' );
		var result;

		if ( mw.config.get( 'wgIsMainPage' ) ) {
			result = {
				"@context": "https://schema.org",
				"@type": "WebSite",
				name: wgSiteName,
				url: wgServer
			};
		} else {
			var ogImage = document.querySelector( 'meta[property="og:image"]' );
			result = {
				"@context": "http://www.schema.org",
				"@type": "Article",
				name: mw.config.get( 'wgTitle' ),
				headline: mw.config.get( 'wgTitle' ),
				image: {
					"@type": "ImageObject",
					url: ogImage ? ogImage.getAttribute( 'content' ) : ( wgServer + "/images/e/e6/Site-logo.png?5b2cf" )
				},
				author: {
					"@type": "Organization",
					name: 'Contributors to the ' + wgSiteName,
					url: wgServer
				},
				publisher: {
					"@type": "Organization",
					name: wgSiteName,
					url: wgServer,
					logo: {
						"@type": "ImageObject",
						url: wgServer + "/images/e/e6/Site-logo.png?5b2cf"
					}
				},
				mainEntityOfPage: mw.config.get( 'wgPageName' )
			};
		}

		result.potentialAction = {
			"@type": "SearchAction",
			target: wgServer + "/wiki/Special:Search?search={search_term}",
			"query-input": "required name=search_term"
		};

		return result;
	}

	if ( mw.config.get( 'wgIsArticle' ) &&
		mw.config.get( 'wgContentNamespaces' ).indexOf( mw.config.get( 'wgNamespaceNumber' ) ) >= 0 ) {
		var data = _getStructuredData();
		if ( data ) {
			var script = document.createElement('script');
			script.type = "application/ld+json";
			script.innerHTML = JSON.stringify( data );
			document.body.appendChild( script );
		}
	}
} );