Zuletzt bearbeitet vor 12 Minuten
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local smw = require('Module:SMW')
local buch = {}
local helper = require("Modul:Publikation/SerieHelper")
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs


local buch = {}
function buch.render(frame)
    local debugOutput = {}


-- Funktion zum holen des Seitentitels mithilfe der Serien-ID
    -- Argumente aus dem Frame extrahieren
function buch.getSeriesPageTitle(frame)
    local args = frame.args
     if not mw.smw then
     if not args then
         return "Semantic MediaWiki-Erweiterung nicht gefunden."
        table.insert(debugOutput, "Fehler: Keine Argumente übergeben.")
         return "<pre>" .. table.concat(debugOutput, "\n") .. "</pre>"
     end
     end


     local queryResult = mw.smw.getQueryResult(frame.args)
     -- Debugging: Gebe alle übergebenen Argumente aus
 
    table.insert(debugOutput, "Übergebene Argumente:")
     -- Kein Ergebnis gefunden
     for k, v in pairs(args) do
    if not queryResult or not queryResult.results or not queryResult.results[1] then
        table.insert(debugOutput, k .. ": " .. tostring(v))
        return "Keine Ergebnisse gefunden."
     end
     end


     -- Seitentitel extrahieren
     -- Serien-ID abrufen
     local results = queryResult.results
     local seriesID = args["SerienID"]
     if results[1].fulltext then
     if not seriesID or seriesID == "" then
         return results[1].fulltext
         table.insert(debugOutput, "Fehler: Serien-ID nicht angegeben.")
    else
         return "<pre>" .. table.concat(debugOutput, "\n") .. "</pre>"
         return "Kein Seitentitel gefunden."
     end
     end
end


-- Funktion zur Extraktion der Gesamtbände aus der Serienseite
    -- Debugging: Zeige die Serien-ID an
function buch.getCompleteVolumesByTitle(frame)
    table.insert(debugOutput, "Serien-ID erfolgreich abgerufen: " .. seriesID)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end


     local page = frame.args[1]  -- Seitentitel
     -- Abfrage erstellen und Serien-Seite abrufen
     local attribute = frame.args[2] -- Attributname
     local seriesQuery = "[[SerienID::" .. seriesID .. "]]"
    table.insert(debugOutput, "Query für Serien-Seite: " .. seriesQuery)


     -- Überprüfen, ob die erforderlichen Parameter vorhanden sind
     -- Serien-Seite abrufen
     if not page or not attribute then
    local seriesPageTitle = helper.getSeriesPageTitle({ query = seriesQuery })
         return "Seite oder Attribut nicht angegeben."
     if type(seriesPageTitle) ~= "string" then
         table.insert(debugOutput, "Serien-Seite ist keine gültige Zeichenkette.")
    else
        table.insert(debugOutput, "Gefundene Serien-Seite: " .. seriesPageTitle)
     end
     end


     -- Abfrage erstellen
     -- Überprüfen, ob die Serien-Seite gefunden wurde
     local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
     if seriesPageTitle == "Keine Ergebnisse gefunden." or seriesPageTitle == nil then
     local result = mw.smw.ask(query)
        table.insert(debugOutput, "Fehler: Serien-Seite konnte nicht abgerufen werden.")
        return "<pre>" .. table.concat(debugOutput, "\n") .. "</pre>"
     end


     -- Kein Ergebnis gefunden
     -- Gesamtbände abrufen
     if not result then
    local completeVolumes = helper.getCompleteVolumesByTitle({ seriesPageTitle, "Complete volumes" })
         return "Keine Ergebnisse gefunden."
     if type(completeVolumes) ~= "string" then
         table.insert(debugOutput, "Gesamtbände ist keine gültige Zeichenkette.")
    else
        table.insert(debugOutput, "Gefundene Gesamtbände: " .. tostring(completeVolumes))
     end
     end


     -- Ergebnis verarbeiten
     if completeVolumes == "Keine Ergebnisse gefunden." then
    for title, data in pairs(result) do
         completeVolumes = "Unbekannt"
        if data[attribute] then
            return tostring(data[attribute])
         end
     end
     end


    return "Attribut nicht gefunden."
     -- Serien-Link erstellen
end
     local seriesLink = '[[' .. seriesPageTitle .. '|' .. (args["Hat Serie"] or "Serie") .. ']]'
 
