Zuletzt bearbeitet vor 34 Minuten
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local smw = require('Module:SMW')
local getArgs = require('Module:Arguments').getArgs
local buch = {}
local buch = {}


-- Funktion, um die Anzahl der Bände aus der Serienseite zu holen
-- Funktion zur Extraktion der Gesamtbände aus der Serien-ID
local function getTotalVolumes(seriesTitle)
function buch.getCompleteVolumes(frame)
     if not seriesTitle or seriesTitle == "" then
     if not mw.smw then
         return nil, "Kein Serienname angegeben."
         return "Semantic MediaWiki-Erweiterung nicht gefunden."
     end
     end


     local query = "[[Hat Titel::" .. seriesTitle .. "]]|?Complete volumes|limit=1"
     -- Überprüfung auf leere Parameter
     local result = mw.smw.getQueryResult(query)
    if frame.args[1] == nil then
        return "Keine Abfrageparameter gefunden."
     end


     -- Debugging-Ausgabe
     -- Abfrage ausführen
     local debugOutput = "Abfrage: " .. query .. "\n"
     local queryResult = mw.smw.getQueryResult(frame.args)


     if result and result.results and next(result.results) then
    -- Kein Ergebnis
         for _, data in pairs(result.results) do
     if queryResult == nil then
            debugOutput = debugOutput .. "Ergebnisse: " .. mw.text.jsonEncode(data) .. "\n"
         return "Keine Ergebnisse gefunden."
            return data.properties["Complete volumes"] and data.properties["Complete volumes"][1], debugOutput
    end
         end
 
    -- Debugging: Vollständige Struktur anzeigen
    -- return "<pre>" .. mw.dumpObject(queryResult) .. "</pre>"
 
    -- Extrahieren des Seitentitels
    local results = queryResult.results
    if results and results[1] and results[1].fulltext then
        return "Gefundener Seitentitel: " .. results[1].fulltext
    else
         return "Kein Seitentitel gefunden."
     end
     end
    debugOutput = debugOutput .. "Keine Ergebnisse gefunden.\n"
    return nil, debugOutput
end
end


-- Hauptfunktion zur Darstellung der Buchinformationen
function buch.getCompleteVolumesByTitle(page, attribute)
function buch.render(args, main)
     if not mw.smw then
     local output = '<table class="publikation buch">'
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end


     -- Titel
     -- Überprüfung auf Seitentitel und Attribut
     local title = args["Titel"] or "Unbekannt"
     if not page or not attribute then
     output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. title .. ']]</td></tr>'
        return "Seite oder Attribut nicht angegeben."
     end


     -- Autor(en)
     -- Abfrage erstellen
     if args["Autor"] then
     local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
        output = output .. '<tr><td><strong>Autor(en)</strong></td><td>'
    local result = mw.smw.ask(query)
         for author in mw.text.gsplit(args["Autor"], ",") do
    if not result then
             output = output .. '[[Hat Autor::' .. mw.text.trim(author) .. ']], '
         return "Keine Ergebnisse gefunden."
    end
 
    -- Durchlaufe Ergebnisse, um das Attribut zu extrahieren
    for title, data in pairs(result) do
        if data[attribute] and type(data[attribute]) == "table" then
             return tostring(data[attribute][1]) -- Erster gefundener Wert
         end
         end
        output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
     end
     end


     -- Band
     return "Attribut nicht gefunden."
     if args["Band"] then
end
        local seriesTitle = args["Hat Serie"] or ""
 
        local totalVolumes, debugInfo = getTotalVolumes(seriesTitle)
