MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus TerranianStar
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Keine Bearbeitungszusammenfassung
 
(47 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
/* Das folgende JavaScript wird für alle Benutzer geladen. */
/* Das folgende JavaScript wird für alle Benutzer geladen. */
/** Namensräume für die Seitenvorschau **/
mw.config.set('wgContentNamespaces', [0, 100]);


//
/* MediaWiki:Common.js */
// Sidebar‑Manipulation (Werkzeugkasten erweitern)
//
function ModifySidebar(action, section, name, link) {
    try {
        var target = 'p-' + section;
        if (section === 'languages') target = 'p-lang';
        if (section === 'toolbox') target = 'p-tb';
        if (section === 'navigation') target = 'p-navigation';


        var list = document.getElementById(target)
/* Test-Alert – zeigt an, dass Common.js geladen wurde */
            ?.getElementsByTagName('div')[0]
// alert("Common.js läuft!"); //
            ?.getElementsByTagName('ul')[0];
// Vector-2022: Hauptmenü ENT-PINNEN, damit Click-Events funktionieren
document.addEventListener('DOMContentLoaded', function () {
    document.querySelectorAll('.vector-pinnable-header-pinned')
        .forEach(el => el.classList.remove('vector-pinnable-header-pinned'));


         if (!list) return;
    document.querySelectorAll('.vector-pinnable-element')
         .forEach(el => el.classList.remove('vector-pinnable-element'));
});
 
/* Alles einklappbar machen – Vector‑2022 Override */
document.addEventListener('DOMContentLoaded', function () {
 
    // Vector‑2022: Portale einklappbar machen (Skin-Override)
    document.querySelectorAll('.vector-menu').forEach(menu => {


         if (action === 'add') {
         const heading = menu.querySelector('.vector-menu-heading');
            var aNode = document.createElement('a');
        const content = menu.querySelector('.vector-menu-content');
            var liNode = document.createElement('li');


            aNode.appendChild(document.createTextNode(name));
        if (!heading || !content) return;
            aNode.setAttribute('href', link);
            liNode.appendChild(aNode);
            liNode.className = 'plainlinks';
            list.appendChild(liNode);
        }


         if (action === 'remove') {
         // WICHTIG: Vector‑2022 entfernt ARIA-Attribute → sonst blockiert der Skin
            var items = list.getElementsByTagName('li');
        heading.removeAttribute('aria-expanded');
            for (var i = 0; i < items.length; i++) {
        heading.removeAttribute('aria-controls');
                var a = items[i].getElementsByTagName('a')[0];
                if (a && (a.innerHTML === name || a.href === link)) {
                    list.removeChild(items[i]);
                }
            }
        }
    } catch (e) {
        return;
    }
}


function CustomizeModificationsOfSidebar() {
        // Cursor sichtbar machen
    // Toolbox‑Einträge für BlueX
        heading.style.cursor = 'pointer';
    ModifySidebar('add', 'toolbox', 'Textbausteine', '/Wiki_BlueX/index.php/Kategorie:Textbausteine');
    ModifySidebar('add', 'toolbox', 'Letzte Änderungen', '/Wiki_BlueX/index.php/Spezial:Letzte_Änderungen');
    ModifySidebar('add', 'toolbox', 'Alle Seiten', '/Wiki_BlueX/index.php/Spezial:Alle_Seiten');
    ModifySidebar('add', 'toolbox', 'Zufällige Seite', '/Wiki_BlueX/index.php/Spezial:Zufällige_Seite');
}


jQuery(CustomizeModificationsOfSidebar);
        // HARTE Variante: Skin-Events komplett blockieren
        heading.addEventListener('click', function (e) {
            e.preventDefault();
            e.stopImmediatePropagation(); // ← das ist der entscheidende Punkt
            content.classList.toggle('ts-collapsed');
        });
    });


});


//
/* Icons für Bearbeiten / Quelltext bearbeiten (Vector‑2022)
// Icons für Bearbeiten / Quelltext bearbeiten (Vector‑2022)
  Dieser Hook MUSS außerhalb von DOMContentLoaded bleiben! */
//
mw.hook('wikipage.content').add(function($content) {
mw.hook('wikipage.content').add(function($content) {


Zeile 64: Zeile 50:
         var text = $a.text().trim();
         var text = $a.text().trim();


        // Text ausblenden
         $a.css({
         $a.css({
             'font-size': '0',
             'font-size': '0',
Zeile 77: Zeile 62:
         });
         });


        // Normales Bearbeiten
         if (text === 'Bearbeiten') {
         if (text === 'Bearbeiten') {
             $a.css('background-image', 'url("/Wiki_BlueX/images/e/e6/EditIcon.png")');
             $a.css('background-image', 'url("/Wiki_BlueX/images/e/e6/EditIcon.png")');
         }
         }


        // Quelltext bearbeiten
         if (text === 'Quelltext bearbeiten') {
         if (text === 'Quelltext bearbeiten') {
             $a.css('background-image', 'url("/Wiki_BlueX/images/f/f6/QEditIcon.png")');
             $a.css('background-image', 'url("/Wiki_BlueX/images/f/f6/QEditIcon.png")');
Zeile 88: Zeile 71:
     });
     });


    // Klammern entfernen
     $content.find('.mw-editsection').css('font-size', '0');
     $content.find('.mw-editsection').css('font-size', '0');
});
// === Sidebar für Vector‑2022 erzeugen + Sokradia-Pfeile ===
mw.loader.using(['mediawiki.util', 'jquery.makeCollapsible'], function () {
    // Nur im Vector‑2022 Skin aktivieren
    if (mw.config.get('skin') !== 'vector-2022') return;
    // Sidebar-Daten aus MediaWiki:Sidebar holen
    var sidebarData = mw.config.get('wgSidebar');
    if (!sidebarData) return;
    // Sidebar-Container erzeugen
    var sidebar = $('<div id="mw-panel" class="vector-2022-sidebar" style="width:250px;padding:10px;"></div>');
    $('#mw-content-container').before(sidebar);
    // Für jeden Block ein Portal erzeugen
    $.each(sidebarData, function (section, items) {
        var portal = $('<div class="vector-portal" style="margin-bottom:15px;"></div>');
        var header = $('<div class="vector-portal-heading" style="font-weight:bold;cursor:pointer;padding:5px 0;"></div>').text(section);
        var content = $('<div class="vector-portal-content"></div>');
        var list = $('<ul style="margin-left:10px;"></ul>');
        // Einträge hinzufügen
        $.each(items, function (i, item) {
            var li = $('<li></li>');
            var link = $('<a></a>')
                .attr('href', item.href)
                .text(item.text);
            li.append(link);
            list.append(li);
        });
        content.append(list);
        // Pfeil hinzufügen (Sokradia-Stil)
        header.append('<span class="vx-arrow" style="float:right;transition:0.2s;font-weight:bold;">▼</span>');
        var arrow = header.find('.vx-arrow');
        // Klick-Event für Collapse
        header.on('click', function () {
            if (content.is(':visible')) {
                content.slideUp(150);
                arrow.css('transform', 'rotate(-90deg)');
            } else {
                content.slideDown(150);
                arrow.css('transform', 'rotate(0deg)');
            }
        });
        // Portal zusammenbauen
        portal.append(header);
        portal.append(content);
        sidebar.append(portal);
    });
});
});

