Zum Inhalt springen

MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus TerranianStar
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(45 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
/* ============================================================
/* ============================================================
   Sidebar einklappbar Vector‑2011 + Vector‑2022
   COMMON.JS Master-Version für mehrere Wikis
  Neutral, modular, mit Pfaden für TerranianStar (/Wiki_TS/images/)
   ============================================================ */
   ============================================================ */
var s = document.createElement('script');
s.type = 'module';
s.src = 'https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js';
document.head.appendChild(s);
/* ============================================================
  1) Edit-Icons für "Bearbeiten" & "Quelltext bearbeiten"
  ============================================================ */
mw.hook('wikipage.content').add(function ($content) {
    $content.find('.mw-editsection a').each(function () {
        const $a = $(this);
        const text = $a.text().trim();
        // Basis-Styling für Icon-Links
        $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'
        });


$(document).ready(function() {
        // Icon-Zuweisung (TS-Pfade)
        if (text === 'Bearbeiten') {
            $a.css('background-image', 'url("/Wiki_TS/images/e/e6/EditIcon.png")');
        }
        if (text === 'Quelltext bearbeiten') {
            $a.css('background-image', 'url("/Wiki_TS/images/f/f6/QEditIcon.png")');
        }
    });


     /* Vector‑2022 */
     // Klammern entfernen
     $('.mw-portlet .vector-menu-heading').each(function() {
     $content.find('.mw-editsection').css('font-size', '0');
        const heading = $(this);
});
 
/* ============================================================
  2) Sidebar-Werkzeuge → eingebaute Toolbox kopieren
      (nur im alten Vector-Skin ausführen!)
  ============================================================ */
 
if ( mw.config.get('skin') === 'vector' ) {


        // Vector‑2022: Inhalt liegt in .vector-menu-content-list
    mw.loader.using('jquery').then(function () {
        const content = heading.closest('.mw-portlet').find('.vector-menu-content-list');


         if (content.length) {
         const sidebarTools = $('#p-toolbox .vector-menu-content-list');
            heading.css('cursor', 'pointer');
        const builtinTools = $('#p-tb-list');


            heading.on('click', function(e) {
        if (sidebarTools.length && builtinTools.length) {
                e.preventDefault();
            builtinTools.empty();
                e.stopPropagation();
            sidebarTools.children().clone().appendTo(builtinTools);
                content.slideToggle(200);
                heading.toggleClass('collapsed');
            });
         }
         }
     });
     });
}
/* ============================================================
  3) Vector-2022 – Collapse-Zustand speichern
  ============================================================ */
mw.hook('wikipage.content').add(function () {
    if (mw.config.get('skin') !== 'vector-2022') return;
    $('.vector-menu-heading').each(function () {


    /* Vector‑2011 */
    $('.mw-portlet h3').each(function() {
         const heading = $(this);
         const heading = $(this);
         const content = heading.next('.body');
         const content = heading.next('.vector-menu-content');
        const menu = heading.closest('.vector-menu');
        const id = menu.attr('id');


         if (content.length) {
         if (!id) return;
            heading.css('cursor', 'pointer');


            heading.on('click', function() {
        const saved = localStorage.getItem('v22-collapse-' + id);
                content.slideToggle(200);
 
                heading.toggleClass('collapsed');
        if (saved === 'collapsed') {
            });
            content.hide();
            heading.addClass('collapsed');
         }
         }
        heading.off('click.v22').on('click.v22', function () {
            heading.toggleClass('collapsed');
            content.slideToggle(120);
            localStorage.setItem(
                'v22-collapse-' + id,
                heading.hasClass('collapsed') ? 'collapsed' : 'open'
            );
        });
     });
     });
});


});


