MediaWiki:Common.js

Aus Shadowhelix
Zur Navigation springen Zur Suche springen

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
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
/* Das folgende JavaScript wird für alle Benutzer geladen. */

function createFunctionButtons() {

    var Selection = document.getElementsByClassName( "jsFunctionButton" );

    for ( var i = Selection.length - 1; i >= 0 ; i-- ) {

         var input = Selection[i].id.split("_");
         var jsFunction = input.shift();

         var Button = document.createElement( "a" );

         var inputString = "";
         for ( var j = 0; j < input.length; j++ ) {
              inputString = inputString + "'"+input[j];
              if (j != input.length - 1) {
                   inputString = inputString + "',";
              } else {
                   inputString = inputString + "'";
              }
         }

         Button.setAttribute( "href", "javascript:"+jsFunction+"("+inputString+")" );

         Button.appendChild( Selection[i].childNodes[0] );

         $(Selection[i]).replaceWith( Button );

    }

}

function toggleVisibility( targetClass, targetID ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {     

        if (objects[i].id != targetID) {
            objects[i].style.display = 'none';
        } else {
            objects[i].style.display = '';
        }
    }
}

function toggleVisibilityMatch( targetClass, targetID ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {     

        if (objects[i].id.search(targetID) == -1) {
            objects[i].style.display = 'none';
        } else {
            objects[i].style.display = '';
        }
    }
}

function toggleWeight( targetClass, targetID ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {     

        if (objects[i].id != targetID) {
            objects[i].style.fontWeight = 'normal';
        } else {
            objects[i].style.fontWeight = 'bold';
        }
    }
}

function switchWeight( targetClass, targetID ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        if (objects[i].id == targetID) {
            if (objects[i].style.fontWeight == '700') {
                objects[i].style.fontWeight = 'normal';
            } else {
                objects[i].style.fontWeight = 'bold';
            }
        }
    }
}

function switchVisibility( targetClass, targetID ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        if (objects[i].id == targetID) {
            if (objects[i].style.display == 'none') {
                objects[i].style.display = '';
            } else {
                objects[i].style.display = 'none';
            }
        }
    }
}

function switchVisibilityOnClass( targetClass ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        if (objects[i].style.display == 'none') {
            objects[i].style.display = '';
        } else {
            objects[i].style.display = 'none';
        }
    }
}

function switchOnVisibilityOnClass( targetClass ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        objects[i].style.display = '';
    }
}

function switchOffVisibilityOnClass( targetClass ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        objects[i].style.display = 'none';
    }
}

function showOnlyParentNodeWithIdGreaterZero( targetClass, defaultIdValue ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        if (!(objects[i].parentNode.id)) {
            objects[i].parentNode.id = defaultIdValue;
        }

        if (objects[i].parentNode.id > 0) {
            objects[i].parentNode.style.display = '';
        } else {
            objects[i].parentNode.style.display = 'none';
        }
    }
}

function parentNodeNumericalIdChange( targetClass, increment ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        if (objects[i].parentNode.id) {
            objects[i].parentNode.id = parseInt(objects[i].parentNode.id) + increment;
        } else {
            if (increment > 0) {
                objects[i].parentNode.id = 1;
            } else {
                objects[i].parentNode.id = 0;
            }
        }
    }
}

function parentNodeInvisible( targetClass ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        if (objects[i].parentNode.id) {
            objects[i].parentNode.id = parseInt(objects[i].parentNode.id) + 1;
        } else {
            objects[i].parentNode.id = 1;
        }

        if (objects[i].parentNode.id > 0) {
            objects[i].parentNode.style.display = 'none';
        }
    }
}

function parentNodeVisible( targetClass ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        objects[i].parentNode.id = parseInt(objects[i].parentNode.id) - 1;

        if (!(objects[i].parentNode.id > 0)) {
            objects[i].parentNode.style.display = '';
        }
    }
}

function parentNodeFade( targetClass, opacityValue ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        if (objects[i].parentNode.id) {
            objects[i].parentNode.id = parseInt(objects[i].parentNode.id) + 1;
        } else {
            objects[i].parentNode.id = 1;
        }

        if (objects[i].parentNode.id > 0) {
            objects[i].parentNode.style.opacity = opacityValue;
        }
    }
}

function parentNodeUnFade( targetClass ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        if (objects[i].parentNode.id) {
            objects[i].parentNode.id = parseInt(objects[i].parentNode.id) + 1;
        } else {
            objects[i].parentNode.id = 1;
        }

        if (objects[i].parentNode.id > 0) {
            objects[i].parentNode.style.opacity = '1';
        }
    }
}

function toggleParentNodeVisibilityMatch( targetClass, targetID ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {

        if (objects[i].id.search(targetID) == -1) {
            objects[i].parentNode.style.display = 'none';
        } else {
            objects[i].parentNode.style.display = '';
        }
    }
}

function resetVisibility( targetClass, allVisible ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {     

        if (allVisible != 0) {
            objects[i].style.display = '';
        } else {
            objects[i].style.display = 'none';
        }
    }
}

function resetParentNodeVisibility( targetClass, allVisible ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {     

        if (allVisible != 0) {
            objects[i].parentNode.style.display = '';
        } else {
            objects[i].parentNode.style.display = 'none';
        }
    }
}

