Zuletzt bearbeitet vor einer Woche
von Mark Wagner

MediaWiki:Common.js: Unterschied zwischen den Versionen

Keine Kategorien vergebenBearbeiten
Änderung 9695 von Mark.wagner (Diskussion) rückgängig gemacht.
Markierung: Rückgängigmachung
Keine Bearbeitungszusammenfassung
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();
             // "Fortsetzung" entfernen, Leerzeichen ggf. bereinigen
             // "Fortsetzung" entfernen, Leerzeichen ggf. bereinigen
             var newHtml = html.replace(/Fortsetzung/g, '').trim();
             var newHtml = html.replace(/Fortsetzung/g, '').trim();
             // falls nach dem Entfernen gar kein Text übrig ist, komplette Header-Box ausblenden:
             // falls nach dem Entfernen gar kein Text übrig ist, komplette Header-Box ausblenden:
             if (newHtml === '') {
             if (newHtml === '') {
                 $(this).hide();
                 $(this).hide();
             } else {
             } else {
                 // ansonsten nur den Text überschreiben, sodass z. B. "B Fortsetzung" → "B" wird
                 // ansonsten nur den Text überschreiben, sodass z. B. "B Fortsetzung" → "B" wird
                 $(this).html(newHtml);
                 $(this).html(newHtml);
             }
             }
         });*/
         });*/
         $(function () {
         $(function () {
    $('<style>')
    $('<style>')
      .prop('type', 'text/css')
      .prop('type', 'text/css')
      .html(
      .html(
        '.breadcrumb-item { font-size: 17px !important; }' +
        '.breadcrumb-item { font-size: 17px !important; }' +
        '.breadcrumb-nav  { border-bottom: 2px solid #85bc20!important; margin-bottom: 20px !important; }'
        '.breadcrumb-nav  { border-bottom: 2px solid #85bc20!important; margin-bottom: 20px !important; }'
      )
      )
      .appendTo('head');
      .appendTo('head');
});
});
});
});
});
});
// Namespace-Link für Unterseiten-Panel
// Namespace-Link für Unterseiten-Panel
function updateSubpageHeader() {
function updateSubpageHeader() {
     // Das Header-Element finden
     // Das Header-Element finden
     const header = document.getElementById('subpage-tree-pnl-head');
     const header = document.getElementById('subpage-tree-pnl-head');
      
      
     if (header) {
     if (header) {
         // Aktuellen Namespace ermitteln
         // Aktuellen Namespace ermitteln
         const namespace = mw.config.get('wgCanonicalNamespace');
         const namespace = mw.config.get('wgCanonicalNamespace');
         const namespaceName = namespace || 'Hauptseite';
         const namespaceName = namespace || 'Hauptseite';
          
          
         // Link zur Namespace-Hauptseite erstellen
         // Link zur Namespace-Hauptseite erstellen
         let namespaceLink;
         let namespaceLink;
         if (namespace) {
         if (namespace) {
             // Für Namespaces wie "Verein:" zur Hauptseite des Namespace
             // Für Namespaces wie "Verein:" zur Hauptseite des Namespace
             namespaceLink = `/${namespace}:Hauptseite`;
             namespaceLink = `/${namespace}:Hauptseite`;
         } else {
         } else {
             // Für Hauptnamespace zur allgemeinen Hauptseite
             // Für Hauptnamespace zur allgemeinen Hauptseite
             namespaceLink = '/Hauptseite';
             namespaceLink = '/Hauptseite';
         }
         }
          
          
         // Header mit klickbarem Link ersetzen
         // Header mit klickbarem Link ersetzen
         header.innerHTML = `<a href="/wiki${namespaceLink}" style="color: inherit; text-decoration: none;">${namespaceName}</a>`;
         header.innerHTML = `<a href="/wiki${namespaceLink}" style="color: inherit; text-decoration: none;">${namespaceName}</a>`;
          
          
         // Hover-Effekt hinzufügen
         // Hover-Effekt hinzufügen
         const link = header.querySelector('a');
         const link = header.querySelector('a');
         if (link) {
         if (link) {
             link.addEventListener('mouseenter', function() {
             link.addEventListener('mouseenter', function() {
                 this.style.textDecoration = 'underline';
                 this.style.textDecoration = 'underline';
             });
             });
             link.addEventListener('mouseleave', function() {
             link.addEventListener('mouseleave', function() {
                 this.style.textDecoration = 'none';
                 this.style.textDecoration = 'none';
             });
             });
         }
         }
     }
     }
}
}