/* Sidebar-Zustände speichern und wiederherstellen (Vector-2022, MW 1.45.3) */
mw.loader.using('mediawiki.util').then(function () {
    document.addEventListener('DOMContentLoaded', function () {
        const sections = document.querySelectorAll('#vector-sidebar .vector-menu');


        sections.forEach(section => {
/* ============================================================
            const heading = section.querySelector('.vector-menu-heading');
  4) Vector-2022 – Leere Menüs automatisch ausblenden
            if (!heading || !section.id) return;
  ============================================================ */
 
mw.hook('wikipage.content').add(function () {
 
    if (mw.config.get('skin') !== 'vector-2022') return;
 
    $('.vector-menu').each(function () {


            const key = 'sidebar-state-' + section.id;
        const menu = $(this);
        const heading = menu.find('.vector-menu-heading');
        const content = menu.find('.vector-menu-content');


            // Zustand wiederherstellen
        const headingEmpty = $.trim(heading.text()) === "";
            const saved = localStorage.getItem(key);
        const contentEmpty = content.find('li').length === 0;
            if (saved === 'collapsed') {
                section.classList.add('vector-menu-collapsed');
            }


            // Nach dem Klick speichern (nachdem Vector umgeschaltet hat)
        if (headingEmpty && contentEmpty) {
             heading.addEventListener('click', () => {
             menu.hide();
                setTimeout(() => {
         }
                    const isCollapsed = section.classList.contains('vector-menu-collapsed');
                    localStorage.setItem(key, isCollapsed ? 'collapsed' : 'expanded');
                }, 0);
            });
         });
     });
     });
});
});


/* Vector-2022: Alle Sidebar-Blöcke beim Laden zuverlässig schließen */
/* ============================================================
(function () {
  Admin-Werkzeuge – zentral für alle Skins (Vector 2011 + 2022)
    const interval = setInterval(() => {
  ============================================================ */
        const headings = document.querySelectorAll('#vector-sidebar .vector-menu-heading');


        if (headings.length === 0) return;
$(document).ready(function () {


        headings.forEach(h => {
    const adminGroups = ['sysop', 'bureaucrat', 'interface-admin'];
            // Button finden, der das aria-expanded trägt
    const userGroups = mw.config.get('wgUserGroups');
            const btn = h.querySelector('button');
            if (btn) {
                btn.setAttribute('aria-expanded', 'false');
            }


            // Optische Klasse setzen
    // Nur Admins bekommen die Tools
            h.classList.add('collapsed');
    if (!userGroups.some(g => adminGroups.includes(g))) return;


            // Inhalt wirklich verstecken
    // Zielcontainer (Vector-2011 + Vector-2022 kompatibel)
            const content = h.nextElementSibling;
    const $container = $('#p-tb .vector-menu-content-list');
            if (content) {
    if (!$container.length) return;
                const list = content.querySelector('.vector-menu-content-list');
 
                 if (list) {
    // Überschrift
                     list.style.display = 'none';
    $container.append('<li class="vector-menu-heading">Admin-Werkzeuge</li>');
                }
 
            }
    // ============================================================
        });
    // Werkzeuge (keine Doppelungen)
    // ============================================================
 
    function addTool(name, url) {
        $container.append(
            $('<li>').append(
                 $('<a>')
                    .attr('href', url)
                     .text(name)
            )
        );
    }
 
    addTool('Spezialseiten', mw.util.getUrl('Spezial:Spezialseiten'));
    addTool('Textbausteine', '/Wiki_TS/index.php/Kategorie:Textbausteine');
    addTool('Letzte Änderungen', '/Wiki_TS/index.php/Spezial:Letzte_Änderungen');
    addTool('Alle Seiten', '/Wiki_TS/index.php/Spezial:Alle_Seiten');
    addTool('Zufällige Seite', '/Wiki_TS/index.php/Spezial:Zufällige_Seite');
    addTool('Löschkandidaten', '/Wiki_TS/index.php/Kategorie:Löschkandidaten');
});


        clearInterval(interval);
// Popup Gadjet auch für Gäste //
    }, 20);
mw.loader.load('ext.gadget.Navigation-popups');
})();

Aktuelle Version vom 26. Juni 2026, 12:53 Uhr

/* ============================================================
   COMMON.JS – Master-Version für mehrere Wikis
   Neutral, modular, mit Pfaden für TerranianStar (/Wiki_TS/images/)
   ============================================================ */
var s = document.createElement('script');
s.type = 'module';
s.src = 'https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js';
document.head.appendChild(s);
/* ============================================================
   1) Edit-Icons für "Bearbeiten" & "Quelltext bearbeiten"
   ============================================================ */

