MediaWiki:Common.js: Unterschied zwischen den Versionen
Erscheinungsbild
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 22: | Zeile 22: | ||
/*********************** | /*********************** | ||
* 1) Suche: kompletten Vector-Suchblock kopieren | * 1) Suche: kompletten Vector-Suchblock kopieren (mit Polling) | ||
***********************/ | ***********************/ | ||
(function () { | (function attachSearchWithPolling() { | ||
var tries = 0; | |||
var | var maxTries = 30; // ~3 Sekunden | ||
var interval = setInterval(function () { | |||
var | tries++; | ||
var $searchPortlet = $('#p-search').first(); | |||
if ($searchPortlet.length) { | |||
var $searchBox = $searchPortlet.find('.vector-search-box-vue').first(); | |||
if ($searchBox.length) { | |||
// Block klonen (inkl. Events/Attribute) | |||
var $searchClone = $searchBox.clone(true); | |||
// Klon in den Header hängen | |||
$searchClone.appendTo($left); | |||
// Original-Portlet komplett ausblenden | |||
$searchPortlet.css({ display: 'none' }); | |||
clearInterval(interval); | |||
return; | |||
} | |||
} | |||
if (tries >= maxTries) { | |||
console.warn('Vector-Suche konnte nicht gefunden werden.'); | |||
clearInterval(interval); | |||
} | |||
}, 100); | |||
})(); | })(); | ||
Version vom 5. März 2026, 05:31 Uhr
mw.loader.using(['jquery', 'mediawiki.util', 'mediawiki.user']).done(function () {
$(function () {
var $body = $('body');
/***********************
* Eigenen Header einfügen
***********************/
var headerHtml =
'<div id="pixo-custom-header">' +
'<div id="pixo-custom-header-inner">' +
'<div id="pixo-custom-header-left"></div>' +
'<div id="pixo-custom-header-center"></div>' +
'<div id="pixo-custom-header-right"></div>' +
'</div>' +
'</div>';
$body.prepend(headerHtml);
var $left = $('#pixo-custom-header-left');
var $center = $('#pixo-custom-header-center');
var $right = $('#pixo-custom-header-right');
/***********************
* 1) Suche: kompletten Vector-Suchblock kopieren (mit Polling)
***********************/
(function attachSearchWithPolling() {
var tries = 0;
var maxTries = 30; // ~3 Sekunden
var interval = setInterval(function () {
tries++;
var $searchPortlet = $('#p-search').first();
if ($searchPortlet.length) {
var $searchBox = $searchPortlet.find('.vector-search-box-vue').first();
if ($searchBox.length) {
// Block klonen (inkl. Events/Attribute)
var $searchClone = $searchBox.clone(true);
// Klon in den Header hängen
$searchClone.appendTo($left);
// Original-Portlet komplett ausblenden
$searchPortlet.css({ display: 'none' });
clearInterval(interval);
return;
}
}
if (tries >= maxTries) {
console.warn('Vector-Suche konnte nicht gefunden werden.');
clearInterval(interval);
}
}, 100);
})();
/***********************
* 2) Logo + Titel in die Mitte
***********************/
var $logoLink = $('.mw-logo').first();
if ($logoLink.length) {
$logoLink.appendTo($center).css({ margin: 0 });
} else {
var $home = $('<a>', {
href: mw.util.getUrl('Start'),
class: 'pixo-header-icon',
title: 'Startseite'
}).text('Pixopedia');
$center.append($home);
}
/***********************
* 3) Benutzerbereich rechts
***********************/
var userName = mw.config.get('wgUserName');
if (userName) {
var $userPage = $('#p-vector-user-menu-userpage').first();
var $userMenu = $('#vector-user-links-dropdown').first();
if ($userPage.length) {
$userPage.appendTo($right).addClass('pixo-header-icon');
}
if ($userMenu.length) {
$userMenu.appendTo($right).addClass('pixo-header-icon');
}
} else {
var $register = $('<a>', {
href: mw.util.getUrl('Special:CreateAccount'),
class: 'pixo-header-icon',
title: 'Benutzer registrieren'
}).text('✚');
var $login = $('<a>', {
href: mw.util.getUrl('Special:UserLogin'),
class: 'pixo-header-icon',
title: 'Benutzeranmeldung'
}).text('⮞');
$right.append($register, $login);
}
});
});