Modul:HilfeNavigation
Die Dokumentation für dieses Modul kann unter Modul:HilfeNavigation/Doku erstellt werden
local p = {}
local JsonLoader = require("Modul:JsonLoader")
function p.render(frame)
local currentTitle = mw.title.getCurrentTitle().prefixedText
local data, err = JsonLoader.load("Modul:HilfeNavigation/data.json")
if not data then
return "Fehler beim Laden: " .. (err or "unbekannt")
end
local html = mw.html.create()
local head = html:tag("div"):addClass("help-sidebar-header")
-- Rekursive Funktion, die EINE Ebene der Seiten/Untergruppen verarbeitet.
local function render_list_items(parent_html_node, page_list)
local ul = parent_html_node:tag("ul")
for _, item in ipairs(page_list) do
local li = ul:tag("li") -- <--- IMMER ein LI erstellen
-- Fall 1: Ein einfacher Link
if item.link and item.label then
-- Normaler Link-Stil
if item.link == currentTitle then
li:addClass("active")
end
li:wikitext(string.format("[[%s|%s]]", item.link, item.label))
-- Fall 2: Eine Untergruppe
elseif item.group and item.pages then
-- Fügt die spezielle Klasse hinzu, um das Styling zu ermöglichen
li:addClass("help-sidebar-subgroup")
-- KEIN <h4> Element. Der Gruppenname wird einfach als Text gerendert.
li:wikitext(item.group)
-- REKURSIVER AUFRUF:
-- Die Unterliste wird in das aktuelle LI hineingerendert.
render_list_items(li, item.pages)
end
end
end
-- Navigation der Hauptgruppen (Ebene 0) rendern
for _, groupData in ipairs(data) do
html:tag("h3"):wikitext(groupData.group)
-- Startet den rekursiven Prozess für die Hauptseitenliste
render_list_items(html, groupData.pages)
end
return tostring(html)
end
return p