mw.hook('wikipage.content').add(function ($content) {

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

        // Basis-Styling für Icon-Links
        $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'
        });

        // Icon-Zuweisung (TS-Pfade)
        if (text === 'Bearbeiten') {
            $a.css('background-image', 'url("/Wiki_TS/images/e/e6/EditIcon.png")');
        }
        if (text === 'Quelltext bearbeiten') {
            $a.css('background-image', 'url("/Wiki_TS/images/f/f6/QEditIcon.png")');
        }
    });

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

/* ============================================================
   2) Sidebar-Werkzeuge → eingebaute Toolbox kopieren
      (nur im alten Vector-Skin ausführen!)
   ============================================================ */

if ( mw.config.get('skin') === 'vector' ) {

    mw.loader.using('jquery').then(function () {

        const sidebarTools = $('#p-toolbox .vector-menu-content-list');
        const builtinTools = $('#p-tb-list');

        if (sidebarTools.length && builtinTools.length) {
            builtinTools.empty();
            sidebarTools.children().clone().appendTo(builtinTools);
        }
    });
}

/* ============================================================
   3) Vector-2022 – Collapse-Zustand speichern
   ============================================================ */

mw.hook('wikipage.content').add(function () {

    if (mw.config.get('skin') !== 'vector-2022') return;

    $('.vector-menu-heading').each(function () {

        const heading = $(this);
        const content = heading.next('.vector-menu-content');
        const menu = heading.closest('.vector-menu');
        const id = menu.attr('id');

        if (!id) return;

        const saved = localStorage.getItem('v22-collapse-' + id);

        if (saved === 'collapsed') {
            content.hide();
            heading.addClass('collapsed');
        }

        heading.off('click.v22').on('click.v22', function () {
            heading.toggleClass('collapsed');
            content.slideToggle(120);

            localStorage.setItem(
                'v22-collapse-' + id,
                heading.hasClass('collapsed') ? 'collapsed' : 'open'
            );
        });
    });
});



/* ============================================================
   4) Vector-2022 – Leere Menüs automatisch ausblenden
   ============================================================ */

mw.hook('wikipage.content').add(function () {

    if (mw.config.get('skin') !== 'vector-2022') return;

    $('.vector-menu').each(function () {

        const menu = $(this);
        const heading = menu.find('.vector-menu-heading');
        const content = menu.find('.vector-menu-content');

        const headingEmpty = $.trim(heading.text()) === "";
        const contentEmpty = content.find('li').length === 0;

        if (headingEmpty && contentEmpty) {
            menu.hide();
        }
    });
});

/* ============================================================
   Admin-Werkzeuge – zentral für alle Skins (Vector 2011 + 2022)
   ============================================================ */

$(document).ready(function () {

    const adminGroups = ['sysop', 'bureaucrat', 'interface-admin'];
    const userGroups = mw.config.get('wgUserGroups');

    // Nur Admins bekommen die Tools
    if (!userGroups.some(g => adminGroups.includes(g))) return;

    // Zielcontainer (Vector-2011 + Vector-2022 kompatibel)
    const $container = $('#p-tb .vector-menu-content-list');
    if (!$container.length) return;

    // Überschrift
    $container.append('<li class="vector-menu-heading">Admin-Werkzeuge</li>');

    // ============================================================
    // Werkzeuge (keine Doppelungen)
    // ============================================================

    function addTool(name, url) {
        $container.append(
            $('<li>').append(
                $('<a>')
                    .attr('href', url)
                    .text(name)
            )
        );
    }

    addTool('Spezialseiten', mw.util.getUrl('Spezial:Spezialseiten'));
    addTool('Textbausteine', '/Wiki_TS/index.php/Kategorie:Textbausteine');
    addTool('Letzte Änderungen', '/Wiki_TS/index.php/Spezial:Letzte_Änderungen');
    addTool('Alle Seiten', '/Wiki_TS/index.php/Spezial:Alle_Seiten');
    addTool('Zufällige Seite', '/Wiki_TS/index.php/Spezial:Zufällige_Seite');
    addTool('Löschkandidaten', '/Wiki_TS/index.php/Kategorie:Löschkandidaten');
});

// Popup Gadjet auch für Gäste //
mw.loader.load('ext.gadget.Navigation-popups');