Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch English

Modul: Dokumentation

PageTree – Modul zur Darstellung und Verwaltung hierarchisch strukturierter Wiki-Seiten.

Aus ein und derselben Seitendefinition können unterschiedliche – konsistente – Darstellungen generiert werden:

  • Aufgeklappter Pfad zu einer aktuellen Seite, wie er in Linkboxen gezeigt wird, nebst Schwestereinträgen
  • Liste aller Seiten
  • „Sitemap“ mit der vollständigen Baumstruktur

Die Seitenstruktur wird über ein entsprechendes Untermodul definiert.

Funktionen für Vorlagen

Bearbeiten

Alle Funktionen (ausgenommen failsafe) haben einen unbenannten Pflichtparameter mit dem Bezeichner der Struktur. Weitere benannte Parameter können angegeben werden.

Der Rückgabewert ist eine Zeichenkette entsprechend Anforderung und aktuellem Seitennamen; auch leer oder Fehlermeldung.

all
Liste alle Einträge als (nicht-hierarchische) Liste in alphabetischer Ordnung auf.
Parameter: light lineup list lazy stamped suppress
check
Überprüfe alle Einträge (auf Existenz der Seite), sofern ein Linkziel.
Parameter: linked – Ist jede Weiterleitung als shift deklariert?
path
Stelle Pfad zum aktuellen Eintrag dar, nebst jeweiligen Schwestereinträgen in vorgegebener Ordnung.
Parameter: lazy segment
subpages
Stelle Abfolge der Unterseiten dar.
Parameter: subpager – Abfolge an die benannte Vorlage übergeben.
tree
Stelle alle Einträge als Baumstruktur in vorgegebener Ordnung dar.
Parameter: list lazy segment stamped suppress
failsafe
Versionsbezeichnung

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 »2024-04-02«
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 → »2024-04-02«
  • 2099-01-01 → »«
wikidata Versionsbezeichnung der globalen Mutter (d:Q56033297)
  • Versionsbezeichnung auf Wikidata
  • lokal, falls dort keine gefunden
»2024-04-02«
item ID des Wikidata-Items
  • leer, falls nicht definiert
»Q56033297«
~ Ü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.

Parameter beim Funktionsaufruf

Bearbeiten
1
Bezeichner der Struktur
Pflichtparameter
lazy
Verwende neutraleres Aufzählungszeichen.
Vorgabe: # in Gesamtdarstellungen, * beim path
Neutraler: * bzw. :
level
Keine Unterseiten zeigen.
Vorgabe: Unterseiten zeigen.
light
Gesamtzusammenstellung all ohne Präfix zeigen.
Vorgabe: Präfix voranstellen.
lineup
Gesamtzusammenstellung all fortlaufend ohne Aufzählungszeichen zeigen.
Vorgabe: Aufzählung, eine Zeile pro Eintrag.
linked
Weiterleitungen (shift) zeigen.
Vorgabe: Keine Weiterleitungen zeigen.
list
Alles auflisten.
Vorgabe: Mit list=false gekennzeichnete Seiteneinträge in Strukturen nicht zeigen.
segment
Pfad path an alternativem root-Element beginnen.
Wenn mit / beginnend, wird relativ zu start ausgewertet.
stamped
Zeitformat, für Parserfunktion #time usw.
suppress
Unterdrücke die Anzeige von Seitennamen, die dieses pattern erfüllen.
subpager
Name einer Vorlage für Unterseiten.
subpager=Subpage

Parameter, deren Name mit l beginnt, sind gesetzt, wenn ihnen eine 1 zugewiesen wird.

Definition einer Struktur

Bearbeiten

Es wird die Definition in einem Untermodul erwartet, dessen Strukturbezeichner an Modul:PageTree/ angehängt wird.

Format des Untermoduls

Bearbeiten
  • Das Untermodul muss die Bedingungen von mw.loadData() erfüllen.
  • Es ist eine table zurückzugeben.

Die folgenden Komponenten können in der table geliefert werden:

