Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch English

Modul: Dokumentation

UserGroups – Modul zur Verwaltung und Darstellung von Gruppenzugehörigkeiten (auch außerhalb der Software-definierten) und Mandaten.

Funktionen für Vorlagen

Bearbeiten
f
Arbeitsfunktion
Der Rückgabewert ist leer, wenn sich keine Treffer ergeben, ansonsten eine Zahl oder Zeichenkette oder ein HTML-Element.
Die nachstehenden Parameter beeinflussen das Ergebnis:
source
Seite mit JSON-Quelltext gemäß Datenstruktur
Beispiel: MediaWiki:Gadget-markAdmins/userGroups.json
Vorgabe: gemäß Projekt-Konfiguration
JSON
JSON-Quelltext gemäß Datenstruktur; Vorrang vor source
account
Filterbedingung; Benutzerkonto
Vorgabe: alle
pattern
Filterbedingung; Lua-Muster für Benutzerkonten
Vorgabe: alle
codes
Filterbedingung; Leerzeichen-getrennte Liste der Gruppen-Kürzel
Vorgabe: alle
active.state
0 – nur ehemalige Zugehörigkeit
1 – nur aktive Mandate
Vorgabe: alle
type
Art der Ausgabe
  • gender – Gender-Abfrage
  • graph – zurzeit keine Implementierung
  • number – Anzahl der Treffer als Zahl
  • ol – nummerierte Liste verlinkter Nicks
  • ping – Sammel-Ping
  • plain – HTML-Darstellung als unformatierte Liste
  • raw – reiner Text
  • tableTabelle
  • target – Versandliste für Massennachricht
  • timelineZeitleiste
  • ul – unnummerierte Liste verlinkter Nicks
  • Lua – kein Zugang aus Vorlagenprogrammierung
Vorgabe: table
class
class für äußeres HTML-Element
style
style für äußeres HTML-Element
id
id für äußeres HTML-Element
caption
Überschrift für Tabelle oder Zeitleiste
table.columns
Spaltendefinition für type=table
Vorgabe: eine Spalte mit Nick
table.number
1 – bei type=table die Anzahl der Nicks anzeigen
table.THclass
class für Kopfzeile bei type=table
table.THstyle
style für Kopfzeile bei type=table
timeline.template
Seite mit Musterumgebung für Zeitleiste
Beispiel und Vorgabe: Wikipedia:Lua/Modul/UserGroups/Timeline
timeline.elected
Beschriftung für aktive Mandate der Zeitleiste
timeline.previous
Beschriftung für ehemalige Zugehörigkeit in der Zeitleiste
failsafe
Versionsbezeichnung: 2022-12-12

Die Failsafe-Schnittstelle erlaubt den damit ausgerüsteten Modulen in globaler Verteilung

  • sicherzustellen, dass eine von einer Vorlage oder einem Modul benötigte Funktion in der lokalen Kopie eines Bibliotheksmoduls vorhanden ist, und ggf. auch in einer erforderlichen Mindestversion;
  • die globale Aktualisierung und Verknüpfung von Modulen über Wikidata zu verwalten.

Die Failsafe-Schnittstelle liegt sowohl auf Ebene der Vorlagen wie auch in direktem Lua-Zugriff vor.

Die Funktionen sind im Einzelnen (nicht alle werden bereits überall in vollem Umfang unterstützt):

Parameter
Wert Ergebnis aktuell
nichts
false
lokale Version »2022-12-12«
Mindest­version Mindestversionsbezeichnung
Datum im ISO-Format

Es wird verglichen, ob das aktuelle Modul diese Version oder später erfüllt.

  • leer, falls Mindestversion nicht erfüllt
  • 2001-01-01 → »2022-12-12«
  • 2099-01-01 → »«
wikidata Versionsbezeichnung der globalen Mutter (d:Q115663308)
  • Versionsbezeichnung auf Wikidata
  • lokal, falls dort keine gefunden
»2022-12-12«
item ID des Wikidata-Items
  • leer, falls nicht definiert
»Q115663308«
~ Übereinstimmung der lokalen mit der auf Wikidata registrierten Versionsbezeichnung
  • leer, falls aktuell
  • Versionsbezeichnung auf Wikidata, falls ungleich