function resetWeight( targetClass, allNormal ) {

    var objects = document.getElementsByClassName( targetClass );

    for ( var i = 0; i < objects.length; i++ ) {     

        if (allNormal != 0) {
            objects[i].style.fontWeight = 'normal';
        } else {
            objects[i].style.fontWeight = 'bold';
        }
    }
}

/* Aufruf mehrerer Funktionen */

function multiCall11( func1,var11,func2,var21 ) {

    window[func1](var11);
    window[func2](var21);

}

function multiCall12( func1,var11,func2,var21,var22 ) {

    window[func1](var11);
    window[func2](var21,var22);

}

function multiCall22( func1,var11,var12,func2,var21,var22 ) {

    window[func1](var11,var12);
    window[func2](var21,var22);

}

function multiCall112( func1,var11,func2,var21,func3,var31,var32 ) {

    window[func1](var11);
    window[func2](var21);
    window[func3](var31,var32);

}

function multiCall122( func1,var11,func2,var21,var22,func3,var31,var32 ) {

    window[func1](var11);
    window[func2](var21,var22);
    window[func3](var31,var32);

}

function multiCall222( func1,var11,var12,func2,var21,var22,func3,var31,var32 ) {

    window[func1](var11,var12);
    window[func2](var21,var22);
    window[func3](var31,var32);

}

function multiCall2222( func1,var11,var12,func2,var21,var22,func3,var31,var32,func4,var41,var42 ) {

    window[func1](var11,var12);
    window[func2](var21,var22);
    window[func3](var31,var32);
    window[func4](var41,var42);

}

function singleCall2( func1,var11,var12 ) {

    window[func1](var11,var12);

}

/* Funktion um die Darstellung von Shadowtalk-Boxen im Artikel an- und abzuschalten */

function toggleShadowtalkTab() {
    mw.util.addPortletLink('p-cactions', 'javascript:switchVisibilityOnClass( "shadowtalkbox" )', 'Shadowtalk An/Aus', 'ca-last', 'Shadowtalk ein- oder ausblenden');
}

$( toggleShadowtalkTab );

/* Funktion zur Formatierung der Links auf Artikel in den besonderen Kategorien (Quellen, Abenteuer, Erzählungen) */

function formatLinksKategorie() {

    if ( document.location.href.search('/Kategorie:Quellen') != -1 || document.location.href.search('=Kategorie:Quellen') != -1 ) {

        var objects = document.getElementsByTagName( "a" );
        for ( var i = 0; i < objects.length; i++ ) {     
            objects[i].innerHTML = objects[i].innerHTML.replace(/Quelle, (cs|de|en|es|fr|he|hu|it|ja|pl|pt):/,"<tt class=\"language-$1\"><small>Quelle, </small>$1:</tt>").replace(/, <\/small>(de|en):/,", </small><span style=\"font-style:italic; color:green;\">$1</span>:").replace(/, <\/small>(cs|es|fr|he|hu|it|ja|pl|pt):/,", </small><span style=\"font-style:italic; color:purple;\">$1</span>:").replace(/\/Abbildungsverzeichnis/,"<tt><small>\/Abbildungsverzeichnis<\/small><\/tt>");
        }
    }

    if ( document.location.href.search('/Kategorie:Abenteuer') != -1 || document.location.href.search('=Kategorie:Abenteuer') != -1 ) {

        var objects = document.getElementsByTagName( "a" );
        for ( var i = 0; i < objects.length; i++ ) {     
            objects[i].innerHTML = objects[i].innerHTML.replace(/Abenteuer:/,"<small>Abenteuer:</small>");
        }
    }

    if ( document.location.href.search('/Kategorie:Erz%C3%A4hlungen') != -1 || document.location.href.search('=Kategorie:Erz%C3%A4hlungen') != -1 ) {

        var objects = document.getElementsByTagName( "a" );
        for ( var i = 0; i < objects.length; i++ ) {     
            objects[i].innerHTML = objects[i].innerHTML.replace(/Erzählung:/,"<small>Erzählung:</small>");
        }
    }

}

$( formatLinksKategorie );


/* Funktion um die Darstellung von Shadowtalk-Boxen als Defaulteinstellung in reduzierter Form darzustellen */

function defaultShadowtalkCollapsed() {

    var objects = document.getElementsByClassName( 'open-shadowtalk' );

    for ( var i = objects.length - 1; i >= 0; i-- ) {
       objects[i].style.display = 'none';
       objects[i].className     = "open-shadowtalk-" + i;
    }    

    var objects = document.getElementsByClassName( 'collapsed-shadowtalk' );

    for ( var i = objects.length - 1; i >= 0; i-- ) {
       objects[i].style.display = '';
       objects[i].className     = "collapsed-shadowtalk-" + i;
    }

    var objects = document.getElementsByClassName( 'st-jsFunctionButton' );

    for ( var i = objects.length - 1; i >= 0; i-- ) {
       objects[i].id        = "multiCall11_switchVisibilityOnClass_open-shadowtalk-" + i + "_switchVisibilityOnClass_collapsed-shadowtalk-" + i;
       objects[i].className = "jsFunctionButton";
    }

}

$( defaultShadowtalkCollapsed );

$( createFunctionButtons );