Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt  | 
				Keine Bearbeitungszusammenfassung  | 
				||
| (42 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
mw.loader.using(['jquery'], function () {  | mw.loader.using(['jquery'], function () {  | ||
     $(document).ready(function () {  |      $(document).ready(function () {  | ||
         $('.smw-column-header').each(function () {  |          /*$('.smw-column-header').each(function () {  | ||
             // aktuellen HTML-Inhalt holen  |              // aktuellen HTML-Inhalt holen  | ||
             var html = $(this).html();  |              var html = $(this).html();  | ||
| Zeile 22: | Zeile 13: | ||
                 $(this).html(newHtml);  |                  $(this).html(newHtml);  | ||
             }  |              }  | ||
        });*/  | |||
        $(function () {  | |||
            $('<style>')  | |||
                .prop('type', 'text/css')  | |||
                .html(  | |||
                    '.breadcrumb-item { font-size: 17px !important; }' +  | |||
                    '.breadcrumb-nav { border-bottom: 2px solid #85bc20!important; margin-bottom: 20px !important; }'  | |||
                )  | |||
                .appendTo('head');  | |||
         });  |          });  | ||
    });  | |||
});  | });  | ||
// Namespace-Link für Unterseiten-Panel  | |||
function updateSubpageHeader() {  | |||
    // Das Header-Element finden  | |||
    const header = document.getElementById('subpage-tree-pnl-head');  | |||
     if (header) {  | |||
        // Aktuellen Namespace ermitteln  | |||
        const namespace = mw.config.get('wgCanonicalNamespace');  | |||
         const namespaceName = namespace || 'Hauptseite';  | |||
     if (   |         // Link zur Namespace-Hauptseite erstellen  | ||
        let namespaceLink;  | |||
         if (namespace) {  | |||
            // Für Namespaces wie "Verein:" zur Hauptseite des Namespace  | |||
            namespaceLink = `/${namespace}:Hauptseite`;  | |||
        } else {  | |||
         if (   |              // Für Hauptnamespace zur allgemeinen Hauptseite  | ||
             namespaceLink = '/Hauptseite';  | |||
         }  |          }  | ||
         if (   | |||
        // Header mit klickbarem Link ersetzen  | |||
        header.innerHTML = `<a href="/wiki${namespaceLink}" style="color: inherit; text-decoration: none;">${namespaceName}</a>`;  | |||
        // Hover-Effekt hinzufügen  | |||
        const link = header.querySelector('a');  | |||
         if (link) {  | |||
            link.addEventListener('mouseenter', function() {  | |||
                this.style.textDecoration = 'underline';  | |||
            });  | |||
            link.addEventListener('mouseleave', function() {  | |||
                this.style.textDecoration = 'none';  | |||
            });  | |||
         }  |          }  | ||
     }  |      }  | ||
}  | |||
// Nach dem Laden der Seite ausführen  | |||
$(document).ready(function() {  | |||
    // Kurze Verzögerung, da der Unterseiten-Baum dynamisch geladen wird  | |||
    setTimeout(updateSubpageHeader, 100);  | |||
});  | |||
// Auch nach AJAX-Updates ausführen  | |||
$(document).ajaxComplete(function() {  | |||
    setTimeout(updateSubpageHeader, 100);  | |||
});  | |||
// Entferne "Hauptseite/" aus Linktexten  | |||
function cleanPageLinks() {  | |||
    // Alle Links finden, die "Hauptseite/" im Text haben  | |||
    const links = document.querySelectorAll('a[href*="Hauptseite/"]');  | |||
    links.forEach(function(link) {  | |||
        // Nur den sichtbaren Text ändern, nicht den href  | |||
        if (link.textContent.includes('Hauptseite/')) {  | |||
            link.textContent = link.textContent.replace('Hauptseite/', '');  | |||
        }  | |||
    });  | |||
}  | |||
// JavaScript nach dem Laden der Seite ausführen  | |||
$(document).ready(function() {  | |||
    cleanPageLinks();  | |||
});  | |||
// Auch nach AJAX-Updates ausführen (für dynamische Inhalte)  | |||
$(document).ajaxComplete(function() {  | |||
    cleanPageLinks();  | |||
});  | |||
$(function(){  | |||
    // In allen Category-Ausgaben: jede LI, die einen <a class="new"> enthält, entfernen  | |||
    $('.smw-columnlist-container a.new').each(function(){  | |||
        $(this).closest('li').remove();  | |||
    });  | |||
});  | |||
$(function(){  | |||
    // 1. Rote Links raus (wie gehabt)  | |||
    $('.smw-columnlist-container a.new').each(function(){  | |||
        $(this).closest('li').remove();  | |||
    });  | |||
    // 2. Jetzt jede Buchstaben-Überschrift entfernen, deren Liste leer ist  | |||
    $('.smw-column-header').each(function(){  | |||
        var $header = $(this),  | |||
            $ul = $header.next('ul');  | |||
        if ($ul.length && $ul.children('li').length === 0) {  | |||
            $ul.remove();  | |||
            $header.remove();  | |||
        }  | |||
    });  | |||
});  | });  | ||
// attachments immer in neuem Tab öffnen  | |||
(function () {  | |||
    // Hilfs-Funktion, die alle neuen Attachment-Links anpasst  | |||
    function updateAttachmentLinks() {  | |||
        // Alle Download-Links in der Datei-Liste  | |||
        $('.attachments-filelist a.oojsplus-data-gridWidget-url-button')  | |||
            .attr('target','_blank')  | |||
            .attr('rel','noopener noreferrer');  | |||
    }  | |||
    // beim Seiten-Load einmal ausführen  | |||
    $(updateAttachmentLinks);  | |||
    // und mit MutationObserver auf nachträglich geladene Links achten  | |||
    var container = document.querySelector('.attachments-filelist');  | |||
    if (container) {  | |||
        new MutationObserver(function (mutations) {  | |||
            updateAttachmentLinks();  | |||
        }).observe(container, {  | |||
            childList: true,  | |||
            subtree: true  | |||
        });  | |||
    }  | |||
})();  | |||
/* Startseiten-Menü: ohne Expander, #subpage-tree-pnl ausblenden, kein Einrücken unten */  | |||
(function (mw, $) {  | |||
    'use strict';  | |||
    function isMainView() {  | |||
        return mw.config.get('wgIsMainPage') && mw.config.get('wgAction') === 'view';  | |||
    }  | |||
    // NEUE Funktion: Prüft ob Benutzer angemeldet ist  | |||
    function isLoggedIn() {  | |||
        return !mw.user.isAnon();  | |||
    }  | |||
    function hideSubpageTreePanel($scope) {  | |||
        // Nur ausführen wenn auf Hauptseite UND angemeldet  | |||
        if (!isMainView() || !isLoggedIn()) return;  | |||
        // global (nur auf Startseite, weil Funktion nur hier läuft)  | |||
        mw.util.addCSS('#subpage-tree-pnl{display:none!important;}');  | |||
        // sofort im aktuellen/neu geladenen Bereich  | |||
        ($scope || $(document)).find('#subpage-tree-pnl').hide().attr('aria-hidden', 'true');  | |||
    }  | |||
    function injectHomeMenu($root) {  | |||
        // Nur ausführen wenn auf Hauptseite UND angemeldet  | |||
        if (!isMainView() || !isLoggedIn()) return;  | |||
        if (document.getElementById('home-static-menu')) return; // Duplikate vermeiden  | |||
        var $container = ($root || $(document)).find('#sb-pri-cnt:visible').last();  | |||
        if (!$container.length) return;  | |||
        const menuHtml = `<div id="home-static-menu" class="home-static-menu">  | |||
            <div class="enhanced-sidebar-cnt">  | |||
                <div id="9a659-pnl" class="card w-100 bg-transp tree-component test">  | |||
                    <div id="9a659-head" class="card-header menu-title">Themen</div>  | |||
                    <ul id="9a659-menu" class="mws-tree root w-100 bg-transp" role="tree" aria-labelledby="9a659-head" tabindex="0">  | |||
                        <li id="43568" class="mws-tree-item internal" role="treeitem">  | |||
                            <div><a id="43568-label" class="mws-tree-item-label" href="/wiki/Verein:Hauptseite">Verein</a></div>  | |||
                        </li>  | |||
                        <li id="12180" class="mws-tree-item internal" role="treeitem">  | |||
                            <div><a id="12180-label" class="mws-tree-item-label" href="/wiki/Arbeitsorganisation:Hauptseite">Arbeitsorganisation</a></div>  | |||
                        </li>  | |||
                        <li id="94668" class="mws-tree-item internal" role="treeitem">  | |||
                            <div><a id="94668-label" class="mws-tree-item-label" href="/wiki/Angebote:Hauptseite">Angebote</a></div>  | |||
                        </li>  | |||
                        <li id="16759" class="mws-tree-item internal" role="treeitem">  | |||
                            <div><a id="16759-label" class="mws-tree-item-label" href="/wiki/Gruppenarbeit:Hauptseite">Gruppenarbeit</a></div>  | |||
                        </li>  | |||
                        <li id="20ee3" class="mws-tree-item internal" role="treeitem">  | |||
                            <div><a id="20ee3-label" class="mws-tree-item-label" href="/wiki/Mitarbeit:Hauptseite">Mitarbeit</a></div>  | |||
                        </li>  | |||
                        <li id="d5272" class="mws-tree-item internal" role="treeitem">  | |||
                            <div><a id="d5272-label" class="mws-tree-item-label" href="/wiki/Kommunikation:Hauptseite">Kommunikation</a></div>  | |||
                        </li>  | |||
                        <li id="48945" class="mws-tree-item internal" role="treeitem">  | |||
                            <div><a id="48945-label" class="mws-tree-item-label" href="/wiki/QM:Hauptseite">QM</a></div>  | |||
                        </li>  | |||
                        <li id="27eea" class="mws-tree-item internal" role="treeitem">  | |||
                            <div><a id="27eea-label" class="mws-tree-item-label" href="/wiki/Mitglieder:Hauptseite">Mitglieder</a></div>  | |||
                        </li>  | |||
                        <li id="3f70b" class="mws-tree-item internal" role="treeitem">  | |||
                            <div><a id="3f70b-label" class="mws-tree-item-label" href="/wiki/wikiHilfe:Anleitung">wikiHilfe</a></div>  | |||
                        </li>  | |||
                    </ul>  | |||
                </div>  | |||
            </div>  | |||
        </div>`;  | |||
        $container.append(menuHtml);  | |||
        // Safety: Falls andere Skripte Expander nachträglich hinzufügen  | |||
        $('#home-static-menu .mws-tree-expander').remove();  | |||
        // Einrückung Top-Level neutralisieren (nur in unserem Menü)  | |||
        mw.util.addCSS(`  | |||
            #home-static-menu #9a659-menu {  | |||
                padding-left: 0 !important;  | |||
                margin-left: 0 !important;  | |||
            }  | |||
            #home-static-menu #9a659-menu > li {  | |||
                margin-left: 0 !important;  | |||
            }  | |||
            #home-static-menu #9a659-menu > li > div {  | |||
                padding-left: 0 !important;  | |||
                margin-left: 0 !important;  | |||
            }  | |||
            #home-static-menu #9a659-menu > li .mws-tree-item-label {  | |||
                padding-left: 0 !important;  | |||
                margin-left: 0 !important;  | |||
            }  | |||
        `);  | |||
    }  | |||
    // DOM ready  | |||
    $(function () {  | |||
        injectHomeMenu();  | |||
        hideSubpageTreePanel();  | |||
    });  | |||
    // Dynamisch nachgeladene Inhalte (Discovery, Ajax, Tabs)  | |||
    mw.hook('wikipage.content').add(function ($content) {  | |||
        injectHomeMenu($content);  | |||
        hideSubpageTreePanel($content);  | |||
    });  | |||
    // Fallback, falls #sb-pri-cnt später kommt  | |||
    var tries = 0, max = 10;  | |||
    var iv = setInterval(function () {  | |||
        if (document.getElementById('sb-pri-cnt') || ++tries >= max) {  | |||
            clearInterval(iv);  | |||
            injectHomeMenu();  | |||
            hideSubpageTreePanel();  | |||
        }  | |||
    }, 300);  | |||
})(mediaWiki, jQuery);  | |||
Aktuelle Version vom 17. Oktober 2025, 13:07 Uhr
mw.loader.using(['jquery'], function () {
    $(document).ready(function () {
        /*$('.smw-column-header').each(function () {
            // aktuellen HTML-Inhalt holen
            var html = $(this).html();
            // "Fortsetzung" entfernen, Leerzeichen ggf. bereinigen
            var newHtml = html.replace(/Fortsetzung/g, '').trim();
            // falls nach dem Entfernen gar kein Text übrig ist, komplette Header-Box ausblenden:
            if (newHtml === '') {
                $(this).hide();
            } else {
                // ansonsten nur den Text überschreiben, sodass z. B. "B Fortsetzung" → "B" wird
                $(this).html(newHtml);
            }
        });*/
        $(function () {
            $('<style>')
                .prop('type', 'text/css')
                .html(
                    '.breadcrumb-item { font-size: 17px !important; }' +
                    '.breadcrumb-nav { border-bottom: 2px solid #85bc20!important; margin-bottom: 20px !important; }'
                )
                .appendTo('head');
        });
    });
});
// Namespace-Link für Unterseiten-Panel
function updateSubpageHeader() {
    // Das Header-Element finden
    const header = document.getElementById('subpage-tree-pnl-head');
    if (header) {
        // Aktuellen Namespace ermitteln
        const namespace = mw.config.get('wgCanonicalNamespace');
        const namespaceName = namespace || 'Hauptseite';
        // Link zur Namespace-Hauptseite erstellen
        let namespaceLink;
        if (namespace) {
            // Für Namespaces wie "Verein:" zur Hauptseite des Namespace
            namespaceLink = `/${namespace}:Hauptseite`;
        } else {
            // Für Hauptnamespace zur allgemeinen Hauptseite
            namespaceLink = '/Hauptseite';
        }
        // Header mit klickbarem Link ersetzen
        header.innerHTML = `<a href="/wiki${namespaceLink}" style="color: inherit; text-decoration: none;">${namespaceName}</a>`;
        // Hover-Effekt hinzufügen
        const link = header.querySelector('a');
        if (link) {
            link.addEventListener('mouseenter', function() {
                this.style.textDecoration = 'underline';
            });
            link.addEventListener('mouseleave', function() {
                this.style.textDecoration = 'none';
            });
        }
    }
}
// Nach dem Laden der Seite ausführen
$(document).ready(function() {
    // Kurze Verzögerung, da der Unterseiten-Baum dynamisch geladen wird
    setTimeout(updateSubpageHeader, 100);
});
// Auch nach AJAX-Updates ausführen
$(document).ajaxComplete(function() {
    setTimeout(updateSubpageHeader, 100);
});
// Entferne "Hauptseite/" aus Linktexten
function cleanPageLinks() {
    // Alle Links finden, die "Hauptseite/" im Text haben
    const links = document.querySelectorAll('a[href*="Hauptseite/"]');
    links.forEach(function(link) {
        // Nur den sichtbaren Text ändern, nicht den href
        if (link.textContent.includes('Hauptseite/')) {
            link.textContent = link.textContent.replace('Hauptseite/', '');
        }
    });
}
// JavaScript nach dem Laden der Seite ausführen
$(document).ready(function() {
    cleanPageLinks();
});
// Auch nach AJAX-Updates ausführen (für dynamische Inhalte)
$(document).ajaxComplete(function() {
    cleanPageLinks();
});
$(function(){
    // In allen Category-Ausgaben: jede LI, die einen <a class="new"> enthält, entfernen
    $('.smw-columnlist-container a.new').each(function(){
        $(this).closest('li').remove();
    });
});
$(function(){
    // 1. Rote Links raus (wie gehabt)
    $('.smw-columnlist-container a.new').each(function(){
        $(this).closest('li').remove();
    });
    // 2. Jetzt jede Buchstaben-Überschrift entfernen, deren Liste leer ist
    $('.smw-column-header').each(function(){
        var $header = $(this),
            $ul = $header.next('ul');
        if ($ul.length && $ul.children('li').length === 0) {
            $ul.remove();
            $header.remove();
        }
    });
});
// attachments immer in neuem Tab öffnen
(function () {
    // Hilfs-Funktion, die alle neuen Attachment-Links anpasst
    function updateAttachmentLinks() {
        // Alle Download-Links in der Datei-Liste
        $('.attachments-filelist a.oojsplus-data-gridWidget-url-button')
            .attr('target','_blank')
            .attr('rel','noopener noreferrer');
    }
    // beim Seiten-Load einmal ausführen
    $(updateAttachmentLinks);
    // und mit MutationObserver auf nachträglich geladene Links achten
    var container = document.querySelector('.attachments-filelist');
    if (container) {
        new MutationObserver(function (mutations) {
            updateAttachmentLinks();
        }).observe(container, {
            childList: true,
            subtree: true
        });
    }
})();
/* Startseiten-Menü: ohne Expander, #subpage-tree-pnl ausblenden, kein Einrücken unten */
(function (mw, $) {
    'use strict';
    function isMainView() {
        return mw.config.get('wgIsMainPage') && mw.config.get('wgAction') === 'view';
    }
    // NEUE Funktion: Prüft ob Benutzer angemeldet ist
    function isLoggedIn() {
        return !mw.user.isAnon();
    }
    function hideSubpageTreePanel($scope) {
        // Nur ausführen wenn auf Hauptseite UND angemeldet
        if (!isMainView() || !isLoggedIn()) return;
        // global (nur auf Startseite, weil Funktion nur hier läuft)
        mw.util.addCSS('#subpage-tree-pnl{display:none!important;}');
        // sofort im aktuellen/neu geladenen Bereich
        ($scope || $(document)).find('#subpage-tree-pnl').hide().attr('aria-hidden', 'true');
    }
    function injectHomeMenu($root) {
        // Nur ausführen wenn auf Hauptseite UND angemeldet
        if (!isMainView() || !isLoggedIn()) return;
        if (document.getElementById('home-static-menu')) return; // Duplikate vermeiden
        var $container = ($root || $(document)).find('#sb-pri-cnt:visible').last();
        if (!$container.length) return;
        const menuHtml = `<div id="home-static-menu" class="home-static-menu">
            <div class="enhanced-sidebar-cnt">
                <div id="9a659-pnl" class="card w-100 bg-transp tree-component test">
                    <div id="9a659-head" class="card-header menu-title">Themen</div>
                    <ul id="9a659-menu" class="mws-tree root w-100 bg-transp" role="tree" aria-labelledby="9a659-head" tabindex="0">
                        <li id="43568" class="mws-tree-item internal" role="treeitem">
                            <div><a id="43568-label" class="mws-tree-item-label" href="/wiki/Verein:Hauptseite">Verein</a></div>
                        </li>
                        <li id="12180" class="mws-tree-item internal" role="treeitem">
                            <div><a id="12180-label" class="mws-tree-item-label" href="/wiki/Arbeitsorganisation:Hauptseite">Arbeitsorganisation</a></div>
                        </li>
                        <li id="94668" class="mws-tree-item internal" role="treeitem">
                            <div><a id="94668-label" class="mws-tree-item-label" href="/wiki/Angebote:Hauptseite">Angebote</a></div>
                        </li>
                        <li id="16759" class="mws-tree-item internal" role="treeitem">
                            <div><a id="16759-label" class="mws-tree-item-label" href="/wiki/Gruppenarbeit:Hauptseite">Gruppenarbeit</a></div>
                        </li>
                        <li id="20ee3" class="mws-tree-item internal" role="treeitem">
                            <div><a id="20ee3-label" class="mws-tree-item-label" href="/wiki/Mitarbeit:Hauptseite">Mitarbeit</a></div>
                        </li>
                        <li id="d5272" class="mws-tree-item internal" role="treeitem">
                            <div><a id="d5272-label" class="mws-tree-item-label" href="/wiki/Kommunikation:Hauptseite">Kommunikation</a></div>
                        </li>
                        <li id="48945" class="mws-tree-item internal" role="treeitem">
                            <div><a id="48945-label" class="mws-tree-item-label" href="/wiki/QM:Hauptseite">QM</a></div>
                        </li>
                        <li id="27eea" class="mws-tree-item internal" role="treeitem">
                            <div><a id="27eea-label" class="mws-tree-item-label" href="/wiki/Mitglieder:Hauptseite">Mitglieder</a></div>
                        </li>
                        <li id="3f70b" class="mws-tree-item internal" role="treeitem">
                            <div><a id="3f70b-label" class="mws-tree-item-label" href="/wiki/wikiHilfe:Anleitung">wikiHilfe</a></div>
                        </li>
                    </ul>
                </div>
            </div>
        </div>`;
        $container.append(menuHtml);
        // Safety: Falls andere Skripte Expander nachträglich hinzufügen
        $('#home-static-menu .mws-tree-expander').remove();
        // Einrückung Top-Level neutralisieren (nur in unserem Menü)
        mw.util.addCSS(`
            #home-static-menu #9a659-menu {
                padding-left: 0 !important;
                margin-left: 0 !important;
            }
            #home-static-menu #9a659-menu > li {
                margin-left: 0 !important;
            }
            #home-static-menu #9a659-menu > li > div {
                padding-left: 0 !important;
                margin-left: 0 !important;
            }
            #home-static-menu #9a659-menu > li .mws-tree-item-label {
                padding-left: 0 !important;
                margin-left: 0 !important;
            }
        `);
    }
    // DOM ready
    $(function () {
        injectHomeMenu();
        hideSubpageTreePanel();
    });
    // Dynamisch nachgeladene Inhalte (Discovery, Ajax, Tabs)
    mw.hook('wikipage.content').add(function ($content) {
        injectHomeMenu($content);
        hideSubpageTreePanel($content);
    });
    // Fallback, falls #sb-pri-cnt später kommt
    var tries = 0, max = 10;
    var iv = setInterval(function () {
        if (document.getElementById('sb-pri-cnt') || ++tries >= max) {
            clearInterval(iv);
            injectHomeMenu();
            hideSubpageTreePanel();
        }
    }, 300);
})(mediaWiki, jQuery);