Zuletzt bearbeitet vor 5 Stunden
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(52 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 = {}


function buch.render(args, main)
-- Funktion zum holen des Seitentitels mithilfe der Serien-ID
     local output = '<table class="publikation buch table table-hover">'
function buch.getSeriesPageTitle(frame)
      
     if not mw.smw then
    -- Coverbild
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
     output = output .. '<tr><td colspan="2" style="text-align: center;">' .. main.getCoverImage(args["Coverbild"], "DefaultBuchCover.webp") .. '</td></tr>'
     end
 
     local queryResult = mw.smw.getQueryResult(frame.args)


     -- Titel
     -- Kein Ergebnis gefunden
     output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. (args["Titel"] or "Unbekannt") .. ']]</td></tr>'
     if not queryResult or not queryResult.results or not queryResult.results[1] then
        return "Keine Ergebnisse gefunden."
    end


     -- Autoren (Mehrfachwerte als Liste)
     -- Seitentitel extrahieren
     if args["Autor"] then
    local results = queryResult.results
         output = output .. '<tr><td><strong>Autor(en)</strong></td><td>'
     if results[1].fulltext then
        for author in mw.text.gsplit(args["Autor"], ",") do
         return results[1].fulltext
            output = output .. '[[Hat Autor::' .. author .. ']], '
    else
        end
         return "Kein Seitentitel gefunden."
         output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
     end
     end
end


    -- Originaltitel (falls vorhanden)
-- Funktion zur Extraktion der Gesamtbände aus der Serienseite
     output = output .. (args["Original Titel"] and '<tr><td><strong>Original Titel</strong></td><td>[[Original Titel::' .. args["Original Titel"] .. ']]</td></tr>' or "")
function buch.getCompleteVolumesByTitle(frame)
     if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end


     -- Erscheinungsjahr
     local page = frame.args[1]  -- Seitentitel
     output = output .. (args["Erscheinungsjahr"] and '<tr><td><strong>Erscheinungsjahr</strong></td><td>[[Erscheinungsjahr::' .. args["Erscheinungsjahr"] .. ']]</td></tr>' or "")
     local attribute = frame.args[2] -- Attributname


     -- Verlag
     -- Überprüfen, ob die erforderlichen Parameter vorhanden sind
     output = output .. (args["Verlag"] and '<tr><td><strong>Verlag</strong></td><td>[[Verlag::' .. args["Verlag"] .. ']]</td></tr>' or "")
     if not page or not attribute then
        return "Seite oder Attribut nicht angegeben."
    end


     -- Genre (Mehrfachwerte als Liste)
     -- Abfrage erstellen
     if args["Genre"] then
     local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
        output = output .. '<tr><td><strong>Genre(s)</strong></td><td>'
    local result = mw.smw.ask(query)
         for genre in mw.text.gsplit(args["Genre"], ",") do
 
             output = output .. '[[Genre::' .. genre .. ']], '
    -- 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
        output = output:sub(1, -3) .. '</td></tr>'
     end
     end


     -- Sprache
     return "Attribut nicht gefunden."
     output = output .. (args["Sprache"] and '<tr><td><strong>Sprache</strong></td><td>[[Sprache::' .. args["Sprache"] .. ']]</td></tr>' or "")
end
 
-- Hauptfunktion für die Buchdarstellung
function buch.render(frame, parentModule)
     local args = frame.args -- Direkt auf frame.args zugreifen
    local debugOutput = ""


     -- Standort
     -- Debug: Zeige alle empfangenen Argumente
     output = output .. (args["Standort"] and '<tr><td><strong>Standort</strong></td><td>[[Standort::' .. args["Standort"] .. ']]</td></tr>' or "")
     debugOutput = debugOutput .. "Empfangene Argumente:\n<pre>" .. mw.dumpObject(args) .. "</pre>\n"


     -- ISBN-10 und ISBN-13
     -- Serien-ID prüfen
     output = output .. (args["ISBN-10"] and '<tr><td><strong>ISBN-10</strong></td><td>' .. main.getIsbnLink(args["ISBN-10"], "ISBN-10") .. '</td></tr>' or "")
     local seriesID = args["SerienID"]
     output = output .. (args["ISBN-13"] and '<tr><td><strong>ISBN-13</strong></td><td>' .. main.getIsbnLink(args["ISBN-13"], "ISBN-13") .. '</td></tr>' or "")
     if seriesID then
        debugOutput = debugOutput .. "Serien-ID: " .. seriesID .. "\n"


    -- Datensatz ID (Deutsche Nationalbibliothek)
        -- Serienseite abrufen
    output = output .. (args["Datensatz ID"] and '<tr><td><strong>DNB ID</strong></td><td>[https://d-nb.info/' .. args["Datensatz ID"] .. ' ' .. args["Datensatz ID"] .. ']</td></tr>' or "")
        local seriesPageTitle = buch.getSeriesPageTitle({ args = { "[[SerienID::" .. seriesID .. "]]" } })
        debugOutput = debugOutput .. "Gefundene Serienseite: " .. tostring(seriesPageTitle) .. "\n"


    -- Umfang (Seitenanzahl)
        -- Gesamtbände abrufen
    output = output .. (args["Umfang"] and '<tr><td><strong>Umfang</strong></td><td>[[Umfang::' .. args["Umfang"] .. ']] Seiten</td></tr>' or "")
        if seriesPageTitle and seriesPageTitle ~= "Keine Ergebnisse gefunden." then
            local completeVolumes = buch.getCompleteVolumesByTitle({ args = { seriesPageTitle, "Complete volumes" } })
            debugOutput = debugOutput .. "Gefundene Gesamtbände: " .. tostring(completeVolumes) .. "\n"


    -- Preis
            -- Formatiere die Ausgabe
    output = output .. (args["Preis"] and '<tr><td><strong>Preis</strong></td><td>[[Preis::' .. args["Preis"] .. ']]</td></tr>' or "")
            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


     -- Inhaltszusammenfassung
     -- Rückgabe der Debug-Ausgabe bei Fehlern
    output = output .. (args["Inhaltszusammenfassung"] and '<tr><td><strong>Inhaltszusammenfassung</strong></td><td>' .. args["Inhaltszusammenfassung"] .. '</td></tr>' or "")
     return debugOutput
   
    output = output .. '</table>'
     return output
end
end


return buch
return buch

Aktuelle Version vom 22. November 2024, 00:45 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 zum holen des Seitentitels mithilfe der Serien-ID
function buch.getSeriesPageTitle(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    local queryResult = mw.smw.getQueryResult(frame.args)

    -- Kein Ergebnis gefunden
    if not queryResult or not queryResult.results or not queryResult.results[1] then
        return "Keine Ergebnisse gefunden."
    end

    -- Seitentitel extrahieren
    local results = queryResult.results
    if results[1].fulltext then
        return results[1].fulltext
    else
        return "Kein Seitentitel gefunden."
    end
end

-- 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

    local page = frame.args[1]  -- Seitentitel
    local attribute = frame.args[2]  -- Attributname

    -- Ü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 debugOutput
end

return buch