Zum Inhalt springen

MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus TerranianStar
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(52 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
/* ============================================================
/* ============================================================
   GLOBAL: Basis-CSS für alle Benutzeroberflächen
   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"
   ============================================================ */
   ============================================================ */


/* Toolbox (p-tb) ausblenden */
mw.hook('wikipage.content').add(function ($content) {
#p-tb {
    display: none;
}


/* Footer-Logo (Zeitlos) – Abstand & Ausrichtung */
    $content.find('.mw-editsection a').each(function () {
.vector-footer-poweredby .mw-footer-icon img[src$="banner-cc.png"] {
        const $a = $(this);
    margin-left: 8px !important;
        const text = $a.text().trim();
    margin-right: 8px !important;
}


.vector-footer-poweredby .mw-footer-icon img {
        // Basis-Styling für Icon-Links
    vertical-align: middle !important;
        $a.css({
    position: relative;
            'font-size': '0',
    top: -4px;
            'display': 'inline-block',
}
            'width': '22px',
            'height': '22px',
            'background-size': 'contain',
            'background-repeat': 'no-repeat',
            'background-position': 'center',
            'vertical-align': 'middle',
            'margin-left': '4px'
        });


/* Hintergrundfarben (Seitenrahmen) */
        // Icon-Zuweisung (TS-Pfade)
#mw-page-base,
        if (text === 'Bearbeiten') {
body {
            $a.css('background-image', 'url("/Wiki_TS/images/e/e6/EditIcon.png")');
    background-color: #B0E2FF;
        }
}
        if (text === 'Quelltext bearbeiten') {
            $a.css('background-image', 'url("/Wiki_TS/images/f/f6/QEditIcon.png")');
        }
    });


/* MediaWiki-Hilfe-Links ausblenden */
    // Klammern entfernen
.mw-indicators,
    $content.find('.mw-editsection').css('font-size', '0');
.mw-indicator,
});
.mw-helplink {
    display: none !important;
}
 
/* TOC-Limiter */
.toclimit-2 .toclevel-1 ul,
.toclimit-3 .toclevel-2 ul,
.toclimit-4 .toclevel-3 ul,
.toclimit-5 .toclevel-4 ul,
.toclimit-6 .toclevel-5 ul,
.toclimit-7 .toclevel-6 ul {
    display: none;
}
 
/* Automatisches Verschmelzen benachbarter Navigationsleisten */
div.NavFrame + div.NavFrame {
    border-top-style: hidden;
    margin-top: 0;
}


/* ============================================================
/* ============================================================
   SIDEBAR-ICONS (Vector‑2011 & Vector‑2022)
   2) Sidebar-Werkzeuge → eingebaute Toolbox kopieren
      (nur im alten Vector-Skin ausführen!)
   ============================================================ */
   ============================================================ */


/* Gemeinsame Icon-Basis */
if ( mw.config.get('skin') === 'vector' ) {
#p-Kontakt .vector-menu-heading::before,
#p-Perryversum .vector-menu-heading::before,
#p-Drix .vector-menu-heading::before,
#p-BlueX .vector-menu-heading::before,
#p-OutBack .vector-menu-heading::before,
#p-TS-Universum .vector-menu-heading::before,
#p-Terranian_Star .vector-menu-heading::before,
#p-Spezielles .vector-menu-heading::before {
    content: "";
    display: inline-block;
    width: 1.2em;
    height: 1.2em;
    margin-right: 0.05em;
    background-size: contain;
    background-repeat: no-repeat;
    vertical-align: -0.18em;
}
 
/* Individuelle Icons */
#p-Kontakt .vector-menu-heading::before {
    background-image: url("/Wiki_TS/images/f/f0/Kontakt.png");
}


#p-Perryversum .vector-menu-heading::before {
    mw.loader.using('jquery').then(function () {
    background-image: url("/Wiki_TS/images/d/da/Icon-perry.png");
}


#p-Drix .vector-menu-heading::before {
        const sidebarTools = $('#p-toolbox .vector-menu-content-list');
    background-image: url("/Wiki_TS/images/a/a6/Drix.png");
        const builtinTools = $('#p-tb-list');
}


#p-BlueX .vector-menu-heading::before {
        if (sidebarTools.length && builtinTools.length) {
    background-image: url("/Wiki_TS/images/0/0e/OSK.png");
            builtinTools.empty();
            sidebarTools.children().clone().appendTo(builtinTools);
        }
    });
}
}


#p-OutBack .vector-menu-heading::before {
/* ============================================================
    background-image: url("/Wiki_TS/images/8/8e/Icon-outback.png");
  3) Vector-2022 – Collapse-Zustand speichern
}
  ============================================================ */


/* KORRIGIERT: TS-Universum */
mw.hook('wikipage.content').add(function () {
#p-TS-Universum .vector-menu-heading::before {
    background-image: url("/Wiki_TS/images/c/c3/T-Star.png");
}


/* KORRIGIERT: Terranian Star → Terranian_Star */
    if (mw.config.get('skin') !== 'vector-2022') return;
#p-Terranian_Star .vector-menu-heading::before {
    background-image: url("/Wiki_TS/images/c/c3/T-Star.png");
}


#p-Spezielles .vector-menu-heading::before {
    $('.vector-menu-heading').each(function () {
    background-image: url("/Wiki_TS/images/6/66/Spezielles.png");
}


/* Werkzeuge-Icon */
        const heading = $(this);
#p-Werkzeuge .vector-menu-heading::before,
        const content = heading.next('.vector-menu-content');
#p-tb .vector-menu-heading::before {
        const menu = heading.closest('.vector-menu');
    content: "🛠️";
        const id = menu.attr('id');
    font-size: 1em;
    margin-right: 0.3em;
    vertical-align: -0.1em;
}


