Zum Inhalt springen

MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Pixopedia
Keine Bearbeitungszusammenfassung
Markierungen: Manuelle Zurücksetzung Zurückgesetzt
Keine Bearbeitungszusammenfassung
 
(40 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
mw.loader.using( 'mediawiki.util', function () {
mw.loader.using( ['jquery', 'mediawiki.util', 'mediawiki.user'] ).done( function () {
    $( function () {
        var $body = $( 'body' );


  function getTheme() {
        var headerHtml =
    var m = document.cookie.match(/(^|;\s*)pixoTheme=(dark|light)/);
            '<div id="pixo-custom-header">' +
    return m ? m[2] : null;
                '<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>';


  function applyTheme(theme) {
        $body.prepend( headerHtml );
    var html = document.documentElement;
    html.classList.remove('theme-dark', 'theme-light');
    html.classList.add('theme-' + theme);
  }


   function setTheme(theme) {
        var $left   = $( '#pixo-custom-header-left' );
    document.cookie = 'pixoTheme=' + theme +
        var $center = $( '#pixo-custom-header-center' );
      '; path=/; max-age=' + (60 * 60 * 24 * 365);
        var $right  = $( '#pixo-custom-header-right' );
    applyTheme(theme);
    updateDropdown(theme);
  }


  function updateDropdown(theme) {
        /***********************
    var label = document.querySelector('[data-identifier="theme-dropdown-label"]');
        * 1) Suche in Header-Left verschieben
    if (!label) return;
        ***********************/
    label.textContent = (theme === 'dark') ? 'Dark' : 'Light';
        ( function () {
  }
            var $searchBox = $( '#p-search' ).first();
            if ( $searchBox.length ) {
                $searchBox.appendTo( $left );
            }
        } )();


  // Start-Theme: Cookie oder Default
        /***********************
  var theme = getTheme() || 'dark';
        * 2) Logo + Titel in die Mitte
  applyTheme(theme);
        ***********************/
        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 );
        }


  // In den Header einhängen (Vector 2022)
        /***********************
  var header = document.querySelector('.vector-header-container .vector-header-start');
        * 3) Benutzerbereich rechts
  if (!header) header = document.querySelector('.vector-header-container');
        ***********************/
        var userName = mw.config.get( 'wgUserName' );


  if (header) {
        if ( userName ) {
    var wrapper = document.createElement('div');
            var $userPage = $( '#p-vector-user-menu-userpage' ).first();
    wrapper.className = 'pixo-theme-dropdown';
            var $userMenu = $( '#vector-user-links-dropdown' ).first();
    wrapper.setAttribute('data-identifier', 'theme-dropdown');


    wrapper.innerHTML = '' +
            if ( $userPage.length ) {
      '<button class="pixo-theme-button" type="button">' +
                $userPage.appendTo( $right ).addClass( 'pixo-header-icon' );
        '<span data-identifier="theme-dropdown-label"></span> ▾' +
            }
      '</button>' +
            if ( $userMenu.length ) {
      '<div class="pixo-theme-menu">' +
                $userMenu.appendTo( $right ).addClass( 'pixo-header-icon' );
        '<button type="button" data-theme-value="light">Light</button>' +
            }
        '<button type="button" data-theme-value="dark">Dark</button>' +
        } else {
      '</div>';
            var $register = $( '<a>', {
                href: mw.util.getUrl( 'Special:CreateAccount' ),
                class: 'pixo-header-icon',
                title: 'Benutzer registrieren'
            } ).text( '' );


    header.appendChild(wrapper);
            var $login = $( '<a>', {
                href: mw.util.getUrl( 'Special:UserLogin' ),
                class: 'pixo-header-icon',
                title: 'Benutzeranmeldung'
            } ).text( '⮞' );


    // Klick-Logik
            $right.append( $register, $login );
    var btn = wrapper.querySelector('.pixo-theme-button');
        }
     var menu = wrapper.querySelector('.pixo-theme-menu');
     } );


     btn.addEventListener('click', function () {
     /***********************
      menu.classList.toggle('is-open');
    * 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'
        ];


    menu.addEventListener('click', function (e) {
        var title = mw.config.get( 'wgPageName' ); // z.B. Spezial:Kurze_Seiten
      if (e.target.dataset.themeValue) {
        if ( title.indexOf( 'Spezial:' ) === 0 ) {
        theme = e.target.dataset.themeValue;
            var part = title.split( ':' )[1];
        setTheme(theme);
            if ( blockedSpecials.indexOf( part ) !== -1 ) {
        menu.classList.remove('is-open');
                location.replace( mw.util.getUrl( 'Start' ) );
      }
            }
     });
        }
     }
} );


     // Label initial setzen
// HuntPixo-Leitfaden / Toggle nachladen
     updateDropdown(theme);
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' );
   }
   }
});
});

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' );
  }
});