Zum Inhalt springen

Modul:UIBox

Aus Wikonia

Dokumentation für Modul:UIBox[Quelltext bearbeiten]

Dieses Modul stellt die semantische Steuerlogik für verschiedene Boxentypen im Wikonia-System bereit. Es bildet die Mittelschicht zwischen Vorlagen wie {{Hinweisbox}} und dem eigentlichen Renderingmodul Modul:UI.

Ziel ist eine strukturierte, kontrollierte Verwendung von Layouts, Typen und Prioritäten, um ein konsistentes UI-Verhalten sicherzustellen.

Funktionen[Quelltext bearbeiten]

hinweis(frame)[Quelltext bearbeiten]

Rendert eine klassische Hinweisbox für den Seiteninhalt, z. B. redaktionelle Hinweise oder Meta-Informationen.

Standardwerte:

  • layout: note
  • type: info
  • icon: Infobox info icon2.svg
  • title: „Hinweis“

baustein(frame)[Quelltext bearbeiten]

Rendert eine Wartungs-/Relevanz-/Formatierungsbox, wie sie in der Inhaltsverwaltung verwendet wird.

Standardwerte:

  • layout: frame
  • type: wartung
  • icon: Icon Maintenance.svg
  • title: „Wartung“

Unterstützte Parameter (für alle Funktionen)[Quelltext bearbeiten]

Name Beschreibung
typ Setzt die semantische Farbklasse (z. B. info, wartung, error)
prio Prioritätsklasse (niedrig, mittel, hoch, kritisch) – wirkt auf Farbstil & Darstellung
titel Überschrift der Box (kann Standard überschreiben)
text Hauptinhalt der Box (Pflichtfeld)
kommentar Optionaler Zusatzbereich
link Weiterführender Link oder Verweis
signatur Angabe zu Autor / Quelle / Zeit
icon Optionales Override für das Symbolbild
klasse Zusätzliche CSS-Klassen
id Anker-ID für gezielte Verlinkung

Technischer Aufbau[Quelltext bearbeiten]

  • Dieses Modul ruft Modul:UI auf und übergibt eine strukturierte Argumentliste.
  • Die Klasse wikonia-box--layout-* wird je nach Funktion gesetzt.
  • wikonia-box--prio-* wird automatisch aus prio generiert.

Siehe auch[Quelltext bearbeiten]


-- Modul:UIBox – Zentrale Semantikschicht für verschiedene Boxentypen
-- Dieses Modul stellt spezialisierte Funktionsaufrufe für redaktionelle, technische und systemische Boxen bereit.
-- Es nutzt das Rendering-Modul [[Modul:UI]] zur strukturierten HTML-Ausgabe.

local p = {}
local ui = require("Modul:UI")
local getArgs = require("Modul:Arguments").getArgs

-- Hinweisbox: Leserhinweise, redaktionelle Notizen
function p.hinweis(frame)
  local args = getArgs(frame)

  local boxArgs = {
    type      = args.typ or "info",
    class     = table.concat({ "wikonia-box--layout-note", args.klasse or "" }, " "):gsub("^%s*(.-)%s*$", "%1"),
    id        = args.id,
    icon      = args.icon or "Infobox info icon2.svg",
    title     = args.titel or "Hinweis",
    content   = args.text or args[1] or "''(kein Inhalt angegeben)''",
    comment   = args.kommentar,
    link      = args.link,
    signature = args.signatur
  }

  local prio = (args.prio or "mittel"):lower()
  if prio == "niedrig" or prio == "mittel" or prio == "hoch" or prio == "kritisch" then
    boxArgs.class = boxArgs.class .. " wikonia-box--prio-" .. prio
  end

  return ui.box(boxArgs)
end

-- Hilfebox: kleine unterstützende Hinweise, z. B. im Hilfebereich
function p.hilfe(frame)
  local args = getArgs(frame)

  local boxArgs = {
    type      = "hilfe",  -- immer eigene Farbwelt
    class     = table.concat({ "wikonia-box--layout-note", args.klasse or "" }, " "):gsub("^%s*(.-)%s*$", "%1"),
    id        = args.id,
    icon      = args.icon or "OOjs UI icon lightbulb-yellow",  -- z. B. Glühbirne für Tipps
    title     = args.titel or "Tipp",
    content   = args.text or args[1] or "''(kein Inhalt angegeben)''",
    comment   = args.kommentar,
    link      = args.link,
    signature = args.signatur
  }

  boxArgs.class = boxArgs.class .. " wikonia-box--prio-niedrig"

  return ui.box(boxArgs)
end

-- Projektbox: Projektinhalte, z. B. im Hilfebereich
function p.projekt(frame)
  local args = getArgs(frame)

  local boxArgs = {
    type      = "projekt",  -- immer eigene Farbwelt
    class     = table.concat({ "wikonia-box--layout-note", args.klasse or "" }, " "):gsub("^%s*(.-)%s*$", "%1"),
    id        = args.id,
    icon      = args.icon or "Wikonia Signet.png",  -- z. B. Wikonia Icon
    title     = args.titel or "",
    content   = args.text or args[1] or "''(kein Inhalt angegeben)''",
    comment   = args.kommentar,
    link      = args.link,
    signature = args.signatur
  }

  boxArgs.class = boxArgs.class .. " wikonia-box--prio-niedrig"

  return ui.box(boxArgs)
end

-- Bausteinbox: Wartung, Relevanz, Formatierung
function p.baustein(frame)
  local args = getArgs(frame)

  local boxArgs = {
    type      = args.typ or "wartung",
    class     = table.concat({ "wikonia-box--layout-frame", args.klasse or "" }, " "):gsub("^%s*(.-)%s*$", "%1"),
    id        = args.id,
    icon      = args.icon or "Icon Maintenance.svg",
    title     = args.titel or "Wartung",
    content   = args.text or args[1] or "''(kein Inhalt angegeben)''",
    comment   = args.kommentar,
    link      = args.link,
    signature = args.signatur
  }

  local prio = (args.prio or "mittel"):lower()
  if prio == "niedrig" or prio == "mittel" or prio == "hoch" or prio == "kritisch" then
    boxArgs.class = boxArgs.class .. " wikonia-box--prio-" .. prio
  end

  return ui.box(boxArgs)
end

-- Systembox: technische Fehler, Sperren, kritische Infos
function p.system(frame)
  local args = getArgs(frame)

  local boxArgs = {
    type      = args.typ or "error",
    class     = table.concat({ "wikonia-box--layout-firm", args.klasse or "" }, " "):gsub("^%s*(.-)%s*$", "%1"),
    id        = args.id,
    icon      = args.icon or "OOjs UI icon alert-destructive.svg",
    title     = args.titel or "Systemmeldung",
    content   = args.text or args[1] or "''(kein Inhalt angegeben)''",
    comment   = args.kommentar,
    link      = args.link,
    signature = args.signatur
  }

  local prio = (args.prio or "hoch"):lower()
  if prio == "niedrig" or prio == "mittel" or prio == "hoch" or prio == "kritisch" then
    boxArgs.class = boxArgs.class .. " wikonia-box--prio-" .. prio
  end

  return ui.box(boxArgs)
end

-- Ausgabe/Return
return p