MediaWiki:Gadget-watchlistMessage.js

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
/*
 * watchlistMessage-2025
 * Funktion: Fügt ein "✖"-Symbol hinter der Uhrzeit ein, um Einträge auszublenden (per Cookie).
 * Inspirirt vom gleichnamigen Gadget der Wikimedia-User, aber komplett ungeschireben, um 
 * + den Anfordeurngen rneuen Watchlist (MediaWiki > 1.39) gerecht zu werden (ohne Cheatcode "alte Watchlist")
 * + im SKin Vextor 2022 zu funktionieren
 * + Wikonia-eigenen Stil durchzusetzen
 * Ansatz: Direktes Manipulieren des innerHTML, da DOM-Elemente im der neuen Watchlist schwerer zu fassen sind als Luft mit einer Gabel.
 * Autor: [[Benutzer:Muke86]]
 * Version: 1.1 (2025-06-15)
 */

$(function () {
	// abbruch, wenn nicht auf Special:Watchlist 
	if (mw.config.get('wgCanonicalSpecialPageName') !== 'Watchlist') {
	  return;
	}
	console.log('[watchlistMessage-Lite] gestartet');

  $('td.mw-enhanced-rc[colspan="2"]').each(function () {
    const td = this;
    const html = td.innerHTML;

    // Uhrzeit erkennen (hh:mm)
    const timeMatch = html.match(/(\d{1,2}:\d{2})( )?/);
    if (!timeMatch) return;

    // ID aus Linkziel generieren (wenn vorhanden), sonst Platzhalter
    const pageLink = td.querySelector('a');
    let cid = 'static';
    if (pageLink && pageLink.title) {
      cid = btoa(unescape(encodeURIComponent(pageLink.title))).replace(/[^a-z0-9]/gi, '');
    }

    // Wenn Cookie bereits gesetzt ist: Zeile ausblenden
    if (document.cookie.includes('wikonia-hidewatchlistmessage-' + cid + '=yes')) {
      td.closest('tr').style.display = 'none';
      return;
    }

    // Button HTML vorbereiten
    const dismissButton = `<span
      style="color: red; font-weight: bold; margin-right: 0.6em; cursor: pointer;"
      title="Eintrag aus der Beobachtungsliste ausblenden"
      onclick="(function(el){
        el.closest('tr').style.display = 'none';
        const e = new Date();
        e.setTime(e.getTime() + (3 * 7 * 24 * 60 * 60 * 1000));
        document.cookie = 'wikonia-hidewatchlistmessage-${cid}=yes; expires=' + e.toUTCString() + '; path=/';
      })(this);"
    >✖</span>`; // ✖ = ✖

    // ✖ nach der Uhrzeit einfügen
    const newHtml = html.replace(timeMatch[0], timeMatch[0] + dismissButton);
    td.innerHTML = newHtml;
  });
});