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