MediaWiki:Common.js

Aus MILLENNIUM ARTS ISP - Hilfe | FAQ
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. */
$(document).ready(function() {
    console.log("Common.js wird geladen!");

    // Liste der Standard-Menüs, die eingeklappt starten (TOOLBOX entfernt)
    var defaultCollapsed = ['navigation', 'SEARCH', 'LANGUAGES'];
    // Liste der Portale, die klappbar sein sollen (ab HOSTING)
    var collapsiblePortals = ['HOSTING', 'DOMAINS'];

    // Alle Vector-Menü-Portale durchlaufen
    $('.vector-menu-portal').each(function() {
        var $portal = $(this);
        var $header = $portal.find('.vector-menu-heading');
        var $content = $portal.find('.vector-menu-content-list');
        var portalId = $portal.attr('id'); // z. B. "p-HOSTING"
        var portalName = portalId ? portalId.replace('p-', '') : '';

        // Nur Portale mit Untermenüs (mindestens 1 <li>) und in collapsiblePortals bearbeiten
        if ($content.find('li').length > 0 && collapsiblePortals.includes(portalName)) {
            console.log("Portal:", portalName, "Untermenüs:", $content.find('li').length);

            // Indikator hinzufügen (▼ für ausgeklappt, ▶ für eingeklappt)
            $header.prepend('<span class="menu-indicator">▼</span> ');

            // Styling
            $header.css({
                'cursor': 'pointer',
                'font-weight': 'bold',
                'display': 'flex',
                'align-items': 'center'
            });
            $header.find('.menu-indicator').css({
                'margin-right': '5px',
                'transition': 'transform 0.3s ease'
            });

            // Klappzustand aus localStorage laden, sonst Standard verwenden
            var savedState = localStorage.getItem('menu-state-' + portalName);
            var isOpen = savedState !== null ? (savedState === 'open') : !defaultCollapsed.includes(portalName);

            if (isOpen) {
                $content.show();
                $header.find('.menu-indicator').css('transform', 'rotate(0deg)');
            } else {
                $content.hide();
                $header.find('.menu-indicator').css('transform', 'rotate(-90deg)');
            }

            // Klick-Event mit synchroner Animation
            $header.click(function(e) {
                e.preventDefault();
                var $indicator = $header.find('.menu-indicator');

                if (isOpen) {
                    $content.slideUp(300);
                    $indicator.css('transform', 'rotate(-90deg)');
                    localStorage.setItem('menu-state-' + portalName, 'closed');
                } else {
                    $content.slideDown(300);
                    $indicator.css('transform', 'rotate(0deg)');
                    localStorage.setItem('menu-state-' + portalName, 'open');
                }
                isOpen = !isOpen; // Zustand umschalten
            });
        }
    });
});