Zum Inhalt springen

MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Pixopedia
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 3: Zeile 3:
         var $body = $('body');
         var $body = $('body');


        /***********************
        * Eigenen Header einfügen
        ***********************/
         var headerHtml =
         var headerHtml =
             '<div id="pixo-custom-header">' +
             '<div id="pixo-custom-header">' +
Zeile 22: Zeile 19:


         /***********************
         /***********************
         * 1) Suche: kompletten Vector-Suchblock kopieren (mit Polling)
         * 1) Suche verschieben
         ***********************/
         ***********************/
         (function attachSearchWithPolling() {
         (function moveSearchBox() {
             var tries = 0;
             var tries = 0;
             var maxTries = 30; // ~3 Sekunden
             var maxTries = 30;


             var interval = setInterval(function () {
             var interval = setInterval(function () {
                 tries++;
                 tries++;


                 var $searchPortlet = $('#p-search').first();
                 var $searchBox = $('.vector-search-box-vue').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);
                if ($searchBox.length) {
                        return;
                    $searchBox.appendTo($left);
                    }
                    clearInterval(interval);
                    return;
                 }
                 }


                 if (tries >= maxTries) {
                 if (tries >= maxTries) {
                     console.warn('Vector-Suche konnte nicht gefunden werden.');
                     console.warn('vector-search-box-vue nicht gefunden.');
                     clearInterval(interval);
                     clearInterval(interval);
                 }
                 }

Version vom 5. März 2026, 05:35 Uhr

mw.loader.using(['jquery', 'mediawiki.util', 'mediawiki.user']).done(function () {
    $(function () {
        var $body = $('body');

        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 verschieben
         ***********************/
        (function moveSearchBox() {
            var tries = 0;
            var maxTries = 30;

            var interval = setInterval(function () {
                tries++;

                var $searchBox = $('.vector-search-box-vue').first();

                if ($searchBox.length) {
                    $searchBox.appendTo($left);
                    clearInterval(interval);
                    return;
                }

                if (tries >= maxTries) {
                    console.warn('vector-search-box-vue nicht gefunden.');
                    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);
        }
    });
});