stamp
Datum/Uhrzeit gemäß ISO 8601
start
Präfix; ersetzt führenden / in Seitennamen
sub
Bezeichner eines Unter-Untermoduls relativ zum momentanen Untermodul; ohne führenden /
Das Unter-Untermodul wird im Anschluss nach genau gleichen Regeln importiert.
Für wiederholte Deklarationen gilt:
  • Ein jüngerer stamp überschreibt den älteren.
  • start wird neu zugewiesen.
  • Ein tieferes sub kann erneut gestartet werden.
  • Einträge in pages mit bereits vorhandener Definition werden ignoriert.
pages
Liste von Seiten-Einträgen als table – jeweils gemäß Seiteneintragsformat

Format eines Seiteneintrags

Bearbeiten

Ein Seiteneintrag kann auf eine von drei Arten in der table pages enthalten sein:

  • Zeichenkette
    "Seitenname"
  • Benanntes Element mit weiteren Einzelheiten
    ["Seitenname"] = { detailA= ... }
    Ein benanntes Element muss statt der Zeichenkette mit dem Seitennamen den Wert true enthalten. Dies ist das root-Element.
  • table mit Einzelheiten; Seitenname ist seed-Element.
    { seed="Seitenname", detailA= ... }

Jeder Seitenname darf nur genau einmal in einer table pages auftreten.

Jeder Eintrag kann die folgenden Eigenschaften enthalten:

seed
Seitenname als Zeichenkette; oder true beim root-Element.
Pflichtangabe
Wenn fehlt, aber benanntes Element, wird der Bezeichner des Elements benutzt.
Wenn Element keine table, sondern Zeichenkette, dann wird diese als Seitenname benutzt.
Wenn mit / beginnend, wird relativ zu start verlinkt.
shift
Ziel einer Weiterleitung
Wenn mit / beginnend, wird relativ zu start verlinkt.
show
Angezeigter Linktitel
Vorgabe: Letztes Unterseiten-Segment; oder sonst Seitentitel ohne Namensraum.
suffix
Zusätzlicher Text nach der verlinkten Seite
super
Oberseite in der Hierachie; Zeichenkette oder true.
Wenn mit / beginnend, wird relativ zu start verlinkt.
Vorgabe: nächste Oberseite vor /.
less
path – keine tieferliegende Ebene mehr zeigen.
Vorgabe: zeigen.
list
Anzeige standardmäßig unterdrücken, sofern Darstellung nicht mit list abgefordert.
Vorgabe: zeigen.
Zuweisung: list=false
loose
Verwaistes root-Element kennzeichnen.
  • all – falls auch mit list=false markiert, dann ignorieren
  • path – für aktuelle Seite anzeigen, auch wenn sonst mit list=false markiert.
  • subpages – für aktuelle Seite nicht anzeigen, wenn nicht auf ein deklariertes root-Element zurückgehend.
Vorgabe: Element zeigen.
Zuweisung: loose=true
index
Numerische Sortierfolge.
Vorgabe: alphabetisch nach Seitenname bzw. Linktitel.

Funktionen für Lua-Module

Bearbeiten

Es gibt zwei Funktionen zu Test- und organisatorischen Zwecken, die in andere Module eingebunden werden können:

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

Danach stehen zur Verfügung:

PageTree.test( args )
args sind die Argumente, die sonst beim #invoke angegeben werden würden. Zusätzlich können (müssen) enthalten sein:
  • args.self – verwenden als aktuellen Seitennamen
  • args.series – Bezeichner der Struktur an Stelle von 1.
  • args.service – Aktionsart; Name der Funktion
  • args.suite – Pfad zum Modul; hier: Modul:PageTree

Parameter, deren Name mit l beginnt, sind boolean anzugeben.

  • args.hide ist eine table, deren Einträge suppress sind.
PageTree.failsafe( atleast )
Versionsbezeichnung
  1. atleast
    optional
    nil oder Mindestversion
Rückgabewert: string oder false

Verwendung

Bearbeiten

Allgemeine Bibliothek; nicht eingegrenzt.

Abhängigkeiten

Bearbeiten