// Nach dem Laden der Seite ausführen
// Nach dem Laden der Seite ausführen
$(document).ready(function() {
$(document).ready(function() {
     // Kurze Verzögerung, da der Unterseiten-Baum dynamisch geladen wird
     // Kurze Verzögerung, da der Unterseiten-Baum dynamisch geladen wird
     setTimeout(updateSubpageHeader, 100);
     setTimeout(updateSubpageHeader, 100);
});
});


// Auch nach AJAX-Updates ausführen
// Auch nach AJAX-Updates ausführen
$(document).ajaxComplete(function() {
$(document).ajaxComplete(function() {
     setTimeout(updateSubpageHeader, 100);
     setTimeout(updateSubpageHeader, 100);
});
});
// Entferne "Hauptseite/" aus Linktexten
// Entferne "Hauptseite/" aus Linktexten
function cleanPageLinks() {
function cleanPageLinks() {
     // Alle Links finden, die "Hauptseite/" im Text haben
     // Alle Links finden, die "Hauptseite/" im Text haben
     const links = document.querySelectorAll('a[href*="Hauptseite/"]');
     const links = document.querySelectorAll('a[href*="Hauptseite/"]');
      
      
     links.forEach(function(link) {
     links.forEach(function(link) {
         // Nur den sichtbaren Text ändern, nicht den href
         // Nur den sichtbaren Text ändern, nicht den href
         if (link.textContent.includes('Hauptseite/')) {
         if (link.textContent.includes('Hauptseite/')) {
             link.textContent = link.textContent.replace('Hauptseite/', '');
             link.textContent = link.textContent.replace('Hauptseite/', '');
         }
         }
     });
     });
}
}


// JavaScript nach dem Laden der Seite ausführen
// JavaScript nach dem Laden der Seite ausführen
$(document).ready(function() {
$(document).ready(function() {
     cleanPageLinks();
     cleanPageLinks();
});
});


// Auch nach AJAX-Updates ausführen (für dynamische Inhalte)
// Auch nach AJAX-Updates ausführen (für dynamische Inhalte)
$(document).ajaxComplete(function() {
$(document).ajaxComplete(function() {
     cleanPageLinks();
     cleanPageLinks();
});
});


$(function(){
$(function(){
   // In allen Category-Ausgaben: jede LI, die einen <a class="new"> enthält, entfernen
   // In allen Category-Ausgaben: jede LI, die einen <a class="new"> enthält, entfernen
   $('.smw-columnlist-container a.new').each(function(){
   $('.smw-columnlist-container a.new').each(function(){
     $(this).closest('li').remove();
     $(this).closest('li').remove();
   });
   });
});
});
$(function(){
$(function(){
   // 1. Rote Links raus (wie gehabt)
   // 1. Rote Links raus (wie gehabt)
   $('.smw-columnlist-container a.new').each(function(){
   $('.smw-columnlist-container a.new').each(function(){
     $(this).closest('li').remove();
     $(this).closest('li').remove();
   });
   });


   // 2. Jetzt jede Buchstaben-Überschrift entfernen, deren Liste leer ist
   // 2. Jetzt jede Buchstaben-Überschrift entfernen, deren Liste leer ist
   $('.smw-column-header').each(function(){
   $('.smw-column-header').each(function(){
     var $header = $(this),
     var $header = $(this),
         $ul    = $header.next('ul');
         $ul    = $header.next('ul');
     if ($ul.length && $ul.children('li').length === 0) {
     if ($ul.length && $ul.children('li').length === 0) {
       $ul.remove();
       $ul.remove();
       $header.remove();
       $header.remove();
     }
     }
   });
   });
});
});
// attachments immer in neuem Tab öffnen
// attachments immer in neuem Tab öffnen
(function () {
(function () {
   // Hilfs-Funktion, die alle neuen Attachment-Links anpasst
   // Hilfs-Funktion, die alle neuen Attachment-Links anpasst
   function updateAttachmentLinks() {
   function updateAttachmentLinks() {
     // Alle Download-Links in der Datei-Liste
     // Alle Download-Links in der Datei-Liste
     $('.attachments-filelist a.oojsplus-data-gridWidget-url-button')
     $('.attachments-filelist a.oojsplus-data-gridWidget-url-button')
       .attr('target','_blank')
       .attr('target','_blank')
       .attr('rel','noopener noreferrer');
       .attr('rel','noopener noreferrer');
   }
   }


   // beim Seiten-Load einmal ausführen
   // beim Seiten-Load einmal ausführen
   $(updateAttachmentLinks);
   $(updateAttachmentLinks);


   // und mit MutationObserver auf nachträglich geladene Links achten
   // und mit MutationObserver auf nachträglich geladene Links achten
   var container = document.querySelector('.attachments-filelist');
   var container = document.querySelector('.attachments-filelist');
   if (container) {
   if (container) {
     new MutationObserver(function (mutations) {
     new MutationObserver(function (mutations) {
       updateAttachmentLinks();
       updateAttachmentLinks();
     }).observe(container, { childList: true, subtree: true });
     }).observe(container, { childList: true, subtree: true });
   }
   }
})();
})();


