Zuletzt bearbeitet vor 4 Stunden
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
local buch = {}
local buch = {}


-- Vereinfachte Debugging-Funktion
local function getSeriesPages(seriesTitle)
local function getSeriesPages(seriesTitle)
     if not seriesTitle or seriesTitle == "" then
     if not seriesTitle or seriesTitle == "" then
Zeile 6: Zeile 7:
     end
     end


    -- Vereinfachte Abfrage ohne printrequest
     local queryData = {
     local queryData = {
         query = "[[Hat Titel::" .. seriesTitle .. "]]", -- Nur nach dem Titel suchen
         query = "[[Hat Titel::" .. seriesTitle .. "]]",
         limit = 1
         limit = 1
     }
     }
     local result = mw.smw.getQueryResult(queryData)
     local result = mw.smw.getQueryResult(queryData)


    -- Debugging-Ausgabe
     local debugOutput = "Abfrage: " .. mw.text.jsonEncode(queryData) .. "\n"
     local debugOutput = "Abfrage: " .. mw.text.jsonEncode(queryData) .. "\n"


Zeile 19: Zeile 18:
         for _, data in pairs(result.results) do
         for _, data in pairs(result.results) do
             debugOutput = debugOutput .. "Ergebnisse: " .. mw.text.jsonEncode(data) .. "\n"
             debugOutput = debugOutput .. "Ergebnisse: " .. mw.text.jsonEncode(data) .. "\n"
             return data.fulltext, debugOutput  -- Gibt den vollständigen Seitennamen zurück
             return data.fulltext, debugOutput
        end
    end
    debugOutput = debugOutput .. "Keine Ergebnisse gefunden.\n"
    return nil, debugOutput
end
 
-- Funktion, um die Anzahl der Bände aus der Serienseite zu holen
local function getTotalVolumes(seriesTitle)
    if not seriesTitle or seriesTitle == "" then
        return nil, "Kein Serienname angegeben."
    end
 
    -- Präzise Bedingung mit Semantischer Syntax
    local queryData = {
        query = "[[Hat Titel::" .. seriesTitle .. "]]",  -- Bedingung als semantische Abfrage
        printrequest = { "Complete volumes" },          -- Ausgabe
        limit = 1
    }
    local result = mw.smw.getQueryResult(queryData)
 
    -- Debugging-Ausgabe
    local debugOutput = "Abfrage: " .. mw.text.jsonEncode(queryData) .. "\n"
 
    if result and result.results and next(result.results) then
        for _, data in pairs(result.results) do
            debugOutput = debugOutput .. "Ergebnisse: " .. mw.text.jsonEncode(data) .. "\n"
            return data.properties["Complete volumes"] and data.properties["Complete volumes"][1], debugOutput
         end
         end
     end
     end
Zeile 61: Zeile 33:
     output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. title .. ']]</td></tr>'
     output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. title .. ']]</td></tr>'


     -- Autor(en)
     -- Debugging der Serie
     if args["Autor"] then
     if args["Hat Serie"] then
        output = output .. '<tr><td><strong>Autor(en)</strong></td><td>'
         local seriesPage, debugInfo = getSeriesPages(args["Hat Serie"])
        for author in mw.text.gsplit(args["Autor"], ",") do
            output = output .. '[[Hat Autor::' .. mw.text.trim(author) .. ']], '
        end
        output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
    end
 
    -- Band
    if args["Band"] then
         local seriesTitle = args["Hat Serie"] or ""
        local totalVolumes, debugInfo = getTotalVolumes(seriesTitle)
 
        output = output .. '<tr><td><strong>Band</strong></td><td>'
        output = output .. args["Band"]
        if totalVolumes then
            output = output .. ' von ' .. totalVolumes
        end
        if seriesTitle ~= "" then
            output = output .. ' ([[ ' .. seriesTitle .. ' | Serie ]])'
        end
        output = output .. '</td></tr>'
 
        -- Debugging-Informationen ausgeben
         output = output .. '<tr><td colspan="2"><pre>' .. debugInfo .. '</pre></td></tr>'
         output = output .. '<tr><td colspan="2"><pre>' .. debugInfo .. '</pre></td></tr>'
     end
     end


    -- Weitere Felder können hier hinzugefügt werden...
     output = output .. '</table>'
     output = output .. '</table>'
     return output
     return output

Version vom 21. November 2024, 11:05 Uhr

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

local buch = {}

-- Vereinfachte Debugging-Funktion
local function getSeriesPages(seriesTitle)
    if not seriesTitle or seriesTitle == "" then
        return nil, "Kein Serienname angegeben."
    end

    local queryData = {
        query = "[[Hat Titel::" .. seriesTitle .. "]]",
        limit = 1
    }
    local result = mw.smw.getQueryResult(queryData)

    local debugOutput = "Abfrage: " .. mw.text.jsonEncode(queryData) .. "\n"

    if result and result.results and next(result.results) then
        for _, data in pairs(result.results) do
            debugOutput = debugOutput .. "Ergebnisse: " .. mw.text.jsonEncode(data) .. "\n"
            return data.fulltext, debugOutput
        end
    end
    debugOutput = debugOutput .. "Keine Ergebnisse gefunden.\n"
    return nil, debugOutput
end

-- Hauptfunktion zur Darstellung der Buchinformationen
function buch.render(args, main)
    local output = '<table class="publikation buch">'

    -- Titel
    local title = args["Titel"] or "Unbekannt"
    output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. title .. ']]</td></tr>'

    -- Debugging der Serie
    if args["Hat Serie"] then
        local seriesPage, debugInfo = getSeriesPages(args["Hat Serie"])
        output = output .. '<tr><td colspan="2"><pre>' .. debugInfo .. '</pre></td></tr>'
    end

    output = output .. '</table>'
    return output
end

return buch