MediaWiki:Gadget-directLinkToCommons.js

Википедия — ирекле энциклопедия мәғлүмәте

Иҫкәрмә: Күрәһең, битте һаҡлағандан һуң үҙгәртеүҙәрегеҙ күренһен өсөн, браузерығыҙҙың кэшын таҙартырға кәрәк.

  • Firefox / Safari: Shift төймәһенә баҫып, ебәрмәйенсә, панелдәге Яңыртырға төймәһенә баҫығыҙ, йәки Ctrl+F5 йә Ctrl+R (Mac-та ⌘-R) төймәләренә баҫығыҙ
  • Google Chrome: Ctrl+Shift+R төймәләренә баҫығыҙ (Mac-та ⌘-Shift+R)
  • Internet Explorer: Ctrl төймәһенә баҫып, ебәрмәйенсә, Яңыртырға төймәһенә йәки Ctrl+F5 төймәләренә баҫығыҙ
  • Opera: Ctrl+F5 төймәләренә баҫығыҙ.
/**
 * [[ВП:Гаджеты/Прямой переход на Викисклад]]
 * @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 (per [[Special:Diff/95375054]])
				if( !mw.config.get( 'wgUserId' ) ) {
					url += ( /\?/.test(url) ? '&' : '?' ) + 'uselang=ba';
				}
				return url;
			}
		} );
	} );
} );