»«
@ Ist die aktuelle (Modul-)Seite richtig mit Wikidata verknüpft?
  • leer, falls mit dem richtigen Item verknüpft
  • Item-ID, falls nicht
Der Rückgabewert ist in der Vorlagenprogrammierung leer und per Lua false; andernfalls die angegebene Zeichenkette.

Datenstruktur

Bearbeiten

Siehe hier.

Filtern nach Gruppenzugehörigkeit

Bearbeiten

Es kann eine Liste von Gruppen-Bezeichnern und Operatoren angegeben werden.

  • Mehrere Gruppen-Bezeichner werden durch ODER verknüpft.

Wenn der Status active.state auf „aktiv“ gesetzt ist, gibt es weitere Möglichkeiten:

  • Ein (oder mehrere) Elemente & bewirken eine Verknüpfung mit UND.
  • Ein dem Kürzel vorangestelltes - bewirkt einen Ausschluss, wenn diese Funktion zurzeit aktiv ausgeübt wird.

Gender-Abfrage

Bearbeiten

Ein account ist Pflichtparameter. Dann wird zu diesem Konto eines der folgenden angezeigt:

  • f – explizit weiblich
  • m – explizit männlich
  • - – Konto bekannt, nichts hinterlegt
  • leer – Konto unbekannt

Tabelle

Bearbeiten

Die Darstellung einer Tabelle ergibt sich aus der Spaltendefinition.

Die Spaltendefinition ist eine durch Leerzeichen und/oder Zeilenumbrüche getrennte Aufzählung von Schlüsselwörtern im Parameter table.columns, deren Reihenfolge auch den dargestellten Spalten entspricht.

Innerhalb einiger Grundregeln können die gewünschten Spalten für die ausgewählten (gefilterten) Einträge frei zusammengestellt werden.

Spaltendefinition

Bearbeiten

Es gibt zwei Typen von Spalten-Schlüsselwörtern:

  • # als erstes Zeichen des Schlüsselworts: Festgelegtes Kennwort (bis zu einem ggf. innerhalb folgenden weiteren #)
  • Sonst: Kürzel für eine Gruppe, gemäß individueller Definitionen.

An das Basis-Kennwort oder Kürzel können mit # weitere Deskriptoren angehängt werden.

Die festgelegten Basis-Kennwörter sind:

  • #accountKonto-Spalte
  • #codes – Aufzählung der Kürzel zu diesem Konto
  • #genderGeschlechtszugehörigkeit zu diesem Konto
  • #details – Anmerkungen zu diesem Konto
  • #groups – Sammel-Kennwort für einzelne Mandate (nicht direkt anzugeben):
    • #groups#code – Kennwort für Kürzel (Gruppe) des Mandats
    • #groups#from – Kennwort für Mandats-Beginn
    • #groups#to – Kennwort für Mandats-Ende
    • #groups#info – Kennwort für Mandats-Anmerkung
    • #groups#since – Kennwort für „seit“ (wie #groups#from, jedoch mit anderer Spalten-Überschrift)

Konto-Spalte

Bearbeiten

Sofern nicht per account= genau ein Benutzerkonto spezifiziert wurde, enthält die erste Spalte immer das Benutzerkonto; und würde erforderlichenfalls automatisch vorangestellt werden.

Zusätzliche Deskriptoren sind in beliebiger Reihenfolge und mehrfach kombiniert möglich:

  • #account#gender – Geschlechtszugehörigkeit kennzeichnen
  • #account#died – Verstorbene kennzeichnen
  • #account#alias – Frühere und spätere Nicks auflisten
  • #account#process:IDStatt einfach verlinktem Konto die über ID deklarierte Vorlage verwenden.

Gender-Spalte

Bearbeiten

Sie kann dazu genutzt werden, um den bekannt mageren Frauenanteil zu ermitteln, und um einen Abgleich mit den Einstellungen vorzunehmen.

  • #gender – Geschlechtszugehörigkeit zu diesem Konto
  • #gender#preference – zusätzlich Konto-Einstellung

Einzelmandat-Spalten

Bearbeiten