Aktuelle Version vom 24. Mai 2026, 16:57 Uhr

/* Das folgende JavaScript wird für alle Benutzer geladen. */

/* MediaWiki:Common.js */

/* Test-Alert – zeigt an, dass Common.js geladen wurde */
// alert("Common.js läuft!"); //
// Vector-2022: Hauptmenü ENT-PINNEN, damit Click-Events funktionieren
document.addEventListener('DOMContentLoaded', function () {
    document.querySelectorAll('.vector-pinnable-header-pinned')
        .forEach(el => el.classList.remove('vector-pinnable-header-pinned'));

    document.querySelectorAll('.vector-pinnable-element')
        .forEach(el => el.classList.remove('vector-pinnable-element'));
});

/* Alles einklappbar machen – Vector‑2022 Override */
document.addEventListener('DOMContentLoaded', function () {

    // Vector‑2022: Portale einklappbar machen (Skin-Override)
    document.querySelectorAll('.vector-menu').forEach(menu => {

        const heading = menu.querySelector('.vector-menu-heading');
        const content = menu.querySelector('.vector-menu-content');

        if (!heading || !content) return;

        // WICHTIG: Vector‑2022 entfernt ARIA-Attribute → sonst blockiert der Skin
        heading.removeAttribute('aria-expanded');
        heading.removeAttribute('aria-controls');

        // Cursor sichtbar machen
        heading.style.cursor = 'pointer';

        // HARTE Variante: Skin-Events komplett blockieren
        heading.addEventListener('click', function (e) {
            e.preventDefault();
            e.stopImmediatePropagation(); // ← das ist der entscheidende Punkt
            content.classList.toggle('ts-collapsed');
        });
    });

});

/* Icons für Bearbeiten / Quelltext bearbeiten (Vector‑2022)
   Dieser Hook MUSS außerhalb von DOMContentLoaded bleiben! */
mw.hook('wikipage.content').add(function($content) {

    $content.find('.mw-editsection a').each(function() {
        var $a = $(this);
        var text = $a.text().trim();

        $a.css({
            'font-size': '0',
            'display': 'inline-block',
            'width': '22px',
            'height': '22px',
            'background-size': 'contain',
            'background-repeat': 'no-repeat',
            'background-position': 'center',
            'vertical-align': 'middle',
            'margin-left': '4px'
        });

        if (text === 'Bearbeiten') {
            $a.css('background-image', 'url("/Wiki_BlueX/images/e/e6/EditIcon.png")');
        }

        if (text === 'Quelltext bearbeiten') {
            $a.css('background-image', 'url("/Wiki_BlueX/images/f/f6/QEditIcon.png")');
        }
    });

    $content.find('.mw-editsection').css('font-size', '0');
});