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 */ | ||
(function (mw, $) { | (function (mw, $) { | ||
'use strict'; | 'use strict'; | ||
Zeile 76: | Zeile 76: | ||
function isMainView() { | function isMainView() { | ||
return mw.config.get('wgIsMainPage') && mw.config.get('wgAction') === 'view'; | return mw.config.get('wgIsMainPage') && mw.config.get('wgAction') === 'view'; | ||
} | |||
function wireExpanders($scope) { | |||
$scope.find('.mws-tree-expander').each(function () { | |||
var $btn = $(this); | |||
if ($btn.data('wired')) return; | |||
$btn.data('wired', 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 85: | Zeile 115: | ||
if (!$container.length) return; | 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 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> | |||
</div> | |||
</li> | |||
<li id="12180" class="mws-tree-item internal" role="treeitem"> | |||
<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> | |||
</div> | |||
</li> | |||
<li id="94668" class="mws-tree-item internal" role="treeitem"> | |||
<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> | |||
</div> | |||
</li> | |||
<li id="16759" class="mws-tree-item internal" role="treeitem"> | |||
<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> | |||
</div> | |||
</li> | |||
<li id="20ee3" class="mws-tree-item internal" role="treeitem"> | |||
<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> | |||
</div> | |||
</li> | |||
<li id="d5272" class="mws-tree-item internal" role="treeitem"> | |||
<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> | |||
</div> | |||
</li> | |||
<li id="48945" class="mws-tree-item internal" role="treeitem"> | |||
<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> | |||
</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); | $container.append(menuHtml); | ||
wireExpanders($('#home-static-menu')); | |||
} | } | ||
Zeile 102: | Zeile 187: | ||
$(function () { injectHomeMenu(); }); | $(function () { injectHomeMenu(); }); | ||
// 2) Wenn MW Inhalte nachlädt/umschaltet (Tabs, Ajax, Discovery) | // 2) Wenn MW Inhalte nachlädt/umschaltet (Tabs, Ajax, Discovery, etc.) | ||
mw.hook('wikipage.content').add(function ($content) { | mw.hook('wikipage.content').add(function ($content) { | ||
injectHomeMenu($content); | injectHomeMenu($content); | ||
}); | }); | ||
// 3) Fallback: | // 3) Fallback: falls #sb-pri-cnt verzögert gerendert wird | ||
var | var tries = 0, max = 10; | ||
var | var iv = setInterval(function () { | ||
if (document.getElementById('sb-pri-cnt') || ++ | if (document.getElementById('sb-pri-cnt') || ++tries >= max) { | ||
clearInterval( | clearInterval(iv); | ||
injectHomeMenu(); | injectHomeMenu(); | ||
} | } |
Version vom 3. September 2025, 20:26 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 – nur auf der Startseite */
(function (mw, $) {
'use strict';
function isMainView() {
return mw.config.get('wgIsMainPage') && mw.config.get('wgAction') === 'view';
}
function wireExpanders($scope) {
$scope.find('.mws-tree-expander').each(function () {
var $btn = $(this);
if ($btn.data('wired')) return;
$btn.data('wired', 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);
});
});
}
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 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>
</div>
</li>
<li id="12180" class="mws-tree-item internal" role="treeitem">
<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>
</div>
</li>
<li id="94668" class="mws-tree-item internal" role="treeitem">
<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>
</div>
</li>
<li id="16759" class="mws-tree-item internal" role="treeitem">
<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>
</div>
</li>
<li id="20ee3" class="mws-tree-item internal" role="treeitem">
<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>
</div>
</li>
<li id="d5272" class="mws-tree-item internal" role="treeitem">
<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>
</div>
</li>
<li id="48945" class="mws-tree-item internal" role="treeitem">
<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>
</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);
wireExpanders($('#home-static-menu'));
}
// 1) Beim DOM-ready
$(function () { injectHomeMenu(); });
// 2) Wenn MW Inhalte nachlädt/umschaltet (Tabs, Ajax, Discovery, etc.)
mw.hook('wikipage.content').add(function ($content) {
injectHomeMenu($content);
});
// 3) Fallback: falls #sb-pri-cnt verzögert gerendert wird
var tries = 0, max = 10;
var iv = setInterval(function () {
if (document.getElementById('sb-pri-cnt') || ++tries >= max) {
clearInterval(iv);
injectHomeMenu();
}
}, 300);
})(mediaWiki, jQuery);