Modul:UI
Dokumentation für Modul:UI Bearbeiten
Dieses Modul stellt ein zentrales UI-Rendering-Backend für Wikonia bereit. Es dient als Setzkasten zur Darstellung von Box-Elementen, unabhängig von deren Kontext oder Platzierung.
Hinweis: Das Modul ist positionsagnostisch. Die semantische Einordnung (z. B. „oben auf der Seite anzeigen“) erfolgt in Middleware-Modulen wie Modul:Hinweisbox.
Funktionen Bearbeiten
box(args) Bearbeiten
Erzeugt eine visuelle Box mit optionalen Bereichen (Icon, Titel, Kommentar etc.).
Parameter Bearbeiten
| Name | Typ | Beschreibung |
|---|---|---|
type |
Zeichenkette | Farbtyp der Box, z. B. warn, info, neutral
→ erzeugt CSS-Klasse |
class |
Zeichenkette | Zusätzliche CSS-Klassen (z. B. tight, shadow)
|
id |
Zeichenkette | Optionaler id-Wert zur gezielten Verlinkung
|
icon |
Zeichenkette | Dateiname eines Commons-Bildes (ohne Datei:)
|
iconsize |
Zeichenkette | Größe des darzustellenden Icons (Standard: 24px) |
title |
Zeichenkette | Überschrift innerhalb der Box |
content |
Zeichenkette | Hauptinhalt der Box – Pflichtfeld |
comment |
Zeichenkette | Optionaler Zusatzkommentar |
link |
Zeichenkette | Weiterführender Link oder Aktion |
signature |
Zeichenkette | Angabe zur Herkunft (Autor, Zeitstempel o. ä.) |
Ausgabe (HTML-Struktur) Bearbeiten
<div class="wikonia-box wikonia-box--[type] [class]" id="[id]">
<div class="wikonia-box__icon">…</div>
<div class="wikonia-box__title">…</div>
<div class="wikonia-box__content">…</div>
<div class="wikonia-box__comment">…</div>
<div class="wikonia-box__link">…</div>
<div class="wikonia-box__signature">…</div>
</div>
Nur die tatsächlich gesetzten Parameter führen zu Ausgabe-Elementen. Nicht verwendete Bereiche bleiben ungerendert.
Sonderfall: type = hilfe Bearbeiten
Bei type = hilfe wird eine kompakte, einzeilige Box ausgegeben, die speziell für kurze Hilfetipps gedacht ist.
Der Titel und der Inhalt erscheinen direkt nebeneinander, ergänzt um ein Icon (z. B. Glühbirne).
Ein optionaler Kommentar wird eingerückt darunter dargestellt.
<div class="wikonia-box wikonia-box--type-hilfe wikonia-box--inline [class]" id="[id]">
<span class="wikonia-box__icon">…</span>
<strong class="wikonia-box__title">…</strong>
<span class="wikonia-box__content">…</span>
<div class="wikonia-box__comment">…</div>
</div>
Diese Variante wird automatisch aktiviert, sobald type = hilfe gesetzt ist – typischerweise durch Module wie Modul:UIBox in Verbindung mit {{Hilfetipp}}.
Hinweis: Die visuelle Darstellung hängt von den definierten Farben in der Wikonia-Farbwelt (--color-hilfe) ab.
Verwendung Bearbeiten
Typischerweise wird dieses Modul von Wrapper-Modulen wie Modul:Hinweisbox oder Modul:Baustein aufgerufen, nicht direkt in Vorlagen.
-- Modul:UI – Basisstruktur für visuelle Box-Elemente
-- Dieses Modul stellt eine generische Setzkasten-Funktion zum Aufbau von Hinweis-/Info-/Systemboxen bereit.
-- Es rendert keine Positionierungslogik, sondern liefert rein das HTML/CSS-Strukturelement zur Darstellung.
-- Erweiterbare Felder: icon, title, content, comment, link, signature
-- Geplante Ausbaustufen:
-- * p.inline(args): für Fließtext-Bausteine (span)
-- * p.overlay(args): für globale Hinweise oder Banner (z. B. Beta-Hinweise)
-- * p.menu(args): für UI-Elemente wie Tabs, Seitennavigation
-- * p.container(args): für strukturierte Infoboxen (Cargo-Unterstützung)
-- * p.style(args): für gezielte Style-Ausgaben oder CSS-Erweiterungen
-- Achtung: Das Modul ist absichtlich positionsagnostisch – Kontext (z. B. "zeige oben auf Seite") regelt die Middleware.
local p = {}
-- Hauptfunktion: box(args)
-- Liefert standardisierte Box-Ausgabe abhängig vom Typ (z. B. "info", "warnung", "hilfe")
-- Spezialbehandlung für type="hilfe": kompakter Inline-Modus mit optionalem Kommentar
function p.box(args)
-- ✱ Spezialfall: Kompakter Hilfetipp (type = "hilfe") mit einzeiliger Darstellung
if args.type == "hilfe" then
local html = mw.html.create("div")
:addClass("wikonia-box") -- generische Boxklasse
:addClass("wikonia-box--type-hilfe") -- Farbdefinition
:addClass("wikonia-box--inline") -- spezielles Inline-Layout
:addClass(args.class or "") -- zusätzliche benutzerdefinierte Klassen
-- Icon (Pflicht für Wiedererkennung; z. B. Glühbirne)
if args.icon then
html:tag("span")
:addClass("wikonia-box__icon")
:wikitext("[[Datei:" .. args.icon .. "|16px|class=noviewer]]")
end
-- Titel (fett, einzeilig, endet mit Doppelpunkt)
if args.title then
html:tag("strong")
:addClass("wikonia-box__title")
:wikitext(args.title .. ":")
end
-- Inhalt (direkt anschließend, als Fließtext)
html:tag("span")
:addClass("wikonia-box__content")
:wikitext(args.content or "")
-- Kommentar (optional, erscheint eingerückt darunter)
if args.comment then
html:tag("div")
:addClass("wikonia-box__comment")
:wikitext(args.comment)
end
return tostring(html)
end
-- ✱ Standardfall für alle anderen Boxen
local html = mw.html.create("div")
:addClass("wikonia-box")
-- Farbklassenzuweisung
if args.type then
html:addClass("wikonia-box--" .. args.type)
else
html:addClass("wikonia-box--neutral")
end
-- Benutzerdefinierte Zusatzklassen
if args.class then
html:addClass(args.class)
end
-- ID-Attribut (z. B. für Anker)
if args.id then
html:attr("id", args.id)
end
-- Icon (optional)
if args.icon then
local size = args.iconsize or "24px"
local icon = mw.html.create("div")
:addClass("wikonia-box__icon")
:wikitext("[[Datei:" .. args.icon .. "|" .. size .. "|class=noviewer]]")
html:node(icon)
end
-- Titel (optional)
if args.title then
local title = mw.html.create("div")
:addClass("wikonia-box__title")
:wikitext(args.title)
html:node(title)
end
-- Hauptinhalt (Pflichtfeld)
local content = mw.html.create("div")
:addClass("wikonia-box__content")
:wikitext(args.content or "")
html:node(content)
-- Kommentar (optionaler Zusatztext unterhalb)
if args.comment then
local comment = mw.html.create("div")
:addClass("wikonia-box__comment")
:wikitext(args.comment)
html:node(comment)
end
-- Linkbereich (optional, z. B. für „Weitere Infos“)
if args.link then
local link = mw.html.create("div")
:addClass("wikonia-box__link")
:wikitext(args.link)
html:node(link)
end
-- Signatur oder Verfasserhinweis (optional)
if args.signature then
local sig = mw.html.create("div")
:addClass("wikonia-box__signature")
:wikitext(args.signature)
html:node(sig)
end
return tostring(html)
end
return p