-- Hauptfunktion für die Buchdarstellung
function buch.render(frame, parentModule)
    local args = frame.args -- Direkt auf frame.args zugreifen
    local debugOutput = ""
 
    -- Debug: Zeige alle empfangenen Argumente
    debugOutput = debugOutput .. "Empfangene Argumente:\n<pre>" .. mw.dumpObject(args) .. "</pre>\n"
 
     -- Serien-ID prüfen
     local seriesID = args["SerienID"]
    if seriesID then
        debugOutput = debugOutput .. "Serien-ID: " .. seriesID .. "\n"
 
        -- Serienseite abrufen
        local seriesPageTitle = buch.getSeriesPageTitle({ args = { "[[SerienID::" .. seriesID .. "]]" } })
        debugOutput = debugOutput .. "Gefundene Serienseite: " .. tostring(seriesPageTitle) .. "\n"


        -- Gesamtbände abrufen
    -- Ausgabe der Band-Informationen
        if seriesPageTitle and seriesPageTitle ~= "Keine Ergebnisse gefunden." then
    local band = args["Band"] or "Kein Band angegeben."
            local completeVolumes = buch.getCompleteVolumesByTitle({ args = { seriesPageTitle, "Complete volumes" } })
    local bandInfo = "Band " .. band .. " von " .. completeVolumes .. " (" .. seriesLink .. ")"
            debugOutput = debugOutput .. "Gefundene Gesamtbände: " .. tostring(completeVolumes) .. "\n"
    table.insert(debugOutput, "Ausgabe der Band-Informationen: " .. bandInfo)


            -- Formatiere die Ausgabe
    -- Debugging: Finaler Ausgabe-String
            local band = args["Band"] or "Unbekannt"
    table.insert(debugOutput, "Finale Ausgabe:")
            return "Band " .. band .. " von " .. tostring(completeVolumes) .. " (Serie: [[" .. seriesPageTitle .. "]])"
    table.insert(debugOutput, bandInfo)
        else
            debugOutput = debugOutput .. "Fehler: Serienseite konnte nicht gefunden werden.\n"
        end
    else
        debugOutput = debugOutput .. "Fehler: Serien-ID nicht angegeben.\n"
    end


    -- Rückgabe der Debug-Ausgabe bei Fehlern
     return "<pre>" .. table.concat(debugOutput, "\n") .. "</pre>"
     return debugOutput
end
end


return buch
return buch

Aktuelle Version vom 22. November 2024, 22:08 Uhr

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

local buch = {}
local helper = require("Modul:Publikation/SerieHelper")
local getArgs = require('Module:Arguments').getArgs

function buch.render(frame)
    local debugOutput = {}

    -- Argumente aus dem Frame extrahieren
    local args = frame.args
    if not args then
        table.insert(debugOutput, "Fehler: Keine Argumente übergeben.")
        return "<pre>" .. table.concat(debugOutput, "\n") .. "</pre>"
    end

    -- Debugging: Gebe alle übergebenen Argumente aus
    table.insert(debugOutput, "Übergebene Argumente:")
    for k, v in pairs(args) do
        table.insert(debugOutput, k .. ": " .. tostring(v))
    end

    -- Serien-ID abrufen
    local seriesID = args["SerienID"]
    if not seriesID or seriesID == "" then
        table.insert(debugOutput, "Fehler: Serien-ID nicht angegeben.")
        return "<pre>" .. table.concat(debugOutput, "\n") .. "</pre>"
    end

    -- Debugging: Zeige die Serien-ID an
    table.insert(debugOutput, "Serien-ID erfolgreich abgerufen: " .. seriesID)

    -- Abfrage erstellen und Serien-Seite abrufen
    local seriesQuery = "[[SerienID::" .. seriesID .. "]]"
    table.insert(debugOutput, "Query für Serien-Seite: " .. seriesQuery)

    -- Serien-Seite abrufen
    local seriesPageTitle = helper.getSeriesPageTitle({ query = seriesQuery })
    if type(seriesPageTitle) ~= "string" then
        table.insert(debugOutput, "Serien-Seite ist keine gültige Zeichenkette.")
    else
        table.insert(debugOutput, "Gefundene Serien-Seite: " .. seriesPageTitle)
    end

    -- Überprüfen, ob die Serien-Seite gefunden wurde
    if seriesPageTitle == "Keine Ergebnisse gefunden." or seriesPageTitle == nil then
        table.insert(debugOutput, "Fehler: Serien-Seite konnte nicht abgerufen werden.")
        return "<pre>" .. table.concat(debugOutput, "\n") .. "</pre>"
    end

    -- Gesamtbände abrufen
    local completeVolumes = helper.getCompleteVolumesByTitle({ seriesPageTitle, "Complete volumes" })
    if type(completeVolumes) ~= "string" then
        table.insert(debugOutput, "Gesamtbände ist keine gültige Zeichenkette.")
    else
        table.insert(debugOutput, "Gefundene Gesamtbände: " .. tostring(completeVolumes))
    end

    if completeVolumes == "Keine Ergebnisse gefunden." then
        completeVolumes = "Unbekannt"
    end

    -- Serien-Link erstellen
    local seriesLink = '[[' .. seriesPageTitle .. '|' .. (args["Hat Serie"] or "Serie") .. ']]'

    -- Ausgabe der Band-Informationen
    local band = args["Band"] or "Kein Band angegeben."
    local bandInfo = "Band " .. band .. " von " .. completeVolumes .. " (" .. seriesLink .. ")"
    table.insert(debugOutput, "Ausgabe der Band-Informationen: " .. bandInfo)

    -- Debugging: Finaler Ausgabe-String
    table.insert(debugOutput, "Finale Ausgabe:")
    table.insert(debugOutput, bandInfo)

    return "<pre>" .. table.concat(debugOutput, "\n") .. "</pre>"
end

return buch