MediaWiki:Gadget-directLinkToCommons.js
Заўвага: Пасля апублікавання, вам можа спатрэбіцца ачыстка кэшу браўзера, каб убачыць унесеныя змены.
- Firefox / Safari: націсніце Reload, утрымліваючы Shift, або націсніце Ctrl-F5 ці Ctrl-R (⌘-R на Макінтошах)
- Google Chrome: Націсніце Ctrl-Shift-R (⌘-Shift-R на Mac)
- Internet Explorer / Edge: націсніце Refresh, утрымліваючы Ctrl, або націсніце Ctrl-F5
- Opera: Увайдзіце Menu → Settings (Opera → Preferences на Mac), далей Privacy & security → Clear browsing data → Cached images and files.
/**
* @source: https://www.mediawiki.org/wiki/Snippets/Direct_imagelinks_to_Commons
*/
mw.hook( 'wikipage.content' ).add( function ( $content ) {
var fileSelector = 'a.image, a.mw-file-description';
// Ignore most files in the mobile version until [[phab:T65504]] gets resolved
if ( mw.config.get( 'skin' ) === 'minerva' ) {
fileSelector = '.noviewer a.image, .noviewer a.mw-file-description';
}
if ( mw.config.get( 'wgNamespaceNumber', 0 ) < 0 ) {
return;
}
mw.loader.using( 'mediawiki.util' ).done( function () {
var commonsBase = '//commons.wikimedia.org/wiki/File:',
localBase = mw.util.getUrl( mw.config.get( 'wgFormattedNamespaces' )[ 6 ] + ':' ),
commonsBaseScript = '//commons.wikimedia.org/w/index.php?title=File:',
localBaseScript = mw.util.wikiScript() + '?title=' + mw.util.wikiUrlencode( mw.config.get( 'wgFormattedNamespaces' )[ 6 ] + ':' ),
uploadBaseRe = new RegExp( '^' + mw.util.escapeRegExp( '//upload.wikimedia.org/wikipedia/commons/' ) );
$content.find( fileSelector ).attr( 'href', function( i, currVal ) {
// Link has no current value, so exit early to avoid error
// TypeError: Cannot read properties of undefined (reading 'replace')
if ( !currVal ) {
return;
}
var src = $( this ).find( 'img' ).attr( 'src' );
if ( !src ) {
return;
}
if ( uploadBaseRe.test( src ) ) {
var url = currVal.replace( localBase, commonsBase ).replace( localBaseScript, commonsBaseScript );
// Override default language on Commons for non-logged in users only
if( !mw.config.get( 'wgUserId' ) ) {
url += ( /\?/.test(url) ? '&' : '?' ) + 'uselang=be';
}
return url;
}
} );
} );
} );