Zum Inhalt springen

MediaWiki:Gadget-Direct-link-to-Commons.js

aus Wikipedia, der freien Enzyklopädie

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