-- Hauptfunktion für die Buchdarstellung
function buch.render(args, helper)
     local seriesID = args["Hat Serie"] or ""
    local band = args["Band"] or ""
 
    -- Serien-Seite holen
    local seriesTitle = buch.getCompleteVolumes(seriesID)
    if seriesTitle:find("Gefundener Seitentitel") then
        seriesTitle = seriesTitle:gsub("Gefundener Seitentitel: ", "")
    else
        return "Fehler beim Abrufen der Serien-Seite."
    end


        output = output .. '<tr><td><strong>Band</strong></td><td>'
    -- Attribut abrufen
        output = output .. args["Band"]
    local completeVolumes = buch.getCompleteVolumesByTitle(seriesTitle, "Complete volumes")
        if totalVolumes then
    if completeVolumes:find("Keine Ergebnisse gefunden") or completeVolumes:find("Attribut nicht gefunden") then
            output = output .. ' von ' .. totalVolumes
         return "Fehler beim Abrufen der Gesamtbände."
         end
    end
        if seriesTitle ~= "" then
            output = output .. ' ([[ ' .. seriesTitle .. ' | Serie ]])'
        end
        output = output .. '</td></tr>'


        -- Debugging-Informationen ausgeben
    -- Ausgabe der Bände
         output = output .. '<tr><td colspan="2"><pre>' .. debugInfo .. '</pre></td></tr>'
    local bandOutput = "Band " .. band
    if completeVolumes and completeVolumes ~= "" then
         bandOutput = bandOutput .. " von " .. completeVolumes
    else
        bandOutput = bandOutput .. " (Keine Gesamtbände gefunden)"
     end
     end


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


return buch
return buch

Aktuelle Version vom 21. November 2024, 21:48 Uhr

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

local smw = require('Module:SMW')
local getArgs = require('Module:Arguments').getArgs

local buch = {}

-- Funktion zur Extraktion der Gesamtbände aus der Serien-ID
function buch.getCompleteVolumes(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    -- Überprüfung auf leere Parameter
    if frame.args[1] == nil then
        return "Keine Abfrageparameter gefunden."
    end

    -- Abfrage ausführen
    local queryResult = mw.smw.getQueryResult(frame.args)

    -- Kein Ergebnis
    if queryResult == nil then
        return "Keine Ergebnisse gefunden."
    end

    -- Debugging: Vollständige Struktur anzeigen
    -- return "<pre>" .. mw.dumpObject(queryResult) .. "</pre>"

    -- Extrahieren des Seitentitels
    local results = queryResult.results
    if results and results[1] and results[1].fulltext then
        return "Gefundener Seitentitel: " .. results[1].fulltext
    else
        return "Kein Seitentitel gefunden."
    end
end

function buch.getCompleteVolumesByTitle(page, attribute)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    -- Überprüfung auf Seitentitel und Attribut
    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)
    if not result then
        return "Keine Ergebnisse gefunden."
    end

    -- Durchlaufe Ergebnisse, um das Attribut zu extrahieren
    for title, data in pairs(result) do
        if data[attribute] and type(data[attribute]) == "table" then
            return tostring(data[attribute][1]) -- Erster gefundener Wert
        end
    end

    return "Attribut nicht gefunden."
end

-- Hauptfunktion für die Buchdarstellung
function buch.render(args, helper)
    local seriesID = args["Hat Serie"] or ""
    local band = args["Band"] or ""

    -- Serien-Seite holen
    local seriesTitle = buch.getCompleteVolumes(seriesID)
    if seriesTitle:find("Gefundener Seitentitel") then
        seriesTitle = seriesTitle:gsub("Gefundener Seitentitel: ", "")
    else
        return "Fehler beim Abrufen der Serien-Seite."
    end

    -- Attribut abrufen
    local completeVolumes = buch.getCompleteVolumesByTitle(seriesTitle, "Complete volumes")
    if completeVolumes:find("Keine Ergebnisse gefunden") or completeVolumes:find("Attribut nicht gefunden") then
        return "Fehler beim Abrufen der Gesamtbände."
    end

    -- Ausgabe der Bände
    local bandOutput = "Band " .. band
    if completeVolumes and completeVolumes ~= "" then
        bandOutput = bandOutput .. " von " .. completeVolumes
    else
        bandOutput = bandOutput .. " (Keine Gesamtbände gefunden)"
    end

    return bandOutput
end

return buch