Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Related

Die Dokumentation für dieses Modul kann unter Modul:Publikation/Related/Doku erstellt werden

local related = {}
local getArgs = require("Module:Arguments").getArgs

function related.render(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    -- Debugging: Zeige die Argumente
    local args = frame.args
    local debugOutput = mw.dumpObject(args)
    local query = args["query"]
    local columns = args["columns"]
    local limit = args["limit"] or 5

    if not query then
        return "Keine Abfrage angegeben."
    end

    -- Debugging: Ausgabe des Abfrage-Strings
    debugOutput = debugOutput .. "\nAbfrage-Parameter: " .. query

    -- Abfrage ausführen
    local queryResult = mw.smw.getQueryResult({ query = query, limit = limit })

    -- Kein Ergebnis
    if not queryResult or not queryResult.results then
        return debugOutput .. "\nKeine Ergebnisse gefunden."
    end

    -- Ergebnis aufbereiten
    local output = '<table class="wikitable sortable">'
    output = output .. '<tr>'

    -- Spalten definieren
    for column in mw.text.gsplit(columns, ",") do
        output = output .. '<th>' .. mw.text.trim(column) .. '</th>'
    end
    output = output .. '</tr>'

    -- Ergebnisse iterieren
    for _, result in pairs(queryResult.results) do
        output = output .. '<tr>'
        for column in mw.text.gsplit(columns, ",") do
            local cellValue = result.printouts[mw.text.trim(column)] or ""
            output = output .. '<td>' .. tostring(cellValue) .. '</td>'
        end
        output = output .. '</tr>'
    end
    output = output .. '</table>'

    return output
end

return related