Zuletzt bearbeitet vor 2 Monaten
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

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


-- Funktion zum holen des Seitentitels mithilfe der Serien-ID
-- Hauptfunktion für die Buchdarstellung
function buch.getSeriesPageTitle(frame)
function buch.render(args, helper)
     if not mw.smw then
     -- Initialisierung
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    local seriesID = args["SerienID"]
     end
    local band = args["Band"] or "Unbekannt"
    local seriesPageTitle = "Unbekannt"
     local totalVolumes = "Unbekannt"


     local queryResult = mw.smw.getQueryResult(frame.args)
     -- Prüfen, ob eine Serien-ID vorhanden ist
 
    if seriesID and seriesID ~= "" then
    -- Kein Ergebnis gefunden
        -- Serien-Seitennamen abrufen
    if not queryResult or not queryResult.results or not queryResult.results[1] then
        seriesPageTitle = helper.getSeriesPageTitle(seriesID)
        return "Keine Ergebnisse gefunden."
        -- Gesamtbände abrufen, wenn Serien-Seite existiert
        if seriesPageTitle and seriesPageTitle ~= "Keine Serienseite gefunden." then
            totalVolumes = helper.getCompleteVolumesByTitle(seriesPageTitle)
        end
     end
     end


     -- Seitentitel extrahieren
     -- Generiere Ausgabe für Bandinformationen
     local results = queryResult.results
     local bandInfo = "Band " .. band
     if results[1].fulltext then
     if totalVolumes ~= "Unbekannt" and totalVolumes ~= "Keine Gesamtbände gefunden." then
         return results[1].fulltext
         bandInfo = bandInfo .. " von " .. totalVolumes
    else
        return "Kein Seitentitel gefunden."
     end
     end
end
     if seriesPageTitle ~= "Unbekannt" and seriesPageTitle ~= "Keine Serienseite gefunden." then
 
         bandInfo = bandInfo .. " ([[Library:" .. seriesPageTitle .. "|" .. seriesPageTitle:gsub("Library:Serie:", "") .. "]])"
-- Funktion zur Extraktion der Gesamtbände aus der Serienseite
function buch.getCompleteVolumesByTitle(frame)
     if not mw.smw then
         return "Semantic MediaWiki-Erweiterung nicht gefunden."
     end
     end


     local page = frame.args[1]  -- Seitentitel
     -- Ausgabe generieren
    local attribute = frame.args[2]  -- Attributname
     local result = "Band-Ausgabe: " .. bandInfo
 
    -- Überprüfen, ob die erforderlichen Parameter vorhanden sind
    if not page or not attribute then
        return "Seite oder Attribut nicht angegeben."
    end
 
    -- Abfrage erstellen
    local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
     local result = mw.smw.ask(query)
 
    -- Kein Ergebnis gefunden
    if not result then
        return "Keine Ergebnisse gefunden."
    end
 
    -- Ergebnis verarbeiten
    for title, data in pairs(result) do
        if data[attribute] then
            return tostring(data[attribute])
        end
    end
 
    return "Attribut nicht gefunden."
end
 
-- 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
        if seriesPageTitle and seriesPageTitle ~= "Keine Ergebnisse gefunden." then
            local completeVolumes = buch.getCompleteVolumesByTitle({ args = { seriesPageTitle, "Complete volumes" } })
            debugOutput = debugOutput .. "Gefundene Gesamtbände: " .. tostring(completeVolumes) .. "\n"
 
            -- Formatiere die Ausgabe
            local band = args["Band"] or "Unbekannt"
            local seriesTitle = seriesPageTitle:gsub("Library:Serie:", "") -- Entferne den Namensraum
            return "Band " .. band .. " von " .. tostring(completeVolumes) .. " ([["
                  .. seriesPageTitle .. "|" .. seriesTitle .. "]])"
        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 result
     return debugOutput
end
end


return buch
return buch

Version vom 22. November 2024, 19:52 Uhr

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

local getArgs = require('Module:Arguments').getArgs
local serieHelper = require("Modul:Publikation/SerieHelper")

local buch = {}

-- Hauptfunktion für die Buchdarstellung
function buch.render(args, helper)
    -- Initialisierung
    local seriesID = args["SerienID"]
    local band = args["Band"] or "Unbekannt"
    local seriesPageTitle = "Unbekannt"
    local totalVolumes = "Unbekannt"

    -- Prüfen, ob eine Serien-ID vorhanden ist
    if seriesID and seriesID ~= "" then
        -- Serien-Seitennamen abrufen
        seriesPageTitle = helper.getSeriesPageTitle(seriesID)
        -- Gesamtbände abrufen, wenn Serien-Seite existiert
        if seriesPageTitle and seriesPageTitle ~= "Keine Serienseite gefunden." then
            totalVolumes = helper.getCompleteVolumesByTitle(seriesPageTitle)
        end
    end

    -- Generiere Ausgabe für Bandinformationen
    local bandInfo = "Band " .. band
    if totalVolumes ~= "Unbekannt" and totalVolumes ~= "Keine Gesamtbände gefunden." then
        bandInfo = bandInfo .. " von " .. totalVolumes
    end
    if seriesPageTitle ~= "Unbekannt" and seriesPageTitle ~= "Keine Serienseite gefunden." then
        bandInfo = bandInfo .. " ([[Library:" .. seriesPageTitle .. "|" .. seriesPageTitle:gsub("Library:Serie:", "") .. "]])"
    end

    -- Ausgabe generieren
    local result = "Band-Ausgabe: " .. bandInfo

    return result
end

return buch