MediaWiki:Common.js: Unterschied zwischen den Versionen

K
keine Bearbeitungszusammenfassung
(Die Seite wurde neu angelegt: „→‎Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen.: //============================================================= //*** Configuration …“)
 
KKeine Bearbeitungszusammenfassung
Zeile 6: Zeile 6:


/** set to false in Special:Mypage/monobook.js to switch off this "feature" */
/** set to false in Special:Mypage/monobook.js to switch off this "feature" */
var linkFA_enabled  = true;


/** description that is displayed when cursor hovers above FA interwiki links */
/** description that is displayed when cursor hovers above FA interwiki links */
Zeile 27: Zeile 26:
  * see Template:Link_FA / Template:Link_GA and MediaWiki:Common.css
  * see Template:Link_FA / Template:Link_GA and MediaWiki:Common.css
  */
  */
addOnloadHook(function() {
jQuery( document ).ready(function() {
     // early exit when disabled
     // early exit when disabled
     if (!linkFA_enabled) return;
     if ((mw.user.options.exists('linkFA_enabled') && !mw.user.options.get('linkFA_enabled'))) return;


     // skins that can be handled the CSS class way
     // skins that can be handled the CSS class way
Zeile 82: Zeile 81:
         var lang    = link.hostname.split(".")[0];
         var lang    = link.hostname.split(".")[0];
         var fa      = document.getElementById("interwiki-" + lang + idSuffix);
         var fa      = document.getElementById("interwiki-" + lang + idSuffix);
         if (!fa)   return;
         if (!fa) return;
          
          
        // build an image-node for the FA-star
// build an image-node for the FA-star
        var img = document.createElement("img");
var img = document.createElement("img");
        img.setAttribute("src",    bullet);
img.setAttribute("src",    bullet);
        img.setAttribute("alt",    description);
img.setAttribute("alt",    description);
        img.setAttribute("style",  style);
img.setAttribute("style",  style);
        // decorate the link with the image
// decorate the link with the image
        link.appendChild(img);
link.appendChild(img);
        link.appendChild(link.removeChild(link.firstChild));
link.appendChild(link.removeChild(link.firstChild));
        link.setAttribute("title", description);
link.setAttribute("title", description);
     }
     }
});
});
Zeile 102: Zeile 101:
siehe auch Feature-Request [[bugzilla:708]]
siehe auch Feature-Request [[bugzilla:708]]
*/
*/
addOnloadHook(function() {
jQuery( document ).ready(function() {
     var iProject = document.getElementById("interProject");
     var iProject = document.getElementById("interProject");
     if(!iProject) return;
     if(!iProject) return;
     var sistersibling = document.getElementById("p-navigation");
     var sistersibling = document.getElementById("p-lang");
    if(!sistersibling) sistersibling= document.getElementById("p-tb");
     if(!sistersibling) return;
     if(!sistersibling) return;
     //Link auf Parennode des Portletmenues
     //Link auf Parennode des Portletmenues
Zeile 134: Zeile 134:
     for (var i = 0; i < sisterlinks.length; i++) {
     for (var i = 0; i < sisterlinks.length; i++) {
         var sistername = sisterlinks[i].firstChild.nodeValue
         var sistername = sisterlinks[i].firstChild.nodeValue
         addPortletLink('p-sisterprojects', sisterlinks[i].getAttribute("href") + '?uselang=' + wgUserLanguage, sistername, "sister-"+ sistername, sistername);
         mw.util.addPortletLink('p-sisterprojects', sisterlinks[i].getAttribute("href") + '?uselang=' + mw.config.get( 'wgUserLanguage' ), sistername, "sister-"+ sistername, sistername);
     }
     }
});
});
Zeile 140: Zeile 140:
//==============================================================================
//==============================================================================
//*** Fügt einen Link "Alle Sprachen" auf der Hauptseite unter die Sprachverweise hinzu
//*** Fügt einen Link "Alle Sprachen" auf der Hauptseite unter die Sprachverweise hinzu
 
