Zuletzt bearbeitet vor einem Tag
von Mark Wagner

MediaWiki:Common.js: Unterschied zwischen den Versionen

Keine Kategorien vergebenBearbeiten
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Zeile 70: Zeile 70:
   }
   }
})();
})();
/* Reduziertes statisches Menü am Ende von #sb-pri-cnt – nur auf der Startseite */
/* Reduziertes statisches Menü am Ende von #sb-pri-cnt – ohne .mws-tree-expander.
  Zusätzlich: .subpage-tree-pnl-head nur auf der Startseite ausblenden. */
(function (mw, $) {
(function (mw, $) {
   'use strict';
   'use strict';
Zeile 78: Zeile 79:
   }
   }


   function wireExpanders($scope) {
   function hideSubpageTreeHead($scope) {
     $scope.find('.mws-tree-expander').each(function () {
     if (!isMainView()) return;
      var $btn = $(this);
    // per CSS (nur auf der Startseite, weil Funktion nur dort läuft)
      if ($btn.data('wired')) return;
    mw.util.addCSS('.subpage-tree-pnl-head{display:none!important;}');
      $btn.data('wired', true);
    // und sofort im aktuellen/neu geladenen Bereich ausblenden
 
    ($scope || $(document)).find('.subpage-tree-pnl-head').hide().attr('aria-hidden','true');
      // Initialzustand anwenden (falls aria-controls existiert)
      var controls = $btn.attr('aria-controls');
      var $target = controls ? $('#' + controls) : $();
      var expanded = $btn.attr('aria-expanded') === 'true';
      if ($target.length) {
        $target.toggle(expanded);
      }
 
      function toggle(ev) {
        ev.preventDefault();
        var current = $btn.attr('aria-expanded') === 'true';
        var next = !current;
        $btn.attr('aria-expanded', String(next));
        $btn.toggleClass('collapsed', !next);
        if ($target.length) $target.toggle(next);
      }
 
      $btn.on('click', toggle);
      $btn.on('keydown', function (e) {
        if (e.key === 'Enter' || e.key === ' ') toggle(e);
      });
    });
   }
   }


Zeile 125: Zeile 104:
         <li id="43568" class="mws-tree-item internal" role="treeitem">
         <li id="43568" class="mws-tree-item internal" role="treeitem">
           <div>
           <div>
            <a class="mws-tree-expander collapsed" role="button" tabindex="0" aria-label="Verein" aria-controls="43568-children" aria-expanded="false" aria-haspopup="true"></a>
             <a id="43568-label" class="mws-tree-item-label" href="/wiki/Verein:Hauptseite">Verein</a>
             <a id="43568-label" class="mws-tree-item-label" href="/wiki/Verein:Hauptseite">Verein</a>
           </div>
           </div>
Zeile 131: Zeile 109:
         <li id="12180" class="mws-tree-item internal" role="treeitem">
         <li id="12180" class="mws-tree-item internal" role="treeitem">
           <div>
           <div>
            <a class="mws-tree-expander collapsed" role="button" tabindex="0" aria-label="Arbeitsorganisation" aria-controls="12180-children" aria-expanded="false" aria-haspopup="true"></a>
             <a id="12180-label" class="mws-tree-item-label" href="/wiki/Arbeitsorganisation:Hauptseite">Arbeitsorganisation</a>
             <a id="12180-label" class="mws-tree-item-label" href="/wiki/Arbeitsorganisation:Hauptseite">Arbeitsorganisation</a>
           </div>
           </div>
Zeile 137: Zeile 114:
         <li id="94668" class="mws-tree-item internal" role="treeitem">
         <li id="94668" class="mws-tree-item internal" role="treeitem">
           <div>
           <div>
            <a class="mws-tree-expander collapsed" role="button" tabindex="0" aria-label="Angebote" aria-controls="94668-children" aria-expanded="false" aria-haspopup="true"></a>
             <a id="94668-label" class="mws-tree-item-label" href="/wiki/Angebote:Hauptseite">Angebote</a>
             <a id="94668-label" class="mws-tree-item-label" href="/wiki/Angebote:Hauptseite">Angebote</a>
           </div>
           </div>
Zeile 143: Zeile 119:
         <li id="16759" class="mws-tree-item internal" role="treeitem">
         <li id="16759" class="mws-tree-item internal" role="treeitem">
           <div>
           <div>
            <a class="mws-tree-expander collapsed" role="button" tabindex="0" aria-label="Gruppenarbeit" aria-controls="16759-children" aria-expanded="false" aria-haspopup="true"></a>
             <a id="16759-label" class="mws-tree-item-label" href="/wiki/Gruppenarbeit:Hauptseite">Gruppenarbeit</a>
             <a id="16759-label" class="mws-tree-item-label" href="/wiki/Gruppenarbeit:Hauptseite">Gruppenarbeit</a>
           </div>
           </div>
Zeile 149: Zeile 124:
         <li id="20ee3" class="mws-tree-item internal" role="treeitem">
         <li id="20ee3" class="mws-tree-item internal" role="treeitem">
           <div>
           <div>
            <a class="mws-tree-expander collapsed" role="button" tabindex="0" aria-label="Mitarbeit" aria-controls="20ee3-children" aria-expanded="false" aria-haspopup="true"></a>
             <a id="20ee3-label" class="mws-tree-item-label" href="/wiki/Mitarbeit:Hauptseite">Mitarbeit</a>
             <a id="20ee3-label" class="mws-tree-item-label" href="/wiki/Mitarbeit:Hauptseite">Mitarbeit</a>
           </div>
           </div>
Zeile 155: Zeile 129:
         <li id="d5272" class="mws-tree-item internal" role="treeitem">
         <li id="d5272" class="mws-tree-item internal" role="treeitem">
           <div>
           <div>
            <a class="mws-tree-expander collapsed" role="button" tabindex="0" aria-label="Kommunikation" aria-controls="d5272-children" aria-expanded="false" aria-haspopup="true"></a>
             <a id="d5272-label" class="mws-tree-item-label" href="/wiki/Kommunikation:Hauptseite">Kommunikation</a>
             <a id="d5272-label" class="mws-tree-item-label" href="/wiki/Kommunikation:Hauptseite">Kommunikation</a>
           </div>
           </div>
Zeile 161: Zeile 134:
         <li id="48945" class="mws-tree-item internal" role="treeitem">
         <li id="48945" class="mws-tree-item internal" role="treeitem">
           <div>
           <div>
            <a class="mws-tree-expander collapsed" role="button" tabindex="0" aria-label="QM" aria-controls="48945-children" aria-expanded="false" aria-haspopup="true"></a>
             <a id="48945-label" class="mws-tree-item-label" href="/wiki/QM:Hauptseite">QM</a>
             <a id="48945-label" class="mws-tree-item-label" href="/wiki/QM:Hauptseite">QM</a>
           </div>
           </div>
Zeile 181: Zeile 153:


     $container.append(menuHtml);
     $container.append(menuHtml);
     wireExpanders($('#home-static-menu'));
 
    // Safety: falls der Skin/JS doch Expander injiziert, entfernen wir sie innerhalb unseres Menüs.
     $('#home-static-menu .mws-tree-expander').remove();
   }
   }


   // 1) Beim DOM-ready
   // Beim DOM-ready
   $(function () { injectHomeMenu(); });
   $(function () {
    injectHomeMenu();
    hideSubpageTreeHead();
  });


   // 2) Wenn MW Inhalte nachlädt/umschaltet (Tabs, Ajax, Discovery, etc.)
   // Bei dynamischen Nachladungen (Tabs, Ajax, Discovery)
   mw.hook('wikipage.content').add(function ($content) {
   mw.hook('wikipage.content').add(function ($content) {
     injectHomeMenu($content);
     injectHomeMenu($content);
    hideSubpageTreeHead($content);
   });
   });


   // 3) Fallback: falls #sb-pri-cnt verzögert gerendert wird
   // Fallback, falls #sb-pri-cnt später erscheint
   var tries = 0, max = 10;
   var tries = 0, max = 10;
   var iv = setInterval(function () {
   var iv = setInterval(function () {
Zeile 198: Zeile 176:
       clearInterval(iv);
       clearInterval(iv);
       injectHomeMenu();
       injectHomeMenu();
      hideSubpageTreeHead();
     }
     }
   }, 300);
   }, 300);


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

