MediaWiki:Common.js: Unterschied zwischen den Versionen

Änderung 3542 von Admin wurde rückgängig gemacht.
KKeine Bearbeitungszusammenfassung
(Änderung 3542 von Admin wurde rückgängig gemacht.)
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 26: Zeile 27:
  * see Template:Link_FA / Template:Link_GA and MediaWiki:Common.css
  * see Template:Link_FA / Template:Link_GA and MediaWiki:Common.css
  */
  */
jQuery( document ).ready(function() {
addOnloadHook(function() {
     // early exit when disabled
     // early exit when disabled
     if ((mw.user.options.exists('linkFA_enabled') && !mw.user.options.get('linkFA_enabled'))) return;
     if (!linkFA_enabled) return;


     // skins that can be handled the CSS class way
     // skins that can be handled the CSS class way
Zeile 81: Zeile 82:
         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 101: Zeile 102:
siehe auch Feature-Request [[bugzilla:708]]
siehe auch Feature-Request [[bugzilla:708]]
*/
*/
jQuery( document ).ready(function() {
addOnloadHook(function() {
     var iProject = document.getElementById("interProject");
     var iProject = document.getElementById("interProject");
     if(!iProject) return;
     if(!iProject) return;
     var sistersibling = document.getElementById("p-lang");
     var sistersibling = document.getElementById("p-navigation");
    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
         mw.util.addPortletLink('p-sisterprojects', sisterlinks[i].getAttribute("href") + '?uselang=' + mw.config.get( 'wgUserLanguage' ), sistername, "sister-"+ sistername, sistername);
         addPortletLink('p-sisterprojects', sisterlinks[i].getAttribute("href") + '?uselang=' + 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
 
if(mw.config.get( 'wgPageName' ) == mw.config.get( 'wgMainPageTitle' )){
addOnloadHook(function() {
jQuery( document ).ready(function() {
    // only on the main page
    if ( wgPageName != wgMainPageTitle) return;
 
     try {
     try {
         var completelist = mw.util.addPortletLink("p-lang", "http://de.wikipedia.org/wiki/Wikipedia:Sprachen", "Alle Sprachen", "interwiki-completelist", "Alle Sprachen");
         var completelist = 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 150: Zeile 152:
     }
     }
});
});
}
 
//================================================================================
//================================================================================
//*** force the loading of another JavaScript file  
//*** force the loading of another JavaScript file  
Zeile 172: Zeile 174:
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]


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


if (mw.config.get( 'wgCanonicalSpecialPageName' ) == "Watchlist") {
if (wgCanonicalSpecialPageName == "Watchlist") {
     importScript("MediaWiki:Common.js/watchlist.js");
     importScript("MediaWiki:Common.js/watchlist.js");
}
}
Zeile 197: Zeile 199:
// 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
jQuery( document ).ready(function() {
addOnloadHook(function() {
if(!mw.user.options.exists( 'NavigationBarShowDefault' )){
    // shows and hides content and picture (if available) of navigation bars
    if (typeof NavigationBarShowDefault != 'undefined' ) {
    // Parameters:
        mw.user.options.set( 'NavigationBarShowDefault',NavigationBarShowDefault)
    //    indexNavigationBar: the index of navigation bar to be toggled
    }
    function toggleNavigationBar(NavToggle, NavFrame)
}
    {
      if (!NavFrame || !NavToggle) {
          return false;
      }


// shows and hides content and picture (if available) of navigation bars
      // if shown now
// Parameters:
      if (NavToggle.firstChild.data == NavigationBarHide) {
//    indexNavigationBar: the index of navigation bar to be toggled
          for (
function toggleNavigationBar(NavToggle, NavFrame)
                  var NavChild = NavFrame.firstChild;
{
                  NavChild != null;
  if (!NavFrame || !NavToggle) {
                  NavChild = NavChild.nextSibling
  return false;
              ) {
  }
              if (NavChild.className == 'NavPic') {
                  NavChild.style.display = 'none';
              }
              if (NavChild.className == 'NavContent') {
                  NavChild.style.display = 'none';
              }
              if (NavChild.className == 'NavToggle') {
                  NavChild.firstChild.data = NavigationBarShow;
              }
          }


  // if shown now
      // if hidden now
  if (NavToggle.firstChild.data == NavigationBarHide) {
      } 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 = 'none';
                  NavChild.style.display = 'block';
  }
              }
  if (NavChild.className == 'NavContent') {
              if (NavChild.className == 'NavContent') {
  NavChild.style.display = 'none';
                  NavChild.style.display = 'block';
  }
              }
  if (NavChild.className == 'NavToggle') {
              if (NavChild.className == 'NavToggle') {
  NavChild.firstChild.data = NavigationBarShow;
                  NavChild.firstChild.data = NavigationBarHide;
  }
              }
  }
          }
      }
    }


  // if hidden now
    function toggleNavigationBarFunction(NavToggle, NavFrame) {
  } else if (NavToggle.firstChild.data == NavigationBarShow) {
        return function() {
  for (
            toggleNavigationBar(NavToggle, NavFrame);
  var NavChild = NavFrame.firstChild;
            return false;
  NavChild != null;
        };
  NavChild = NavChild.nextSibling
    }
  ) {
    // iterate over all NavFrames
  if (NavChild.className == 'NavPic') {
    var content    = document.getElementById("content") || document.getElementById("mw_content");
  NavChild.style.display = 'block';
    var NavFrames = getElementsByClassName(content, "div", "NavFrame");
  }
    // if more Navigation Bars found and not template namespace than Default: hide all
  if (NavChild.className == 'NavContent') {
    var initiallyToggle   = NavigationBarShowDefault < NavFrames.length && wgNamespaceNumber != 10;
  NavChild.style.display = 'block';
    for (var i=0;  i<NavFrames.length; i++) {
  }
        var NavFrame = NavFrames[i];
  if (NavChild.className == 'NavToggle') {
        var NavToggle = document.createElement("a");
  NavChild.firstChild.data = NavigationBarHide;
        NavToggle.className = 'NavToggle';
  }
        NavToggle.setAttribute('href', '#');
  }
  }
}
 
function toggleNavigationBarFunction(NavToggle, NavFrame) {
return function() {
toggleNavigationBar(NavToggle, NavFrame);
return false;
};
}
// iterate over all NavFrames
var NavFrames = mw.util.$content.find( 'div.NavFrame' );
 
// if more Navigation Bars found and not template namespace than Default: hide all
var initiallyToggle = mw.user.options.get( 'NavigationBarShowDefault',1 ) < NavFrames.length && mw.config.get( '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 288: Zeile 287:
// SEE ALSO [[MediaWiki:Onlyifediting.js]]
// SEE ALSO [[MediaWiki:Onlyifediting.js]]


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


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


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


if( mw.config.exists( 'wgUserGroups' ) ) {
if( window.wgUserGroups ) {
   for(var i = 0; i < mw.config.get( 'wgUserGroups' ).length; ++i) {
   for(var i = 0; i < wgUserGroups.length; ++i) {
     if(mw.config.get( 'wgUserGroups' )[i] === "sysop") {
     if(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 392: Zeile 391:
//*** Fügt eine Betreffzeile auf leeren Diskussionsseiten ein
//*** Fügt eine Betreffzeile auf leeren Diskussionsseiten ein


jQuery( document ).ready(function() {
addOnloadHook(function() {
         if(mw.config.get( 'wgNamespaceNumber' ) != 0 && mw.config.get( 'wgNamespaceNumber' ) != 1) return;
         if(wgNamespaceNumber != 0 && 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 404: Zeile 403:
// Lokaler Bilddiskussionsseitenlink eines Commonsbildes verweist nach Commons
// Lokaler Bilddiskussionsseitenlink eines Commonsbildes verweist nach Commons


if (mw.config.get( 'wgNamespaceNumber' ) == 6) jQuery( document ).ready( function() {
if (wgNamespaceNumber === 6) addOnloadHook( 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 (!$('div.sharedUploadNotice' )[0]) return; //Nur bei Commons-Bildern
    if (!getElementsByClassName(document, '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=' + mw.config.get( 'wgUserLanguage' );
        link.href      = path + 'File_talk:' + encodeURIComponent(wgTitle) + '?uselang=' + 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=' + mw.config.get( 'wgUserLanguage' ) + '&action=edit';
        link.href      = path + 'File:' + encodeURIComponent(wgTitle) + '?uselang=' + 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 && mw.config.get( 'wgIsArticle' ) && mw.config.get( 'wgTitle' ).match(/\.svg$/i)) {
    if (file && wgIsArticle && 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 = $(file.parentNode).find( 'div.fullMedia' )[0];
        var info = getElementsByClassName( file.parentNode, 'div', 'fullMedia' )[0];
if( info ) info.appendChild(p);
        if( info ) info.appendChild(p);
}
    }
};
};
jQuery(document).ready(SVGThumbs);
addOnloadHook( SVGThumbs );


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


/*
/*
  * Description: Stay on the secure server as much as possible
  * Description: Stay on the secure server as much as possible
  */
  */
if(mw.config.get( 'wgServer' ) == 'https://secure.wikimedia.org') {
if(wgServer == 'https://secure.wikimedia.org') {
     importScript( 'MediaWiki:Common.js/secure.js');
     importScript( 'MediaWiki:Common.js/secure.js');
}
}
Zeile 485: Zeile 484:
     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 529: Zeile 527:
    
    
   var i = document.createElement('iframe');
   var i = document.createElement('iframe');
   var url = 'http://toolserver.org/~kolossos/openlayers/kml-on-ol.php?lang=de&uselang=' + mw.config.get( 'wgUserLanguage' ) + '&params=' + h;
   var url = 'http://toolserver.org/~kolossos/openlayers/kml-on-ol.php?lang=de&uselang=' + wgUserLanguage + '&params=' + h;


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


/* Ändere den Spenden-Link im Sidebar für Besucher aus Deutschland */
addOnloadHook(openStreetMapInit);
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);