Zum Inhalt springen

MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Pixopedia
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
// Header so früh wie möglich einfügen – nur jQuery voraussetzen
mw.loader.using( ['jquery', 'mediawiki.util', 'mediawiki.user'] ).done( function () {
mw.loader.using('jquery').done(function () {
     $( function () {
     // Warten, bis <body> existiert (aber NICHT auf komplettes DOM)
         var $body = $( 'body' );
    var interval = setInterval(function () {
         var $body = $('body');
        if (!$body.length) {
            return;
        }
        clearInterval(interval);


        /***********************
         var headerHtml =
        * Eigenen Header einfügen (sofort sichtbar)
        ***********************/
         var headerHtml = '' +
             '<div id="pixo-custom-header">' +
             '<div id="pixo-custom-header">' +
                 '<div id="pixo-custom-header-inner">' +
                 '<div id="pixo-custom-header-inner">' +
Zeile 21: Zeile 12:
             '</div>';
             '</div>';


         $body.prepend(headerHtml);
         $body.prepend( headerHtml );


         var $left  = $('#pixo-custom-header-left');
         var $left  = $( '#pixo-custom-header-left' );
         var $center = $('#pixo-custom-header-center');
         var $center = $( '#pixo-custom-header-center' );
         var $right  = $('#pixo-custom-header-right');
         var $right  = $( '#pixo-custom-header-right' );


         /***********************
         /***********************
         * 1) Suche-Icon (keine Abhängigkeit vom Sticky-Header)
         * 1) Suche in Header-Left verschieben
         ***********************/
         ***********************/
         // Wir bauen IMMER unser eigenes Icon, damit der Header sofort da ist
         ( function () {
        var $searchLink = $('<button>', {
             var $searchBox = $( '#p-search' ).first();
            type: 'button',
             if ( $searchBox.length ) {
            class: 'pixo-header-icon',
                 $searchBox.appendTo( $left );
            title: 'Suche'
        }).text('🔍');
 
        // Fokus auf Standard-Suchfeld, sobald es existiert
        $searchLink.on('click', function () {
             var $input = $('#searchInput, #mw-searchInput').first();
             if ($input.length) {
                 $input.trigger('focus');
            } else {
                // Falls noch nicht da: später fokussieren
                setTimeout(function () {
                    $('#searchInput, #mw-searchInput').first().trigger('focus');
                }, 200);
             }
             }
         });
         } )();
 
        $left.append($searchLink);


         /***********************
         /***********************
         * 2) Logo + Titel in die Mitte
         * 2) Logo + Titel in die Mitte
        *    (wartet nur auf .mw-logo, blockiert aber nicht den Header)
         ***********************/
         ***********************/
         function attachLogo() {
         var $logoLink = $( '.mw-logo' ).first();
            var $logoLink = $('.mw-logo').first();
        if ( $logoLink.length ) {
            if ($logoLink.length) {
            $logoLink.appendTo( $center ).css( { margin: 0 } );
                $logoLink.appendTo($center).css({ margin: 0 });
         } else {
                return true;
             var $home = $( '<a>', {
            }
                href: mw.util.getUrl( 'Start' ),
            return false;
                 class: 'pixo-header-icon',
         }
                 title: 'Startseite'
 
            } ).text( 'Pixopedia' );
        // 1. Versuch sofort
             $center.append( $home );
        if (!attachLogo()) {
            // 2. Versuche noch kurz nachzuladen
             var logoTries = 0;
            var logoInterval = setInterval(function () {
                 logoTries++;
                 if (attachLogo() || logoTries > 20) { // max ~2s
                    clearInterval(logoInterval);
                }
             }, 100);
         }
         }


Zeile 80: Zeile 46:
         * 3) Benutzerbereich rechts
         * 3) Benutzerbereich rechts
         ***********************/
         ***********************/
         mw.loader.using('mediawiki.user').then(function () {
         var userName = mw.config.get( 'wgUserName' );
            var userName = mw.config.get('wgUserName'); // null, wenn nicht angemeldet


            if (userName) {
        if ( userName ) {
                // Angemeldeter User: vorhandene Menüs verwenden, sobald sie existieren
            var $userPage = $( '#p-vector-user-menu-userpage' ).first();
                function attachUserMenus() {
            var $userMenu = $( '#vector-user-links-dropdown' ).first();
                    var done = true;


                    var $userPage = $('#p-vector-user-menu-userpage').first();
            if ( $userPage.length ) {
                    if ($userPage.length && !$userPage.parent().is($right)) {
                $userPage.appendTo( $right ).addClass( 'pixo-header-icon' );
                        $userPage.appendTo($right).addClass('pixo-header-icon');
            }
                    } else if (!$userPage.length) {
            if ( $userMenu.length ) {
                        done = false;
                $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 $userMenu = $('#vector-user-links-dropdown').first();
            var $login = $( '<a>', {
                    if ($userMenu.length && !$userMenu.parent().is($right)) {
                href: mw.util.getUrl( 'Special:UserLogin' ),
                        $userMenu.appendTo($right).addClass('pixo-header-icon');
                class: 'pixo-header-icon',
                    } else if (!$userMenu.length) {
                title: 'Benutzeranmeldung'
                        done = false;
            } ).text( '⮞' );
                    }


                    return done;
            $right.append( $register, $login );
                }
        }
    } );


                // Sofort versuchen, dann noch kurz pollen
    /***********************
                if (!attachUserMenus()) {
    * 4) Bestimmte Spezialseiten für Nicht-Admins blocken
                    var tries = 0;
    ***********************/
                    var userInterval = setInterval(function () {
    var $body = $( document.body );
                        tries++;
    var isAdmin = $body.hasClass( 'group-sysop' ) || $body.hasClass( 'group-bureaucrat' );
                        if (attachUserMenus() || tries > 20) {
    if ( !isAdmin ) {
                            clearInterval(userInterval);
        var blockedSpecials = [
                        }
            'Kurze_Seiten',
                    }, 100);
            'Lange_Seiten',
                }
            'Kuerzeste_Seiten',
             } else {
            'Laengste_Seiten',
                // Kein Login: Registrieren + Login Icons (sofort)
            'Nicht_kategorisierte_Dateien',
                var $register = $('<a>', {
            'Nicht_kategorisierte_Vorlagen',
                    href: mw.util.getUrl('Special:CreateAccount'),
            '%C3%84lteste_Seiten',
                    class: 'pixo-header-icon',
            'Wenigstbearbeitete_Seiten',
                    title: 'Benutzer registrieren'
            'Unbenutzte_Dateien',
                }).text('');
            'Unbenutzte_Kategorien',
            'Verwaiste_Seiten',
             'Unbenutzte_Vorlagen',
            'Gewuenschte_Vorlagen',
            'Gewuenschte_Seiten',
            'Seiten_mit_Eigenschaften',
            'Tracking-Kategorien',
            'Botpassw%C3%B6rter',
            'Beitr%C3%A4ge',
            'Liste_der_Sperren',
            'Letzte_%C3%84nderungen',
            'Diff',
            'PageHistory',
            'Logbuch',
            'Meistbenutzte_Vorlagen',
            'Meistbenutzte_Dateien',
            'Meistbenutzte_Kategorien',
            'Meiste_Interwikilinks',
            'Meistkategorisierte_Seiten',
            'Meistverlinkte_Seiten',
            'Meistbearbeitete_Seiten',
            'Exportieren',
            'Seiten_vergleichen',
            'Beitragen'
        ];


                var $login = $('<a>', {
        var title = mw.config.get( 'wgPageName' ); // z.B. Spezial:Kurze_Seiten
                    href: mw.util.getUrl('Special:UserLogin'),
        if ( title.indexOf( 'Spezial:' ) === 0 ) {
                    class: 'pixo-header-icon',
            var part = title.split( ':' )[1];
                    title: 'Benutzeranmeldung'
            if ( blockedSpecials.indexOf( part ) !== -1 ) {
                 }).text('');
                 location.replace( mw.util.getUrl( 'Start' ) );
            }
        }
    }
} );


                $right.append($register, $login);
// HuntPixo-Leitfaden / Toggle nachladen
            }
mw.loader.load(
        });
    mw.config.get( 'wgServer' ) +
     }, 10);
    mw.config.get( 'wgScriptPath' ) +
    '/index.php?title=MediaWiki:PixoLeitfaden.js&action=raw&ctype=text/javascript'
);
mw.loader.using( 'mediawiki.util' ).then( function () {
  if ( mw.config.get( 'wgPageName' ) === 'Start' ) {
     document.title = '' + mw.config.get( 'wgSiteName' );
  }
});
});

