MediaWiki:Gadget-Direct-link-to-Commons.js
Erscheinungsbild
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/// <nowiki> Gadget-Direct-link-to-Commons.js
/// PerfektesChaos@de.wikipedia 2026-04
/* global window: false */
/* jshint forin: false,
bitwise:true, curly:true, eqeqeq:true, latedef:true,
laxbreak:true,
nocomma:true, strict:true, undef:true, unused:true */
( function ( mw, $ ) {
"use strict";
// Gadget globals
var Paths = { com: [ "//commons.wikimedia.org/wiki/File:",
"//commons.wikimedia.org/w/index.php?title=File:"
],
upload: "upload\\.wikimedia\\.org/wikipedia/commons/" },
RE;
function factory() {
// Create expensive objects
var s6 = mw.config.get( "wgFormattedNamespaces" )[ "6" ],
start = window.document.location.hostname;
s6 = mw.util.escapeRegExp( s6 ) + ":";
start = mw.util.escapeRegExp( start );
start = "^(?:(?:https?:)?//" + start + ")?/";
RE = { bracket: [ ],
here: [ ] };
RE.bracket[ 0 ] = new RegExp( "\\(", "g" );
RE.bracket[ 1 ] = new RegExp( "\\)", "g" );
RE.here[ 0 ] = new RegExp( start + "wiki/" + s6 );
RE.here[ 1 ] = new RegExp( start + "w/index\\.php" +
"\\?title=" + s6 );
RE.upload = new RegExp( "^(?:https?:)?//" + Paths.upload );
}
function fiat( i, a ) {
// Process single image element
// i -- sequence number
// a -- DOM element
var $e = $( a ),
s;
if ( ! RE ) {
factory();
}
if ( RE.upload.test( $e.find( "img" ).attr( "src" ) ) ) {
// Media @ commons
s = $e.attr( "href" );
s = s.replace( RE.here[ 0 ], Paths.com[ 0 ] )
.replace( RE.here[ 1 ], Paths.com[ 1 ] )
.replace( RE.bracket[ 0 ], "%28" )
.replace( RE.bracket[ 1 ], "%29" );
// bracket[]: prevent false positive XSS detection in NoScript
$e.attr( "href", s );
}
}
function find( $a ) {
// DOM ready
// $a -- $content
$a.find( "a.image, a.mw-file-description" ).each( fiat );
}
function fire() {
// Resources ensured if not by MediaWiki:Gadgets-definition
if ( ! mw.user.options.get( "multimediaviewer-enable" ) ) {
mw.hook( "wikipage.content" ).add( find );
}
}
function first() {
// Autorun on loading
if ( mw.config.get( "wgNamespaceNumber", 0 ) >= 0 ) {
mw.loader.using( [ "mediawiki.util",
"user.options" ],
fire );
}
}
first();
}( window.mediaWiki, window.jQuery ) );
/// EOF </nowiki> Gadget-Direct-link-to-Commons.js