MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus LessingWiki
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „/** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since Common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand a…“
 
Keine Bearbeitungszusammenfassung
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
/**
/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */
* Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
* loaded for all users on every wiki page. If possible create a gadget that is
* enabled by default instead of adding it here (since gadgets are fully
* optimized ResourceLoader modules with possibility to add dependencies etc.)
*
* Since Common.js isn't a gadget, there is no place to declare its
* dependencies, so we have to lazy load them with mw.loader.using on demand and
* then execute the rest in the callback. In most cases these dependencies will
* be loaded (or loading) already and the callback will not be delayed. In case a
* dependency hasn't arrived yet it'll make sure those are loaded before this.
*/


/* global mw, $ */
/* jshint strict:false, browser:true */


mw.loader.using( [ 'mediawiki.util' ] ).done( function () {
//================================================================================
/* Begin of mw.loader.using callback */
//*** force the loading of another JavaScript file (Kopie von [[Commons:Common.js]])
// Local Maintainer: [[Commons:User:Dschwen]]


/**
mw.loader.using(['mediawiki.util'], function () {
* Map addPortletLink to mw.util
* @deprecated: Use mw.util.addPortletLink instead.
*/
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );


/**
//================================================================================
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
//*** import Onlyifuploading-functions
* @rev 6
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]
*/
var extraCSS = mw.util.getParamValue( 'withCSS' ),
extraJS = mw.util.getParamValue( 'withJS' );


if ( extraCSS ) {
function includePage(name) {
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
   
mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
    mw.loader.load(
} else {
      mw.util.wikiScript() +
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
        '?title=' + encodeURIComponent(name) +
}
        '&action=raw&ctype=text/javascript'
}
    );
  }


if ( extraJS ) {
//================================================================================
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
//*** import Onlyifediting-functions
mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
// SEE ALSO [[MediaWiki:Onlyifediting.js]]
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
}


/**
  var special = mw.config.get('wgCanonicalSpecialPageName') || '';
* Collapsible tables; reimplemented with mw-collapsible
  var action  = mw.config.get('wgAction') || '';
* Styling is also in place to avoid FOUC
  var url    = window.location.href;
*
* Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
* @version 3.0.0 (2018-05-20)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @author [[User:TheDJ]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core. Shimmable since MediaWiki 1.32
*
* @param {jQuery} $content
*/
function makeCollapsibleMwCollapsible( $content ) {
var $tables = $content
.find( 'table.collapsible:not(.mw-collapsible)' )
.addClass( 'mw-collapsible' );


$.each( $tables, function ( index, table ) {
  if (special === 'Upload') {
// mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
    includePage('MediaWiki:Onlyifuploading.js');
if ( $( table ).hasClass( 'collapsed' ) ) {
    includePage('MediaWiki:Onlyifediting.js');
$( table ).addClass( 'mw-collapsed' );
  }
// mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
}
} );
if ( $tables.length > 0 ) {
mw.loader.using( 'jquery.makeCollapsible' ).then( function () {
$tables.makeCollapsible();
} );
}
}
mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible );


/**
  if (action === 'edit' || action === 'submit' || url.indexOf('action=edit') > -1 || url.indexOf('action=submit') > -1) {
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
    includePage('MediaWiki:Onlyifediting.js');
*
  }
* Maintainers: TheDJ
*/
function mwCollapsibleSetup( $collapsibleContent ) {
var $element,
$toggle,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function ( index, element ) {
$element = $( element );
if ( $element.hasClass( 'collapsible' ) ) {
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
}
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
$element.data( 'mw-collapsible' ).collapse();
} else if ( $element.hasClass( 'innercollapse' ) ) {
if ( $element.parents( '.outercollapse' ).length > 0 ) {
$element.data( 'mw-collapsible' ).collapse();
}
}
// because of colored backgrounds, style the link in the text color
// to ensure accessible contrast
$toggle = $element.find( '.mw-collapsible-toggle' );
if ( $toggle.length ) {
// Make the toggle inherit text color (Updated for T333357 2023-04-29)
if ( $toggle.parent()[ 0 ].style.color ) {
$toggle.css( 'color', 'inherit' );
$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
}
}
} );
}


mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
//================================================================================