/* ============================================================
        if (!id) return;
  SIDEBAR-DESIGN (Vector‑2022)
  ============================================================ */


nav#mw-panel.mw-sidebar {
        const saved = localStorage.getItem('v22-collapse-' + id);
    background-color: #FFBF00 !important;
    padding: 12px !important;
    border-radius: 6px !important;
    border: 1px solid #d6c48a !important;
}


nav#mw-panel.mw-sidebar .vector-menu-portal {
        if (saved === 'collapsed') {
    background-color: #FFDE6C !important;
            content.hide();
    border-radius: 4px !important;
            heading.addClass('collapsed');
    padding: 6px !important;
        }
}


/* Sidebar-Header */
        heading.off('click.v22').on('click.v22', function () {
#vector-sidebar .vector-menu-heading {
            heading.toggleClass('collapsed');
    background-color: #FFD766 !important;
            content.slideToggle(120);
    border-bottom: 2px solid #d6a300 !important;
}


/* ============================================================
            localStorage.setItem(
  EINKLAPPBARE SIDEBAR (für Common.js)
                'v22-collapse-' + id,
  ============================================================ */
                heading.hasClass('collapsed') ? 'collapsed' : 'open'
            );
        });
    });
});


.mw-portlet h3,
.mw-portlet .vector-menu-heading {
    cursor: pointer;
    user-select: none;
}


.mw-portlet h3::after,
.mw-portlet .vector-menu-heading::after {
    content: " ▾";
    float: right;
}
.mw-portlet h3.collapsed::after,
.mw-portlet .vector-menu-heading.collapsed::after {
    content: " ▸";
}
.mw-portlet .body {
    padding-left: 5px;
}


/* ============================================================
/* ============================================================
   THUMBNAIL-OPTIK (Sokrates-Effekt)
   4) Vector-2022 – Leere Menüs automatisch ausblenden
   ============================================================ */
   ============================================================ */


.cdx-menu-item__thumbnail,
mw.hook('wikipage.content').add(function () {
.cdx-thumbnail__image,
 
.cdx-thumbnail__placeholder {
     if (mw.config.get('skin') !== 'vector-2022') return;
    width: 50px !important;
     height: 50px !important;
    background-position: center !important;
    background-size: contain !important;
}


/* Artikel OHNE Bild → Sokrates-Nebel */
     $('.vector-menu').each(function () {
.cdx-thumbnail__placeholder {
     background-image: url("/Wiki_BlueX/images/c/c6/Sokratesicon.png") !important;
    opacity: 0.35 !important;
    filter: blur(1.2px) brightness(1.4) contrast(0.7) !important;
}


/* Artikel MIT Bild → normales Bild */
        const menu = $(this);
.cdx-thumbnail__image {
        const heading = menu.find('.vector-menu-heading');
    filter: none !important;
        const content = menu.find('.vector-menu-content');
    opacity: 1 !important;
}


/* Begriffsklärung → harte Aura */
        const headingEmpty = $.trim(heading.text()) === "";
.cdx-menu-item[title*="Begriffsklärung"] .cdx-thumbnail__placeholder {
        const contentEmpty = content.find('li').length === 0;
    opacity: 1 !important;
    filter: none !important;
    animation: pulseAura 3.2s ease-in-out infinite;
}


/* Aura-Puls */
        if (headingEmpty && contentEmpty) {
@keyframes pulseAura {
            menu.hide();
    0% { transform: scale(1); opacity: 1; }
        }
     50% { transform: scale(1.06); opacity: 0.95; }
     });
    100% { transform: scale(1); opacity: 1; }
});
}


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


$(document).ready(function() {
$(document).ready(function () {


     /* Vector‑2022 */
     const adminGroups = ['sysop', 'bureaucrat', 'interface-admin'];
    $('.mw-portlet .vector-menu-heading').each(function() {
    const userGroups = mw.config.get('wgUserGroups');
        const heading = $(this);


        // Vector‑2022: Inhalt liegt in .vector-menu-content-list
    // Nur Admins bekommen die Tools
        const content = heading.closest('.mw-portlet').find('.vector-menu-content-list');
    if (!userGroups.some(g => adminGroups.includes(g))) return;


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


            heading.on('click', function(e) {
    // Überschrift
                e.preventDefault();
    $container.append('<li class="vector-menu-heading">Admin-Werkzeuge</li>');
                e.stopPropagation();
                content.slideToggle(200);
                heading.toggleClass('collapsed');
            });
        }
    });


     /* Vector‑2011 */
     // ============================================================
     $('.mw-portlet h3').each(function() {
     // Werkzeuge (keine Doppelungen)
        const heading = $(this);
    // ============================================================
        const content = heading.next('.body');


        if (content.length) {
    function addTool(name, url) {
             heading.css('cursor', 'pointer');
        $container.append(
 
             $('<li>').append(
            heading.on('click', function() {
                $('<a>')
                content.slideToggle(200);
                    .attr('href', url)
                heading.toggleClass('collapsed');
                    .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 //
  Vector‑2022 Hauptmenü (optional)
mw.loader.load('ext.gadget.Navigation-popups');
  ============================================================ */
 
#vector-main-menu {
    background-color: #cfe8ff !important;
    border: 2px solid #7bb8ff !important;
}
 
#vector-main-menu .vector-pinnable-header {
    background-color: #d9edff !important;
    border-bottom: 2px solid #7bb8ff !important;
}

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');