Zum Inhalt springen

MediaWiki:Gadget-LabelScan.js

Aus ADOS Wiki

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/* LabelScan Gadget – HARD BIND TEST (delegated click + hooks + observer) */
(function () {
  'use strict';

  // 1) Sofort melden, dass das Gadget wirklich ausgeführt wurde
  console.log('[LabelScan TEST] Modul ausgeführt (IIFE gestartet)');

  // 2) Delegiertes Click-Event: reagiert auch, wenn der Button später ins DOM kommt
  document.addEventListener('click', function (ev) {
    var el = ev.target;
    // trifft auf #ados-scan-run oder ein Kindelement davon
    if (el && (el.id === 'ados-scan-run' || (el.closest && el.closest('#ados-scan-run')))) {
      ev.preventDefault();
      console.log('[LabelScan TEST] Click auf #ados-scan-run erkannt');
      alert('✅ Gadget hängt am Button. (Binding OK)');
    }
  }, true);

  // 3) Zusätzlich über MediaWiki-Hooks jedes Mal melden, wenn Seitenteil gerendert wurde
  if (window.mw && mw.hook) {
    mw.hook('wikipage.content').add(function ($content) {
      console.log('[LabelScan TEST] wikipage.content hook', $content && $content.length);
      // Optional: einmal visuell markieren, dass der Button da ist
      var btn = document.getElementById('ados-scan-run');
      if (btn && !btn.dataset._lscanMark) {
        btn.dataset._lscanMark = '1';
        btn.style.outline = '2px dashed #22c55e';
        btn.style.outlineOffset = '2px';
      }
    });
  }

  // 4) Fallback: Wenn der Button gar nicht existiert, füge oben rechts einen Test-Button ein
  //    (nur, um zu beweisen, dass das Gadget läuft)
  setTimeout(function () {
    if (!document.getElementById('ados-scan-run')) {
      var test = document.createElement('button');
      test.textContent = 'LabelScan Test';
      test.style.cssText = 'position:fixed;top:10px;right:10px;z-index:99999;padding:.5rem .8rem;border-radius:8px;border:1px solid #ccc;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15);';
      test.addEventListener('click', function () {
        alert('✅ Gadget läuft. (Seiten-UI-Button #ados-scan-run ist auf dieser Seite aber nicht vorhanden)');
      });
      document.body.appendChild(test);
      console.log('[LabelScan TEST] Fallback-Testbutton eingefügt (weil #ados-scan-run nicht gefunden wurde)');
    }
  }, 500);
})();