Open main menu

Snippets/Direct imagelinks to Commons

How to use Snippets
List of Snippets
Crystal Clear action run.png
Direct imagelinks to Commons
Language(s): JavaScript
Compatible with: MediaWiki 1.26+ 

DescriptionEdit

With this option you can transparently include Wikimedia Commons media files (images) as if they are stored on the local server. Images not found on the local server are automatically loaded from Wikimedia Commons. Actually the external images are cached on your server (load-through). Supports HTTPS.

Via LocalSettings.phpEdit

Since MediaWiki 1.16 it might be sufficient just to set the following flag in LocalSettings.php

$wgUseInstantCommons = true;

You might need to configure also the following variables when your host is behind a firewall/proxy:

$wgHTTPProxy = "myproxy.mycomp.net:8080";

CodeEdit

/**
 * Direct imagelinks to Commons
 *
 * Required modules: mediawiki.util
 *
 * @source https://www.mediawiki.org/wiki/Snippets/Direct_imagelinks_to_Commons
 * @author Krinkle
 * @version 2019-09-14
 */
if ( mw.config.get( 'wgNamespaceNumber', 0 ) >= 0 ) {
	mw.loader.using( [ 'mediawiki.util' ] ).then( function () {
		mw.hook( 'wikipage.content' ).add( function ( $content ) {
			var uploadBaseRe = /^(https:)?\/\/upload\.wikimedia\.org\/wikipedia\/commons/,
				localFileNSString = mw.config.get( 'wgFormattedNamespaces' )['6'] + ':',
				localBasePath = new RegExp( '^' + mw.util.escapeRegExp( mw.util.getUrl( localFileNSString ) ) ),
				localBaseScript = new RegExp( '^' + mw.util.escapeRegExp(
					mw.util.wikiScript() + '?title=' + mw.util.wikiUrlencode( localFileNSString )
				) ),
				commonsBasePath = 'https://commons.wikimedia.org/wiki/File:',
				commonsBaseScript = 'https://commons.wikimedia.org/w/index.php?title=File:';

			$content.find( 'a.image' ).attr( 'href', function ( i, currVal ) {
				if ( uploadBaseRe.test( $( this ).find( 'img' ).attr( 'src' ) ) ) {
					return currVal
						.replace( localBasePath, commonsBasePath )
						.replace( localBaseScript, commonsBaseScript );
				}
			} );
		} );
	} );
}

NotesEdit

As of December 2012, installed as gadget (enabled by default) at:

In January 2014, it was also installed at:

On January 19th, 2014, it was installed also at:

It is furthermore included in the following files:

As of July 7th, 2015, it's also in many more places: phab:P896.

See alsoEdit