Version vom 3. September 2025, 20:31 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');
		});
	});
});

$(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 });
  }
})();
/* Reduziertes statisches Menü am Ende von #sb-pri-cnt – ohne .mws-tree-expander.
   Zusätzlich: .subpage-tree-pnl-head nur auf der Startseite ausblenden. */
(function (mw, $) {
  'use strict';

  function isMainView() {
    return mw.config.get('wgIsMainPage') && mw.config.get('wgAction') === 'view';
  }

  function hideSubpageTreeHead($scope) {
    if (!isMainView()) return;
    // per CSS (nur auf der Startseite, weil Funktion nur dort läuft)
    mw.util.addCSS('.subpage-tree-pnl-head{display:none!important;}');
    // und sofort im aktuellen/neu geladenen Bereich ausblenden
    ($scope || $(document)).find('.subpage-tree-pnl-head').hide().attr('aria-hidden','true');
  }

  function injectHomeMenu($root) {
    if (!isMainView()) 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 leaf" 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 leaf" 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 der Skin/JS doch Expander injiziert, entfernen wir sie innerhalb unseres Menüs.
    $('#home-static-menu .mws-tree-expander').remove();
  }

  // Beim DOM-ready
  $(function () {
    injectHomeMenu();
    hideSubpageTreeHead();
  });

  // Bei dynamischen Nachladungen (Tabs, Ajax, Discovery)
  mw.hook('wikipage.content').add(function ($content) {
    injectHomeMenu($content);
    hideSubpageTreeHead($content);
  });

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

})(mediaWiki, jQuery);