Zum Inhalt springen

MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus BlueX
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
KKeine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
/* Das folgende JavaScript wird für alle Benutzer geladen. */
/* ============================================================
console.log("Common.js läuft!");
  COMMON.JS – Master-Version für mehrere Wikis
alert("Common.js läuft!");
  Neutral, modular, mit Pfaden für BlueX (/Wiki_BlueX/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);


/** Namensräume für die Seitenvorschau **/
/* ============================================================
mw.config.set('wgContentNamespaces', [0, 100]);
  1) Edit-Icons für "Bearbeiten" & "Quelltext bearbeiten"
  ============================================================ */


//
mw.hook('wikipage.content').add(function ($content) {
// 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);
    $content.find('.mw-editsection a').each(function () {
         if (list) list = list.getElementsByTagName('div')[0];
         const $a = $(this);
         if (list) list = list.getElementsByTagName('ul')[0];
         const text = $a.text().trim();
        if (!list) return;


         if (action === 'add') {
         // Basis-Styling für Icon-Links
            var aNode = document.createElement('a');
            var liNode = document.createElement('li');
 
            aNode.appendChild(document.createTextNode(name));
            aNode.setAttribute('href', link);
            liNode.appendChild(aNode);
            liNode.className = 'plainlinks';
            list.appendChild(liNode);
        }
 
        if (action === 'remove') {
            var items = list.getElementsByTagName('li');
            for (var i = 0; i < items.length; i++) {
                var a = items[i].getElementsByTagName('a')[0];
                if (a && (a.innerHTML === name || a.href === link)) {
                    list.removeChild(items[i]);
                }
            }
        }
    } catch (e) {
        return;
    }
}
 
function CustomizeModificationsOfSidebar() {
    // Toolbox‑Einträge für BlueX
    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);
 
 
//
// Icons für Bearbeiten / Quelltext bearbeiten (Vector‑2022)
//
mw.hook('wikipage.content').add(function($content) {
 
    $content.find('.mw-editsection a').each(function() {
        var $a = $(this);
        var text = $a.text().trim();
 
        // Text ausblenden
         $a.css({
         $a.css({
             'font-size': '0',
             'font-size': '0',
Zeile 79: Zeile 31:
         });
         });


         // Normales Bearbeiten
         // Icon-Zuweisung (BlueX-Pfade)
         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 94: Zeile 44:
});
});


// === BlueX-Sidebar für Vector‑2022 (statisch) ===
 
mw.loader.using(['mediawiki.util'], function () {
 
/* ============================================================
  2) Sidebar-Werkzeuge → eingebaute Toolbox kopieren
  ============================================================ */
 
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;
     if (mw.config.get('skin') !== 'vector-2022') return;


     $(function () {
     $('.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;


         // Prüfen, ob wir schon eine Sidebar gebaut haben
         const saved = localStorage.getItem('v22-collapse-' + id);
        if (document.getElementById('bx-sidebar')) return;


         // Container für Inhalt finden (robust)
         if (saved === 'collapsed') {
        var $content = $('#content, #mw-content, #mw-content-text').first();
            content.hide();
        if (!$content.length) return;
            heading.addClass('collapsed');
        }


         // Sidebar-Daten (entspricht deiner MediaWiki:Sidebar)
         heading.off('click.v22').on('click.v22', function () {
        var data = [
             heading.toggleClass('collapsed');
            {
             content.slideToggle(120);
                title: 'Navigation',
                items: [
                    { href: mw.util.getUrl('BlueX-Universum'), text: 'Hauptseite' },
                    { href: mw.util.getUrl('Hilfe:Handbuch'), text: 'Handbuch' },
                    { href: mw.util.getUrl('Hilfe:FAQ'), text: 'FAQ' }
                ]
            },
            {
                title: 'Kontakt',
                items: [
                    { href: '#', text: 'Kontakt 1' },
                    { href: '#', text: 'Kontakt 2' }
                ]
            },
            {
                title: 'BlueX',
                items: [
                    { href: mw.util.getUrl('Kategorie:Blue-X'), text: 'Blue-X' },
                    { href: mw.util.getUrl('Kategorie:Blue-X_Glossar'), text: 'Blue-X Glossar' }
                ]
            },
            {
                title: 'Perryversum',
                items: [
                    { href: mw.util.getUrl('Kategorie:Perryversum'), text: 'Perryversum' }
                ]
            },
            {
                title: 'OutBack',
                items: [
                    { href: mw.util.getUrl('Kategorie:OutBack'), text: 'OutBack' },
                    { href: mw.util.getUrl('Kategorie:OutBack_Glossar'), text: 'OutBack Glossar' }
                ]
            },
            {
                title: 'Terranian-Star',
                items: [
                    { href: mw.util.getUrl('Kategorie:Terranian_Star'), text: 'Terranian-Star' },
                    { href: mw.util.getUrl('Kategorie:Terranian_Star_Glossar'), text: 'Terranian Star Glossar' }
                ]
            },
             {
                title: 'Drix',
                items: [
                    { href: mw.util.getUrl('Kategorie:Drix'), text: 'Drix' },
                    { href: mw.util.getUrl('Kategorie:Drix_Glossar'), text: 'Drix Glossar' }
                ]
            },
             {
                title: 'Spezielles',
                items: [
                    { href: mw.util.getUrl('Spezial:Letzte_Änderungen'), text: 'Letzte Änderungen' },
                    { href: mw.util.getUrl('Spezial:Spezialseiten'), text: 'Spezialseiten' }
                ]
            }
        ];


        // Sidebar-Container
            localStorage.setItem(
        var $sidebar = $('<div id="bx-sidebar"></div>').css({
                'v22-collapse-' + id,
            width: '230px',
                heading.hasClass('collapsed') ? 'collapsed' : 'open'
            padding: '10px',
            );
            'box-sizing': 'border-box'
         });
         });
    });
});
/* ============================================================
  Admin-Werkzeuge – zentral für alle Skins (Vector 2011 + 2022)
  ============================================================ */


        // Inhalt nach rechts schieben
$(document).ready(function () {
        $content.parent().css('display', 'flex');
        $content.css('margin-left', '20px');
        $content.before($sidebar);


        // Blöcke bauen
    const adminGroups = ['sysop', 'bureaucrat', 'interface-admin'];
        data.forEach(function (block) {
    const userGroups = mw.config.get('wgUserGroups');
            var $portal = $('<div class="bx-portal"></div>').css({
                'margin-bottom': '15px',
                'border-bottom': '1px solid #ddd',
                'padding-bottom': '5px'
            });


            var $header = $('<div class="bx-header"></div>').text(block.title).css({
    // Nur Admins bekommen die Tools
                'font-weight': 'bold',
    if (!userGroups.some(g => adminGroups.includes(g))) return;
                'cursor': 'pointer',
                'padding': '4px 0'
            });


            var $arrow = $('<span>▼</span>').css({
    // Zielcontainer (Vector-2011 + Vector-2022 kompatibel)
                'float': 'right',
    const $container = $('#p-tb .vector-menu-content-list');
                'transition': '0.2s',
    if (!$container.length) return;
                'font-weight': 'bold'
            });


            var $contentList = $('<div class="bx-content"></div>');
    // Überschrift
            var $ul = $('<ul></ul>').css('margin-left', '12px');
    $container.append('<li class="vector-menu-heading">Admin-Werkzeuge</li>');


            block.items.forEach(function (item) {
    // ============================================================
                var $li = $('<li></li>');
    // Werkzeuge (keine Doppelungen)
                var $a = $('<a></a>').attr('href', item.href).text(item.text);
    // ============================================================
                $li.append($a);
                $ul.append($li);
            });


            $contentList.append($ul);
    function addTool(name, url) {
             $header.append($arrow);
        $container.append(
            $portal.append($header).append($contentList);
             $('<li>').append(
             $sidebar.append($portal);
                $('<a>')
                    .attr('href', url)
                    .text(name)
             )
        );
    }


            // Klick zum Einklappen
    addTool('Spezialseiten', mw.util.getUrl('Spezial:Spezialseiten'));
            $header.on('click', function () {
    addTool('Textbausteine', '/Wiki_BlueX/index.php/Kategorie:Textbausteine');
                if ($contentList.is(':visible')) {
    addTool('Letzte Änderungen', '/Wiki_BlueX/index.php/Spezial:Letzte_Änderungen');
                    $contentList.slideUp(150);
    addTool('Alle Seiten', '/Wiki_BlueX/index.php/Spezial:Alle_Seiten');
                    $arrow.css('transform', 'rotate(-90deg)');
    addTool('Zufällige Seite', '/Wiki_BlueX/index.php/Spezial:Zufällige_Seite');
                } else {
     addTool('Löschkandidaten', '/Wiki_BlueX/index.php/Kategorie:Löschkandidaten');
                    $contentList.slideDown(150);
                    $arrow.css('transform', 'rotate(0deg)');
                }
            });
        });
     });
});
});
// Popup Gadget auch für Gäste //
mw.loader.load('ext.gadget.Navigation-popups');

Aktuelle Version vom 26. Juni 2026, 13:43 Uhr

/* ============================================================
   COMMON.JS – Master-Version für mehrere Wikis
   Neutral, modular, mit Pfaden für BlueX (/Wiki_BlueX/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 (BlueX-Pfade)
        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")');
        }
    });

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



/* ============================================================
   2) Sidebar-Werkzeuge → eingebaute Toolbox kopieren
   ============================================================ */

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

/* ============================================================
   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_BlueX/index.php/Kategorie:Textbausteine');
    addTool('Letzte Änderungen', '/Wiki_BlueX/index.php/Spezial:Letzte_Änderungen');
    addTool('Alle Seiten', '/Wiki_BlueX/index.php/Spezial:Alle_Seiten');
    addTool('Zufällige Seite', '/Wiki_BlueX/index.php/Spezial:Zufällige_Seite');
    addTool('Löschkandidaten', '/Wiki_BlueX/index.php/Kategorie:Löschkandidaten');
});

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