Die Aufzählung mehrfacher Mandate kann nicht kombiniert werden mit:

  • #codes – Aufzählung der Kürzel zu diesem Konto
  • #gender – Geschlechtszugehörigkeit zu diesem Konto
  • #details – Anmerkungen zu diesem Konto
  • Kürzel-Spalten

Eine oder mehrere Spalten können angegeben werden für:

  • #groups#code – Kürzel (Gruppe) des Mandats
    • #groups#code#see – Kürzel verlinken, falls möglich
  • #groups#from – Mandats-Beginn
  • #groups#to – Mandats-Ende
  • #groups#info – Mandats-Anmerkung
  • #groups#since – Mandats-Beginn (wie #groups#from, jedoch mit anderer Spalten-Überschrift „seit“)

Kürzel-Spalten

Bearbeiten

Jede Spalte, die über ein nicht-standardisiertes Kennwort deklariert wird, erhält genau diesen Bezeichner als Spalten-Überschrift.

Der Inhalt der Zellen ist eine Markierung, falls diesem Konto dieses Kürzel zugeordnet ist.

Einzelmandat-Spalten können nicht mit Kürzel-Spalten kombiniert werden.

Zeitleiste

Bearbeiten

Die Seite Wikipedia:Lua/Modul/UserGroups/Timeline erläutert näher, wie sich Zeitleisten konfigurieren lassen.

  • Diese oder eine andere mit Definition des allgemeinem Schemas ist als Parameter timeline.template anzugeben.
  • Ein aktuelles Diagramm lässt sich ausstatten mit den drei Parametern:
    • caption – Überschrift
    • timeline.elected – Beschriftung für aktive Mandate
    • timeline.previous – Beschriftung für ehemalige Zugehörigkeit

Projekt-Konfiguration

Bearbeiten

Auf der Seite Modul:UserGroups.json kann optional das aktuelle Wiki konfiguriert werden.

Das Objekt hat die folgenden Komponenten (alles optional):

source
Seite mit JSON-Quelltext gemäß Datenstruktur als Projekt-Vorgabe
date
Formatierungsschema für Modul:DateTime (string)
class
Attribut class des umschließenden HTML-Elements (string oder Objekt)
style
Attribut style des umschließenden HTML-Elements (string oder Objekt)
table
Objekt mit Eigenschaften einer Tabelle (die in einem HTML-Element eingebettet sein kann)
class
class (string oder Objekt)
style
style (string oder Objekt)
died
Gestaltung eines „Verstorben“-Symbols (string)
process
Objekt mit Definitionen für externe Weiterverarbeitung
In #account#process:ID wird die Komponente ID dieses Objekts angegeben.
Das Objekt hat folgende Komponenten:
transclude
Name einer einzubindenden Seite (string)
nick
Name des Parameters, der das Benutzerkonto aufnimmt (string)
groups
true – alle Gruppen-Bezeichner des aktuellen Benutzerkontos mit dem Wert 1 angeben
i18n
Objekt mit Lokalisierungen
Die Bezeichner der Komponenten sind Schlüsselwörter für Textfragmente.
Zugewiesen wird jedem Bezeichner ein Lokalisierungs-Objekt.
Ein Lokalisierungs-Objekt weist einem oder mehreren Sprachcodes das jeweilige Textfragment (string) zu.

Statt einer Zeichenkette string kann jeweils auch false zugewiesen werden – der Bezeichner der Komponente bleibt als Merkhilfe stehen.

Verwendung

Bearbeiten

Funktionen für Lua-Module

Bearbeiten

Die oben dokumentierten Funktionen können auch über require() in andere Module eingebunden werden:

local lucky, UserGroups = pcall( require, "Module:UserGroups" )
if type( UserGroups ) == "table" then
    UserGroups = UserGroups()
else
    -- Fehlerfall; UserGroups enthält Fehlermeldung
    return "<span class=\"error\">" .. UserGroups .. "</span>"
end

Danach stehen zur Verfügung:

UserGroups.f( arglist )
Rückgabewert: number oder string oder mw.html oder false
UserGroups.failsafe( atleast )
Versionsbezeichnung
Rückgabewert: string oder false

Abhängigkeiten

Bearbeiten