/* Startseiten-Menü: ohne Expander, #subpage-tree-pnl ausblenden, kein Einrücken unten */
/* Startseiten-Menü: ohne Expander, #subpage-tree-pnl ausblenden, kein Einrücken unten */
(function (mw, $) {
(function (mw, $) {
   'use strict';
   'use strict';


   function isMainView() {
   function isMainView() {
     return mw.config.get('wgIsMainPage') && mw.config.get('wgAction') === 'view';
     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) {
   function hideSubpageTreePanel($scope) {
     if (!isMainView()) return;
 
    // Nur ausführen wenn auf Hauptseite UND angemeldet
 
     if (!isMainView() || !isLoggedIn()) return;
 
     // global (nur auf Startseite, weil Funktion nur hier läuft)
     // global (nur auf Startseite, weil Funktion nur hier läuft)
     mw.util.addCSS('#subpage-tree-pnl{display:none!important;}');
     mw.util.addCSS('#subpage-tree-pnl{display:none!important;}');
     // sofort im aktuellen/neu geladenen Bereich
     // sofort im aktuellen/neu geladenen Bereich
     ($scope || $(document)).find('#subpage-tree-pnl').hide().attr('aria-hidden', 'true');
     ($scope || $(document)).find('#subpage-tree-pnl').hide().attr('aria-hidden', 'true');
   }
   }


   function injectHomeMenu($root) {
   function injectHomeMenu($root) {
     if (!isMainView()) return;
 
    // Nur ausführen wenn auf Hauptseite UND angemeldet
 
     if (!isMainView() || !isLoggedIn()) return;
 
     if (document.getElementById('home-static-menu')) return; // Duplikate vermeiden
     if (document.getElementById('home-static-menu')) return; // Duplikate vermeiden


     var $container = ($root || $(document)).find('#sb-pri-cnt:visible').last();
     var $container = ($root || $(document)).find('#sb-pri-cnt:visible').last();
     if (!$container.length) return;
     if (!$container.length) return;


     const menuHtml = `
     const menuHtml = `
<div id="home-static-menu" class="home-static-menu">
<div id="home-static-menu" class="home-static-menu">
   <div class="enhanced-sidebar-cnt">
   <div class="enhanced-sidebar-cnt">
     <div id="9a659-pnl" class="card w-100 bg-transp tree-component test">
     <div id="9a659-pnl" class="card w-100 bg-transp tree-component test">
       <div id="9a659-head" class="card-header menu-title">Themen</div>
       <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">
       <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">
         <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>
           <div><a id="43568-label" class="mws-tree-item-label" href="/wiki/Verein:Hauptseite">Verein</a></div>
         </li>
         </li>
         <li id="12180" class="mws-tree-item internal" role="treeitem">
         <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>
           <div><a id="12180-label" class="mws-tree-item-label" href="/wiki/Arbeitsorganisation:Hauptseite">Arbeitsorganisation</a></div>
         </li>
         </li>
         <li id="94668" class="mws-tree-item internal" role="treeitem">
         <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>
           <div><a id="94668-label" class="mws-tree-item-label" href="/wiki/Angebote:Hauptseite">Angebote</a></div>
         </li>
         </li>
         <li id="16759" class="mws-tree-item internal" role="treeitem">
         <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>
           <div><a id="16759-label" class="mws-tree-item-label" href="/wiki/Gruppenarbeit:Hauptseite">Gruppenarbeit</a></div>
         </li>
         </li>
         <li id="20ee3" class="mws-tree-item internal" role="treeitem">
         <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>
           <div><a id="20ee3-label" class="mws-tree-item-label" href="/wiki/Mitarbeit:Hauptseite">Mitarbeit</a></div>
         </li>
         </li>
         <li id="d5272" class="mws-tree-item internal" role="treeitem">
         <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>
           <div><a id="d5272-label" class="mws-tree-item-label" href="/wiki/Kommunikation:Hauptseite">Kommunikation</a></div>
         </li>
         </li>
         <li id="48945" class="mws-tree-item internal" role="treeitem">
         <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>
           <div><a id="48945-label" class="mws-tree-item-label" href="/wiki/QM:Hauptseite">QM</a></div>
         </li>
         </li>
         <li id="27eea" class="mws-tree-item internal" role="treeitem">
         <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>
           <div><a id="27eea-label" class="mws-tree-item-label" href="/wiki/Mitglieder:Hauptseite">Mitglieder</a></div>
         </li>
         </li>
         <li id="3f70b" class="mws-tree-item internal" role="treeitem">
         <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>
           <div><a id="3f70b-label" class="mws-tree-item-label" href="/wiki/wikiHilfe:Anleitung">wikiHilfe</a></div>
         </li>
         </li>
       </ul>
       </ul>
     </div>
     </div>
   </div>
   </div>
</div>`;
</div>`;


     $container.append(menuHtml);
     $container.append(menuHtml);


     // Safety: Falls andere Skripte Expander nachträglich hinzufügen
     // Safety: Falls andere Skripte Expander nachträglich hinzufügen
     $('#home-static-menu .mws-tree-expander').remove();
     $('#home-static-menu .mws-tree-expander').remove();


     // Einrückung Top-Level neutralisieren (nur in unserem Menü)
     // Einrückung Top-Level neutralisieren (nur in unserem Menü)
     mw.util.addCSS(`
     mw.util.addCSS(`
       #home-static-menu #9a659-menu { padding-left: 0 !important; margin-left: 0 !important; }
       #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 { 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 > 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; }
       #home-static-menu #9a659-menu > li .mws-tree-item-label { padding-left: 0 !important; margin-left: 0 !important; }
     `);
     `);
   }
   }


   // DOM ready
   // DOM ready
   $(function () {
   $(function () {
     injectHomeMenu();
     injectHomeMenu();
     hideSubpageTreePanel();
     hideSubpageTreePanel();
   });
   });


   // Dynamisch nachgeladene Inhalte (Discovery, Ajax, Tabs)
   // Dynamisch nachgeladene Inhalte (Discovery, Ajax, Tabs)
   mw.hook('wikipage.content').add(function ($content) {
   mw.hook('wikipage.content').add(function ($content) {
     injectHomeMenu($content);
     injectHomeMenu($content);
     hideSubpageTreePanel($content);
     hideSubpageTreePanel($content);
   });
   });


   // Fallback, falls #sb-pri-cnt später kommt
   // Fallback, falls #sb-pri-cnt später kommt
   var tries = 0, max = 10;
   var tries = 0, max = 10;
   var iv = setInterval(function () {
   var iv = setInterval(function () {
     if (document.getElementById('sb-pri-cnt') || ++tries >= max) {
     if (document.getElementById('sb-pri-cnt') || ++tries >= max) {
       clearInterval(iv);
       clearInterval(iv);
       injectHomeMenu();
       injectHomeMenu();
       hideSubpageTreePanel();
       hideSubpageTreePanel();
     }
     }
   }, 300);
   }, 300);


})(mediaWiki, jQuery);
})(mediaWiki, jQuery);

Version vom 9. Oktober 2025, 10:00 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);