/* End of mw.loader.using callback */
/** Skript für Vorlage:Galerie */
} );
addOnloadHook(function() {
/* DO NOT ADD CODE BELOW THIS LINE */
  if (document.URL.match(/printable/g)) return;
 
  function toggleImageFunction(group,  remindex, shwindex) {
    return function() {
      document.getElementById("ImageGroupsGr" + group + "Im" + remindex).style["display"] = "none";
      document.getElementById("ImageGroupsGr" + group + "Im" + shwindex).style["display"] = "block";
      return false;
    };
  }
 
  var divs = document.getElementsByTagName("div");
  var i = 0, j = 0;
  var units, search;
  var currentimage;
  var UnitNode;
  for (i = 0; i < divs.length; i++) {
    if (divs[i].className !== "ImageGroup") { continue; }
    UnitNode = undefined;
    search = divs[i].getElementsByTagName("div");
    for (j = 0; j < search.length; j++) {
      if (search[j].className !== "ImageGroupUnits") { continue; }
      UnitNode=search[j];
      break;
    }
    if (UnitNode === undefined) { continue; }
    units = [];
    for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
      var temp = UnitNode.childNodes[j];
      if (temp.className === "center") { units.push(temp); }
    }
    var rightlink = undefined;
    var commentText = undefined;
    for (j = 0; j < units.length; j++) {
      currentimage = units[j];
      currentimage.id = "ImageGroupsGr" + i + "Im" + j;
      var leftlink = document.createElement("a");
      if (commentText !== undefined) {
        leftlink.setAttribute("title", commentText);
      }
      var comment;
      if (typeof(currentimage.getAttribute("title")) !== "string") {
        commentText = (j+1) + "/" + units.length;
        comment = document.createElement("tt").appendChild(document.createTextNode("("+ commentText + ")"));
      }
      else {
        commentText = currentimage.getAttribute("title");
        comment = document.createElement("span").appendChild(document.createTextNode(commentText));
        currentimage.removeAttribute("title");
      }
      if(rightlink !== undefined) {
        rightlink.setAttribute("title", commentText);
      }
      var imghead = document.createElement("div");
      rightlink = document.createElement("a");
      if (j != 0) {
        leftlink.href = "#";
        leftlink.onclick = toggleImageFunction(i, j, j-1);
        leftlink.appendChild(document.createTextNode("◀"));
      }
      if (j != units.length - 1) {
        rightlink.href = "#";
        rightlink.onclick = toggleImageFunction(i, j, j+1);
        rightlink.appendChild(document.createTextNode("▶"));
      }
      imghead.style["fontSize"] = "110%";
      imghead.style["fontweight"] = "bold";
      imghead.appendChild(leftlink);
      imghead.appendChild(document.createTextNode("\xA0"));
      imghead.appendChild(comment);
      imghead.appendChild(document.createTextNode("\xA0"));
      imghead.appendChild(rightlink);
      if (units.length > 1) {
        currentimage.insertBefore(imghead,currentimage.childNodes[0]);
      }
      if (j != 0) {
        currentimage.style["display"] = "none";
      }
    }
  }
});
 
//==============================================================================
//*** Fügt eine Betreffzeile auf leeren Diskussionsseiten ein
 
  var ns = mw.config.get('wgNamespaceNumber');
  if (ns === 0 || ns === 1) {
    var tab = document.getElementById('ca-talk');
    if (tab && tab.className === 'new') {
      var link = tab.getElementsByTagName('a')[0];
      if (link) link.href += '&section=new';
    }
  }
 
});
 
// Lessing-Wiki: Klappbox
 
(function () {
  document.addEventListener('click', function (e) {
    var t = e.target;
    if (t && t.nodeType !== 1) t = t.parentElement;
    if (!t) return;
 
    var title = t.closest && t.closest('.lessing-klappbox-title');
    if (!title) return;
 
    var table = title.closest && title.closest('table.lessing-klappbox');
    if (!table) return;
 
    e.preventDefault();
    table.classList.toggle('open');
  }, true);
})();

Aktuelle Version vom 15. Februar 2026, 23:58 Uhr

/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */


//================================================================================
//*** force the loading of another JavaScript file (Kopie von [[Commons:Common.js]])
// Local Maintainer: [[Commons:User:Dschwen]]

