Benutzer:PerfektesChaos/js/watchCategories

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

watchCategories ist ein JavaScript-Gadget – um die Anzahl von Seiten in Kategorien zu zeigen.

Das zielt auf Wartungskategorien ab, von denen erwartet wird, dass sie meistens leer sind. Wenn nicht, könntest du dich veranlasst sehen, einzugreifen und den Anlass zu beseitigen.

  • Wenn das Projekt dieses Gadget bereits registriert haben sollte, genügt ein Häkchen auf der Seite Einstellungen („Helferlein“).
  • Sonst wären die folgenden Zeilen in das persönliche JS wie etwa common.js einzufügen:
mw.loader.load("//en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/watchCategories/r.js&action=raw&bcache=1&maxage=604800&ctype=text/javascript",
               "text/javascript");

Außerdem werden (oberhalb der eben genannten, sofern vorhanden) die folgenden Zeilen gebraucht:

if ( typeof mw.libs.watchCategories  !==  "object"  ||  ! mw.libs.watchCategories ) {
   mw.libs.watchCategories  =  { };
}

Diesem Block sollte die Definition der von gewünschten Kategorien und Optionen folgen. Im allereinfachsten Fall ist das eine Zeile:

mw.libs.watchCategories.cats  =  "Wikipedia:Seite mit Einzelnachweisfehlern";

Diese löst die Kategorie:Wikipedia:Seite mit Einzelnachweisfehlern aus, die im Moment #217 Einträge hat (auf dieser statischen Seite hier könnte eine veraltete Anzahl aus dem Cache stehen).

Auf der angeforderten Seite wird eine kleine Box angezeigt, mit einem Link auf die Kategorie und die Zahl der Einträge.

  • Standardmäßig ist die Zielseite die Beobachtungsliste (Änderungen). Die Box erscheint im Kopfbereich, oberhalb der Anzeigeoptionen.
  • Standardmäßig wird die Box nur gezeigt, wenn in einer Kategorie mindestens eine Seite einsortiert ist.
  • Es werden nur die unmittelbar vorhandenen Seiten gezählt; keine Unterkategorien und auch keine Dateien.

Format der Definitionen

[Bearbeiten | Quelltext bearbeiten]

Vom Konfigurationselement mw.libs.watchCategories.cats wird einer der folgenden Datentypen erwartet:

  • ein string mit dem Titel der Kategorie
  • eine number mit der curid der Kategoriebeschreibungsseite
  • ein Array mit einer Sammlung von Elementen vom Typ
    • string mit dem Titel der Kategorie
    • number mit curid
    • object mit einer detaillierten Spezifikation
object mit detaillierter Spezifikation
Komponente Vorgabe Beschreibung
cat Pflichtkomponente
  • string mit dem Titel der Kategorie
  • number mit der curid der Kategoriebeschreibungsseite
min 1 Mindestanzahl der Einträge in der Kategorie, um die Anzeige auszulösen.
  • min=0 zeigt eine grüne Box, wenn die Kategorie leer ist; das bestätigt auch eine erfolgreiche Abfrage.
ns -1 Nummer des Namensraums der Zielseite
title Watchlist
(Beobachtungsliste)
append Selektor des Elements oder jQuery-Objekt, nach dem die Box eingefügt werden soll.
before
  • mw.util.$content
  • #mw-content-text
    (nur bei Watchlist)
Selektor des Elements oder jQuery-Objekt, vor dem die Box eingefügt werden soll.
  • Wird überschrieben durch gleichzeitige Definition von append.
  • Falls die Beobachtungsliste (Watchlist) genutzt und nichts spezifiziert wurde, wird die Box zu Beginn des Inhaltsbereichs eingefügt.
text Kategorie-Titel cat Dargestellter Linktitel
style1 rote Box, roter Text CSS zuweisen, wenn Mitglieder gefunden
style0 grüne Box CSS zuweisen, wenn ohne Mitglieder (min=0)
id Fragment des einzelnen Eintrags

Einfachster Fall:

if ( typeof mw.libs.watchCategories  !==  "object"  ||  ! mw.libs.watchCategories ) {
   mw.libs.watchCategories  =  { };
}
mw.libs.watchCategories.cats  =  "Wikipedia:Seite mit Einzelnachweisfehlern";
mw.loader.load("//en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/watchCategories/r.js&action=raw&bcache=1&maxage=604800&ctype=text/javascript",
               "text/javascript");

Ein komplexeres Beispiel, das das Laden auch noch von Bedingungen abhängig macht, um die Ausführung auf allen anderen Seiten zu beschleunigen:

if ( typeof mw.libs.watchCategories  !==  "object"  ||  ! mw.libs.watchCategories ) {
   mw.libs.watchCategories  =  { };
}
mw.libs.watchCategories.meineFunktion  =  function () {
   "use strict";
   this.cats  =  [ "Wikipedia:Seite mit Einzelnachweisfehlern",
                   { cat:   "Wikipedia:Qualitätssicherung BKS",
                     ns:    4,
                     title: "WikiProjekt Begriffsklärungsseiten/Fließband",
                     min:   3,
                     text:  "BKS"
                   }
                 ];
   mw.loader.load("//en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/watchCategories/r.js&action=raw&bcache=1&maxage=604800&ctype=text/javascript",
                  "text/javascript");
};   // .meineFunktion()
switch ( mw.config.get( "wgNamespaceNumber" ) ) {
   case -1 :   // Spezialseite
      if ( mw.config.get( "wgCanonicalSpecialPageName" ) === "Watchlist" ) {
         mw.libs.watchCategories.meineFunktion();
      }
      break;
   case 4 :   // WPNR
      if ( mw.config.get( "wgTitle" ) === "WikiProjekt Begriffsklärungsseiten/Fließband" ) {
         mw.libs.watchCategories.meineFunktion();
      }
}   // switch   aktuelle Nummer des Namensraums
  • Es wird eine Funktion meineFunktion definiert, die die eigentliche Arbeit macht.
  • Nach Nummer des Namensraums kann effizient entschieden werden, ob sich eine weitere Untersuchung lohnt.
  • Nur wenn auch der Seitenname dazu passt, wird meineFunktion auch aufgerufen und lädt das Gadget.
  • Die gleichen Betrachtungen werden auch innerhalb des Gadgets angestellt anhand der in .cats enthaltenen Definitionen.

Damit wird auf allen anderen Seiten (etwa bei allen Artikeln und Diskussionen) das Laden des Gadgets vermieden und die Auswertungszeit maximal verkürzt.

Codes und Stammseite

[Bearbeiten | Quelltext bearbeiten]

Die Stammseite ist en:User:PerfektesChaos/js/watchCategories mit:

Quellcode
ResourceLoader
  • ext.gadget.watchCategories
  • Dependencies: user, mediawiki.api, mediawiki.util
Namensräume -1   (Watchlist)
  • Jede Seite, definiert über Nummer des Namensraums und Titel
mw.libs watchCategories