|
|
| Line 1: |
Line 1: |
| /* Any JavaScript here will be loaded for all users on every page load. */ | | /* Any JavaScript here will be loaded for all users on every page load. */ |
|
| |
|
| |
| /**
| |
| * MediaWiki - Automatisches Einfügen von <div class="figure"> zwischen IMG-Kommentaren
| |
| * Verwende dies in: MediaWiki:Common.js
| |
| */
| |
|
| |
| ( function() {
| |
| 'use strict';
| |
|
| |
| // Funktion ausführen, wenn DOM bereit ist
| |
| if ( document.readyState === 'loading' ) {
| |
| document.addEventListener( 'DOMContentLoaded', wrapImagesInFigure );
| |
| } else {
| |
| wrapImagesInFigure();
| |
| }
| |
|
| |
| /**
| |
| * Findet <!-- START IMG --> und <!-- END IMG --> Kommentare
| |
| * und wrapped den Inhalt dazwischen in <div class="figure">
| |
| */
| |
| function wrapImagesInFigure() {
| |
| var walker = document.createTreeWalker(
| |
| document.body,
| |
| NodeFilter.SHOW_COMMENT,
| |
| null,
| |
| false
| |
| );
| |
|
| |
| var startComment = null;
| |
| var node;
| |
|
| |
| while ( node = walker.nextNode() ) {
| |
| // Prüfe auf START IMG Kommentar
| |
| if ( node.nodeValue.trim() === 'START IMG' ) {
| |
| startComment = node;
| |
| }
| |
| // Prüfe auf END IMG Kommentar
| |
| else if ( node.nodeValue.trim() === 'END IMG' && startComment ) {
| |
| wrapContentBetweenComments( startComment, node );
| |
| startComment = null;
| |
| }
| |
| }
| |
| }
| |
|
| |
| /**
| |
| * Wrapped Inhalte zwischen zwei Kommentaren in <div class="figure">
| |
| */
| |
| function wrapContentBetweenComments( startComment, endComment ) {
| |
| var figureDiv = document.createElement( 'div' );
| |
| figureDiv.className = 'figure';
| |
|
| |
| var currentNode = startComment.nextSibling;
| |
| var nodesToMove = [];
| |
|
| |
| // Sammle alle Knoten zwischen START und END Kommentar
| |
| while ( currentNode && currentNode !== endComment ) {
| |
| nodesToMove.push( currentNode );
| |
| currentNode = currentNode.nextSibling;
| |
| }
| |
|
| |
| // Verschiebe alle Knoten in das figure-div
| |
| nodesToMove.forEach( function( node ) {
| |
| figureDiv.appendChild( node );
| |
| });
| |
|
| |
| // Füge figure-div nach dem START-Kommentar ein
| |
| startComment.parentNode.insertBefore( figureDiv, startComment.nextSibling );
| |
| }
| |
|
| |
| })();
| |
/* Any JavaScript here will be loaded for all users on every page load. */