mw.loader.using(['mediawiki.util'], function () {

//================================================================================
//*** import Onlyifuploading-functions
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]

function includePage(name) {
    
    mw.loader.load(
      mw.util.wikiScript() +
        '?title=' + encodeURIComponent(name) +
        '&action=raw&ctype=text/javascript'
    );
  }

//================================================================================
//*** import Onlyifediting-functions
// SEE ALSO [[MediaWiki:Onlyifediting.js]]

  var special = mw.config.get('wgCanonicalSpecialPageName') || '';
  var action  = mw.config.get('wgAction') || '';
  var url     = window.location.href;

  if (special === 'Upload') {
    includePage('MediaWiki:Onlyifuploading.js');
    includePage('MediaWiki:Onlyifediting.js');
  }

  if (action === 'edit' || action === 'submit' || url.indexOf('action=edit') > -1 || url.indexOf('action=submit') > -1) {
    includePage('MediaWiki:Onlyifediting.js');
  }

//================================================================================

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

  function toggleImageFunction(group,  remindex, shwindex) {
    return function() {
      document.getElementById("ImageGroupsGr" + group + "Im" + remindex).style["display"] = "none";
      document.getElementById("ImageGroupsGr" + group + "Im" + shwindex).style["display"] = "block";
      return false;
    };
  }

  var divs = document.getElementsByTagName("div");
  var i = 0, j = 0;
  var units, search;
  var currentimage;
  var UnitNode;
  for (i = 0; i < divs.length; i++) {
    if (divs[i].className !== "ImageGroup") { continue; }
    UnitNode = undefined;
    search = divs[i].getElementsByTagName("div");
    for (j = 0; j < search.length; j++) {
      if (search[j].className !== "ImageGroupUnits") { continue; }
      UnitNode=search[j];
      break;
    }
    if (UnitNode === undefined) { continue; }
    units = [];
    for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
      var temp = UnitNode.childNodes[j];
      if (temp.className === "center") { units.push(temp); }
    }
    var rightlink = undefined;
    var commentText = undefined;
    for (j = 0; j < units.length; j++) {
      currentimage = units[j];
      currentimage.id = "ImageGroupsGr" + i + "Im" + j;
      var leftlink = document.createElement("a");
      if (commentText !== undefined) {
        leftlink.setAttribute("title", commentText);
      }
      var comment;
      if (typeof(currentimage.getAttribute("title")) !== "string") {
        commentText = (j+1) + "/" + units.length;
        comment = document.createElement("tt").appendChild(document.createTextNode("("+ commentText + ")"));
      }
      else {
        commentText = currentimage.getAttribute("title");
        comment = document.createElement("span").appendChild(document.createTextNode(commentText));
        currentimage.removeAttribute("title");
      }
      if(rightlink !== undefined) {
        rightlink.setAttribute("title", commentText);
      }
      var imghead = document.createElement("div");
      rightlink = document.createElement("a");
      if (j != 0) {
        leftlink.href = "#";
        leftlink.onclick = toggleImageFunction(i, j, j-1);
        leftlink.appendChild(document.createTextNode("◀"));
      }
      if (j != units.length - 1) {
        rightlink.href = "#";
        rightlink.onclick = toggleImageFunction(i, j, j+1);
        rightlink.appendChild(document.createTextNode("▶"));
      }
      imghead.style["fontSize"] = "110%";
      imghead.style["fontweight"] = "bold";
      imghead.appendChild(leftlink);
      imghead.appendChild(document.createTextNode("\xA0"));
      imghead.appendChild(comment);
      imghead.appendChild(document.createTextNode("\xA0"));
      imghead.appendChild(rightlink);
      if (units.length > 1) {
        currentimage.insertBefore(imghead,currentimage.childNodes[0]);
      }
      if (j != 0) {
        currentimage.style["display"] = "none";
      }
    }
  }
});

//==============================================================================
//*** Fügt eine Betreffzeile auf leeren Diskussionsseiten ein

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

});

// Lessing-Wiki: Klappbox 

(function () {
  document.addEventListener('click', function (e) {
    var t = e.target;
    if (t && t.nodeType !== 1) t = t.parentElement;
    if (!t) return;

    var title = t.closest && t.closest('.lessing-klappbox-title');
    if (!title) return;

    var table = title.closest && title.closest('table.lessing-klappbox');
    if (!table) return;

    e.preventDefault();
    table.classList.toggle('open');
  }, true); 
})();