Zum Inhalt springen

MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Pixopedia
Die Seite wurde neu angelegt: „mw.loader.using( 'mediawiki.util', function () { // Nur im Vector-2022-Layout und für eingeloggte Nutzer if ( mw.config.get( 'skin' ) !== 'vector' || !mw.config.get( 'wgUserName' ) ) return; // Referenzpunkt im User-Menü suchen var $userMenuList = $( '#p-vector-user-menu-overflow .vector-menu-content-list,' + '#p-personal .vector-menu-content-list' ); if ( !$userMenuList.length ) return; // Neuen Eintrag "Design" e…“
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
mw.loader.using( 'mediawiki.util', function () {
mw.loader.using( 'mediawiki.util', function () {
  // Nur im Vector-2022-Layout und für eingeloggte Nutzer
  if ( mw.config.get( 'skin' ) !== 'vector' || !mw.config.get( 'wgUserName' ) ) return;


   // Referenzpunkt im User-Menü suchen
   // 1. Theme aus Cookie lesen
   var $userMenuList = $( '#p-vector-user-menu-overflow .vector-menu-content-list,' +
   function getTheme() {
                        '#p-personal .vector-menu-content-list' );
    var m = document.cookie.match(/(^|;\s*)pixoTheme=(dark|light)/);
  if ( !$userMenuList.length ) return;
    return m ? m[2] : null;
  }


   // Neuen Eintrag "Design" ergänzen
   // 2. Theme auf <html> anwenden
  var $design = $( '<li>' )
  function applyTheme(theme) {
    .attr( 'id', 'pt-design' )
     var html = document.documentElement;
     .addClass( 'user-links-collapsible-item' )
     html.classList.remove('theme-dark', 'theme-light');
     .append(
    html.classList.add('theme-' + theme);
      $( '<a>' )
  }
        .attr( 'href', mw.util.getUrl(
          'Spezial:Einstellungen',
          { 'mw-prefsection-rendering': 1 }
        ))
        .text( 'Design' )
    );


   $userMenuList.append( $design );
   // 3. Theme setzen + Cookie schreiben (1 Jahr gültig)
  function setTheme(theme) {
    document.cookie = 'pixoTheme=' + theme +
      '; path=/; max-age=' + (60 * 60 * 24 * 365);
    applyTheme(theme);
    updateLabel(theme);
  }
 
  // 4. Label des Schalters aktualisieren
  function updateLabel(theme) {
    var el = document.getElementById('pixo-theme-toggle');
    if (!el) return;
    el.textContent = theme === 'dark' ? '☀ Design (hell)' : '🌙 Design (dunkel)';
  }
 
  // 5. Start-Theme bestimmen (Cookie oder Standard)
  var theme = getTheme() || 'dark';  // Standard: dunkel
  applyTheme(theme);
 
  // 6. Toggle-Button oben ins Benutzer-Menü / Kopfbereich einfügen
  var personal = document.getElementById('p-personal') ||
                document.getElementById('vector-user-links');
 
  if (personal) {
    var ul = personal.querySelector('ul') || personal;
    var li = document.createElement('li');
    li.id = 'pt-pixo-theme';
 
    var a = document.createElement('a');
    a.id = 'pixo-theme-toggle';
    a.href = '#';
    a.onclick = function (e) {
      e.preventDefault();
      setTheme(theme === 'dark' ? 'light' : 'dark');
      theme = (theme === 'dark') ? 'light' : 'dark';
    };
 
    li.appendChild(a);
    ul.appendChild(li);
    updateLabel(theme);
  }
});
});

Version vom 12. Februar 2026, 04:54 Uhr

mw.loader.using( 'mediawiki.util', function () {

  // 1. Theme aus Cookie lesen
  function getTheme() {
    var m = document.cookie.match(/(^|;\s*)pixoTheme=(dark|light)/);
    return m ? m[2] : null;
  }

  // 2. Theme auf <html> anwenden
  function applyTheme(theme) {
    var html = document.documentElement;
    html.classList.remove('theme-dark', 'theme-light');
    html.classList.add('theme-' + theme);
  }

  // 3. Theme setzen + Cookie schreiben (1 Jahr gültig)
  function setTheme(theme) {
    document.cookie = 'pixoTheme=' + theme +
      '; path=/; max-age=' + (60 * 60 * 24 * 365);
    applyTheme(theme);
    updateLabel(theme);
  }

  // 4. Label des Schalters aktualisieren
  function updateLabel(theme) {
    var el = document.getElementById('pixo-theme-toggle');
    if (!el) return;
    el.textContent = theme === 'dark' ? '☀ Design (hell)' : '🌙 Design (dunkel)';
  }

  // 5. Start-Theme bestimmen (Cookie oder Standard)
  var theme = getTheme() || 'dark';   // Standard: dunkel
  applyTheme(theme);

  // 6. Toggle-Button oben ins Benutzer-Menü / Kopfbereich einfügen
  var personal = document.getElementById('p-personal') ||
                 document.getElementById('vector-user-links');

  if (personal) {
    var ul = personal.querySelector('ul') || personal;
    var li = document.createElement('li');
    li.id = 'pt-pixo-theme';

    var a = document.createElement('a');
    a.id = 'pixo-theme-toggle';
    a.href = '#';
    a.onclick = function (e) {
      e.preventDefault();
      setTheme(theme === 'dark' ? 'light' : 'dark');
      theme = (theme === 'dark') ? 'light' : 'dark';
    };

    li.appendChild(a);
    ul.appendChild(li);
    updateLabel(theme);
  }
});