// only on the main page
addOnloadHook(function() {
if(mw.config.get( 'wgPageName' ) == mw.config.get( 'wgMainPageTitle' )){
    // only on the main page
jQuery( document ).ready(function() {
    if ( wgPageName != wgMainPageTitle) return;
 
     try {
     try {
         var completelist = addPortletLink("p-lang", "http://de.wikipedia.org/wiki/Wikipedia:Sprachen", "Alle Sprachen", "interwiki-completelist", "Alle Sprachen");
         var completelist = mw.util.addPortletLink("p-lang", "http://de.wikipedia.org/wiki/Wikipedia:Sprachen", "Alle Sprachen", "interwiki-completelist", "Alle Sprachen");
         completelist.className='interwiki-completelist';
         completelist.className='interwiki-completelist';
     } catch(e) {
     } catch(e) {
Zeile 152: Zeile 150:
     }
     }
});
});
 
}
//================================================================================
//================================================================================
//*** force the loading of another JavaScript file  
//*** force the loading of another JavaScript file  
Zeile 174: Zeile 172:
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]


if (wgCanonicalSpecialPageName == "Hochladen") {
if (mw.config.get( 'wgCanonicalSpecialPageName' ) == "Upload") {
     importScript("MediaWiki:Onlyifuploading.js");
     importScript("MediaWiki:Onlyifuploading.js");
     importScript("MediaWiki:Onlyifediting.js");
     importScript("MediaWiki:Onlyifediting.js");
Zeile 184: Zeile 182:
// SEE ALSO [[MediaWiki:Common.js/watchlist.js]]
// SEE ALSO [[MediaWiki:Common.js/watchlist.js]]


if (wgCanonicalSpecialPageName == "Watchlist") {
if (mw.config.get( 'wgCanonicalSpecialPageName' ) == "Watchlist") {
     importScript("MediaWiki:Common.js/watchlist.js");
     importScript("MediaWiki:Common.js/watchlist.js");
}
}
Zeile 199: Zeile 197:
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
if (typeof NavigationBarShowDefault == 'undefined' ) {
    var NavigationBarShowDefault = 1;
}


// adds show/hide-button to navigation bars
// adds show/hide-button to navigation bars
addOnloadHook(function() {
jQuery( document ).ready(function() {
    // shows and hides content and picture (if available) of navigation bars
if(!mw.user.options.exists( 'NavigationBarShowDefault' )){
    // Parameters:
    if (typeof NavigationBarShowDefault != 'undefined' ) {
    //    indexNavigationBar: the index of navigation bar to be toggled
        mw.user.options.set( 'NavigationBarShowDefault',NavigationBarShowDefault)
    function toggleNavigationBar(NavToggle, NavFrame)
    }
    {
}
      if (!NavFrame || !NavToggle) {
 
          return false;
// shows and hides content and picture (if available) of navigation bars
      }
// Parameters:
//    indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(NavToggle, NavFrame)
{
  if (!NavFrame || !NavToggle) {
  return false;
  }


      // if shown now
  // if shown now
      if (NavToggle.firstChild.data == NavigationBarHide) {
  if (NavToggle.firstChild.data == NavigationBarHide) {
          for (
  for (
                  var NavChild = NavFrame.firstChild;
  var NavChild = NavFrame.firstChild;
                  NavChild != null;
  NavChild != null;
                  NavChild = NavChild.nextSibling
  NavChild = NavChild.nextSibling
              ) {
  ) {
              if (NavChild.className == 'NavPic') {
  if (NavChild.className == 'NavPic') {
                  NavChild.style.display = 'none';
  NavChild.style.display = 'none';
              }
  }
              if (NavChild.className == 'NavContent') {
  if (NavChild.className == 'NavContent') {
                  NavChild.style.display = 'none';
  NavChild.style.display = 'none';
              }
  }
              if (NavChild.className == 'NavToggle') {
  if (NavChild.className == 'NavToggle') {
                  NavChild.firstChild.data = NavigationBarShow;
  NavChild.firstChild.data = NavigationBarShow;
              }
  }
          }
  }


      // if hidden now
  // if hidden now
      } else if (NavToggle.firstChild.data == NavigationBarShow) {
  } else if (NavToggle.firstChild.data == NavigationBarShow) {
          for (
  for (
                  var NavChild = NavFrame.firstChild;
  var NavChild = NavFrame.firstChild;
                  NavChild != null;
  NavChild != null;
                  NavChild = NavChild.nextSibling
  NavChild = NavChild.nextSibling
              ) {
  ) {
              if (NavChild.className == 'NavPic') {
  if (NavChild.className == 'NavPic') {
                  NavChild.style.display = 'block';
  NavChild.style.display = 'block';
              }
  }
              if (NavChild.className == 'NavContent') {
  if (NavChild.className == 'NavContent') {
                  NavChild.style.display = 'block';
  NavChild.style.display = 'block';
              }
  }
              if (NavChild.className == 'NavToggle') {
  if (NavChild.className == 'NavToggle') {
                  NavChild.firstChild.data = NavigationBarHide;
  NavChild.firstChild.data = NavigationBarHide;
              }
  }
          }
  }
      }
  }
    }
}
 
function toggleNavigationBarFunction(NavToggle, NavFrame) {
return function() {
toggleNavigationBar(NavToggle, NavFrame);
return false;
};
}
// iterate over all NavFrames
var NavFrames = mw.util.$content.find( 'div.NavFrame' );


    function toggleNavigationBarFunction(NavToggle, NavFrame) {
// if more Navigation Bars found and not template namespace than Default: hide all
        return function() {
var initiallyToggle = mw.user.options.get( 'NavigationBarShowDefault',1 ) < NavFrames.length && mw.config.get( 'wgNamespaceNumber' ) != 10;
            toggleNavigationBar(NavToggle, NavFrame);
for (var i=0;  i<NavFrames.length; i++) {
            return false;
var NavFrame = NavFrames[i];
        };
var NavToggle = document.createElement("a");
    }
NavToggle.className = 'NavToggle';
    // iterate over all NavFrames
NavToggle.setAttribute('href', '#');
    var content    = document.getElementById("content") || document.getElementById("mw_content");
    var NavFrames = getElementsByClassName(content, "div", "NavFrame");
    // if more Navigation Bars found and not template namespace than Default: hide all
    var initiallyToggle   = NavigationBarShowDefault < NavFrames.length && wgNamespaceNumber != 10;
    for (var i=0;  i<NavFrames.length; i++) {
        var NavFrame = NavFrames[i];
        var NavToggle = document.createElement("a");
        NavToggle.className = 'NavToggle';
        NavToggle.setAttribute('href', '#');
   
   
        var NavToggleText = document.createTextNode(NavigationBarHide);
var NavToggleText = document.createTextNode(NavigationBarHide);
        NavToggle.appendChild(NavToggleText);
NavToggle.appendChild(NavToggleText);
   
   
        // add NavToggle-Button as first div-element
// add NavToggle-Button as first div-element
        // in < div class="NavFrame" >
// in < div class="NavFrame" >
        NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
       
        NavToggle.onclick = toggleNavigationBarFunction(NavToggle, NavFrame);
NavToggle.onclick = toggleNavigationBarFunction(NavToggle, NavFrame);
        if (initiallyToggle) {
if (initiallyToggle) {
            toggleNavigationBar(NavToggle, NavFrame);
toggleNavigationBar(NavToggle, NavFrame);
        }
}
    }
}
});
});


Zeile 287: Zeile 288:
// SEE ALSO [[MediaWiki:Onlyifediting.js]]
// SEE ALSO [[MediaWiki:Onlyifediting.js]]


if ( wgAction == 'edit' || wgAction == 'submit' ) {
if ( mw.config.get( 'wgAction' ) == 'edit' || mw.config.get( 'wgAction' ) == 'submit' ) {
     importScript("MediaWiki:Onlyifediting.js");
     importScript("MediaWiki:Onlyifediting.js");
}
}
Zeile 294: Zeile 295:


/** Skript für Vorlage:Galerie */
/** Skript für Vorlage:Galerie */
addOnloadHook(function() {
jQuery( document ).ready(function() {
   if (document.URL.match(/printable/g)) return;
   if (document.URL.match(/printable/g)) return;


Zeile 378: Zeile 379:
/* admin ui changes */
/* admin ui changes */


if( window.wgUserGroups ) {
if( mw.config.exists( 'wgUserGroups' ) ) {
   for(var i = 0; i < wgUserGroups.length; ++i) {
   for(var i = 0; i < mw.config.get( 'wgUserGroups' ).length; ++i) {
     if(wgUserGroups[i] === "sysop") {
     if(mw.config.get( 'wgUserGroups' )[i] === "sysop") {
   // importScript("MediaWiki:Group-sysop.js");  kann bei Bedarf ent-auskommentiert werden
   // importScript("MediaWiki:Group-sysop.js");  kann bei Bedarf ent-auskommentiert werden
       importStylesheet("MediaWiki:Group-sysop.css");
       importStylesheet("MediaWiki:Group-sysop.css");
Zeile 391: Zeile 392:
//*** Fügt eine Betreffzeile auf leeren Diskussionsseiten ein
//*** Fügt eine Betreffzeile auf leeren Diskussionsseiten ein


addOnloadHook(function() {
jQuery( document ).ready(function() {
         if(wgNamespaceNumber != 0 && wgNamespaceNumber != 1) return;
         if(mw.config.get( 'wgNamespaceNumber' ) != 0 && mw.config.get( 'wgNamespaceNumber' ) != 1) return;
    var tab = document.getElementById( 'ca-talk' );
var tab = document.getElementById( 'ca-talk' );
    if( !tab || tab.className != 'new' ) return;
if( !tab || tab.className != 'new' ) return;
    var link = tab.getElementsByTagName( 'a' )[0];
var link = tab.getElementsByTagName( 'a' )[0];
    if( !link ) return;
if( !link ) return;
    link.href += '&section=new';
link.href += '&section=new';
});
});


Zeile 403: Zeile 404:
// Lokaler Bilddiskussionsseitenlink eines Commonsbildes verweist nach Commons
// Lokaler Bilddiskussionsseitenlink eines Commonsbildes verweist nach Commons


if (wgNamespaceNumber === 6) addOnloadHook( function() {
if (mw.config.get( 'wgNamespaceNumber' ) == 6) jQuery( document ).ready( function() {
    if (window.keepLocalFileTabs ) return;
if (window.keepLocalFileTabs ) return;
    if (document.getElementById( 'ca-history')) return; //Lokale Dateibeschreibung vorhanden?
if (document.getElementById( 'ca-history')) return; //Lokale Dateibeschreibung vorhanden?
    if (!getElementsByClassName(document, 'div', 'sharedUploadNotice')[0]) return; //Nur bei Commons-Bildern
if (!$('div.sharedUploadNotice' )[0]) return; //Nur bei Commons-Bildern
   
   
    var path = wgServer.match(/^https/)
var path = wgServer.match(/^https/)
        ? 'https://secure.wikimedia.org/wikipedia/commons/wiki/'
? 'https://secure.wikimedia.org/wikipedia/commons/wiki/'
        : 'http://commons.wikimedia.org/wiki/';
: 'http://commons.wikimedia.org/wiki/';


    // Ändere Link auf Diskussionsseite
// Ändere Link auf Diskussionsseite
    var talk = document.getElementById('ca-talk');
var talk = document.getElementById('ca-talk');
    if (talk && talk.className.match(/(^| )new( |$)/)) {
if (talk && talk.className.match(/(^| )new( |$)/)) {
        var link       = talk.getElementsByTagName('a')[0];
var link = talk.getElementsByTagName('a')[0];
        link.href      = path + 'File_talk:' + encodeURIComponent(wgTitle) + '?uselang=' + wgUserLanguage;
link.href      = path + 'File_talk:' + encodeURIComponent(wgTitle) + '?uselang=' + mw.config.get( 'wgUserLanguage' );
        link.className  += ' commonstab';
link.className  += ' commonstab';
    }
}
   
   
    // Ändere Bearbeiten-Link
// Ändere Bearbeiten-Link
    var edit   = document.getElementById('ca-edit') || document.getElementById('ca-viewsource');
var edit = document.getElementById('ca-edit') || document.getElementById('ca-viewsource');
    if (edit) {  
if (edit) {  
        var link       = edit.getElementsByTagName('a')[0];
var link = edit.getElementsByTagName('a')[0];
        link.href      = path + 'File:' + encodeURIComponent(wgTitle) + '?uselang=' + wgUserLanguage + '&action=edit';
link.href      = path + 'File:' + encodeURIComponent(wgTitle) + '?uselang=' + mw.config.get( 'wgUserLanguage' ) + '&action=edit';
        link.className  += ' commonstab';
link.className  += ' commonstab';
        link.firstChild.nodeValue = 'Bearbeiten';
link.firstChild.nodeValue = 'Bearbeiten';
    }
}
});
});


/** Fügt bei SVG-Grafiken Links zu gerenderten PNGs in verschiedenen Breiten hinzu */
/** Fügt bei SVG-Grafiken Links zu gerenderten PNGs in verschiedenen Breiten hinzu */
function SVGThumbs() {
function SVGThumbs() {
    var file = document.getElementById("file"); // might fail if MediaWiki can't render the SVG
var file = document.getElementById("file"); // might fail if MediaWiki can't render the SVG
    if (file && wgIsArticle && wgTitle.match(/\.svg$/i)) {
if (file && mw.config.get( 'wgIsArticle' ) && mw.config.get( 'wgTitle' ).match(/\.svg$/i)) {
        var thumbu = file.getElementsByTagName('IMG')[0].src;
var thumbu = file.getElementsByTagName('IMG')[0].src;
        if(!thumbu) return;
if(!thumbu) return;
   
   
        function svgAltSize( w, title) {
function svgAltSize( w, title) {
            var path = thumbu.replace(/\/\d+(px-[^\/]+$)/, "/" + w + "$1");
var path = thumbu.replace(/\/\d+(px-[^\/]+$)/, "/" + w + "$1");
            var a = document.createElement("A");
var a = document.createElement("A");
            a.setAttribute("href", path);
a.setAttribute("href", path);
            a.appendChild(document.createTextNode(title));
a.appendChild(document.createTextNode(title));
            return a;
return a;
        }
}
   
   
        var p = document.createElement("p");
var p = document.createElement("p");
        p.className = "SVGThumbs";
p.className = "SVGThumbs";
        p.appendChild(document.createTextNode("Aus SVG automatisch erzeugte PNG-Grafiken in verschiedenen Auflösungen"+": "));
p.appendChild(document.createTextNode("Aus SVG automatisch erzeugte PNG-Grafiken in verschiedenen Auflösungen"+": "));
        var l = [200, 500, 1000, 2000];
var l = [200, 500, 1000, 2000];
                 for( var i = 0; i < l.length; i++ ) {
                 for( var i = 0; i < l.length; i++ ) {
            p.appendChild(svgAltSize( l[i], l[i] + "px"));
p.appendChild(svgAltSize( l[i], l[i] + "px"));
            if( i < l.length-1 ) p.appendChild(document.createTextNode(", "));
if( i < l.length-1 ) p.appendChild(document.createTextNode(", "));
                 }
                 }
        p.appendChild(document.createTextNode("."));
p.appendChild(document.createTextNode("."));
        var info = getElementsByClassName( file.parentNode, 'div', 'fullMedia' )[0];
var info = $(file.parentNode).find( 'div.fullMedia' )[0];
        if( info ) info.appendChild(p);
if( info ) info.appendChild(p);
    }
}
};
};
addOnloadHook( SVGThumbs );
jQuery(document).ready(SVGThumbs);


// <noscript>-Emulation via <div class="noscript"></div>
// <noscript>-Emulation via <div class="noscript"></div>
appendCSS('.noscript {display:none;}');
mw.util.addCSS( '.noscript {display:none;}' );


/*
/*
  * Description: Stay on the secure server as much as possible
  * Description: Stay on the secure server as much as possible
  */
  */
if(wgServer == 'https://secure.wikimedia.org') {
if(mw.config.get( 'wgServer' ) == 'https://secure.wikimedia.org') {
     importScript( 'MediaWiki:Common.js/secure.js');
     importScript( 'MediaWiki:Common.js/secure.js');
}
}
Zeile 484: Zeile 485:
     var h = a[i].href;
     var h = a[i].href;
     if (!h.match(/geohack/)) continue;
     if (!h.match(/geohack/)) continue;
    if (h.match(/_globe:/)) continue; // no OSM for moon, mars, etc
     geohack = true;
     geohack = true;
     break;
     break;
Zeile 527: Zeile 529:
    
    
   var i = document.createElement('iframe');
   var i = document.createElement('iframe');
   var url = 'http://toolserver.org/~kolossos/openlayers/kml-on-ol.php?lang=de&uselang=' + wgUserLanguage + '&params=' + h;
   var url = 'http://toolserver.org/~kolossos/openlayers/kml-on-ol.php?lang=de&uselang=' + mw.config.get( 'wgUserLanguage' ) + '&params=' + h;


   i.id = 'openstreetmap';
   i.id = 'openstreetmap';
Zeile 537: Zeile 539:
   return false;
   return false;
}
}
jQuery(document).ready(openStreetMapInit);


addOnloadHook(openStreetMapInit);
/* Ändere den Spenden-Link im Sidebar für Besucher aus Deutschland */
var donate_rewrite_url = function() {
  if ( Geo.country == 'DE' && mw.config.get( 'wgUserLanguage' ) == 'de' ) {
    var baseUrl = 'https://spenden.wikimedia.de/';
    var queryString = jQuery.param({
        'piwik_campaign':'de.wikipedia.org',
        'piwik_kwd':'sidebar',
        'language':wgUserLanguage,
        'country':Geo.country});
    jQuery("li#n-sitesupport a").attr("href", baseUrl + '?' + queryString);
  }
}
jQuery(document).ready(donate_rewrite_url);