Aktuelle Version vom 9. März 2026, 02:03 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 in Header-Left verschieben
         ***********************/
        ( function () {
            var $searchBox = $( '#p-search' ).first();
            if ( $searchBox.length ) {
                $searchBox.appendTo( $left );
            }
        } )();

        /***********************
         * 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 );
        }
    } );

    /***********************
     * 4) Bestimmte Spezialseiten für Nicht-Admins blocken
     ***********************/
    var $body = $( document.body );
    var isAdmin = $body.hasClass( 'group-sysop' ) || $body.hasClass( 'group-bureaucrat' );
    if ( !isAdmin ) {
        var blockedSpecials = [
            'Kurze_Seiten',
            'Lange_Seiten',
            'Kuerzeste_Seiten',
            'Laengste_Seiten',
            'Nicht_kategorisierte_Dateien',
            'Nicht_kategorisierte_Vorlagen',
            '%C3%84lteste_Seiten',
            'Wenigstbearbeitete_Seiten',
            'Unbenutzte_Dateien',
            'Unbenutzte_Kategorien',
            'Verwaiste_Seiten',
            'Unbenutzte_Vorlagen',
            'Gewuenschte_Vorlagen',
            'Gewuenschte_Seiten',
            'Seiten_mit_Eigenschaften',
            'Tracking-Kategorien',
            'Botpassw%C3%B6rter',
            'Beitr%C3%A4ge',
            'Liste_der_Sperren',
            'Letzte_%C3%84nderungen',
            'Diff',
            'PageHistory',
            'Logbuch',
            'Meistbenutzte_Vorlagen',
            'Meistbenutzte_Dateien',
            'Meistbenutzte_Kategorien',
            'Meiste_Interwikilinks',
            'Meistkategorisierte_Seiten',
            'Meistverlinkte_Seiten',
            'Meistbearbeitete_Seiten',
            'Exportieren',
            'Seiten_vergleichen',
            'Beitragen'
        ];

        var title = mw.config.get( 'wgPageName' ); // z.B. Spezial:Kurze_Seiten
        if ( title.indexOf( 'Spezial:' ) === 0 ) {
            var part = title.split( ':' )[1];
            if ( blockedSpecials.indexOf( part ) !== -1 ) {
                location.replace( mw.util.getUrl( 'Start' ) );
            }
        }
    }
} );

// HuntPixo-Leitfaden / Toggle nachladen
mw.loader.load(
    mw.config.get( 'wgServer' ) +
    mw.config.get( 'wgScriptPath' ) +
    '/index.php?title=MediaWiki:PixoLeitfaden.js&action=raw&ctype=text/javascript'
);
mw.loader.using( 'mediawiki.util' ).then( function () {
  if ( mw.config.get( 'wgPageName' ) === 'Start' ) {
    document.title = '' + mw.config.get( 'wgSiteName' );
  }
});