Zuletzt bearbeitet vor 3 Stunden
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(20 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 zur Extraktion der Gesamtbände aus der Serien-ID
     local output = '<table class="publikation buch">'
function buch.getCompleteVolumes(seriesID)
     if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end


     -- Coverbild
     if not seriesID or seriesID == "" then
    output = output .. '<tr><td colspan="2" style="text-align: center;">' .. main.getCoverImage(args["Coverbild"], "Library:DefaultBuchCover.jpg") .. '</td></tr>'
        return "Keine Serien-ID angegeben."
    end


     -- Titel
     -- Abfrage vorbereiten
     output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. (args["Titel"] or "Unbekannt") .. ']]</td></tr>'
     local query = { ["[[SerienID::" .. seriesID .. "]]"] = "?Complete volumes" }
    local queryResult = mw.smw.getQueryResult(query)


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


     -- Verlag
     -- Ergebnisse analysieren
     output = output .. (args["Verlag"] and '<tr><td><strong>Verlag</strong></td><td>[[Verlag::' .. args["Verlag"] .. ']]</td></tr>' or "")
     for _, result in pairs(queryResult.results) do
 
         local printouts = result.printouts
    -- Band und Serie
         if printouts and printouts["Complete volumes"] then
    if args["Band"] then
             return printouts["Complete volumes"][1] -- Gibt den ersten gefundenen Wert zurück
         local bandText = 'Band ' .. args["Band"]
         if args["Hat Serie"] then
             -- Dynamische Abfrage der Gesamtbände von der Serienseite
            local totalVolumes = buch.getTotalVolumes(args["Hat Serie"])
            local serienLink = '[[' .. args["Hat Serie"] .. '|' .. args["Hat Serie"]:gsub("^Serie:", "") .. ']]'
 
            if totalVolumes then
                bandText = bandText .. ' von ' .. totalVolumes .. ' (' .. serienLink .. ')'
            else
                bandText = bandText .. ' (' .. serienLink .. ')'
            end
         end
         end
        output = output .. '<tr><td><strong>Band</strong></td><td>' .. bandText .. '</td></tr>'
    elseif args["Hat Serie"] then
        local serienLink = '[[' .. args["Hat Serie"] .. '|' .. args["Hat Serie"]:gsub("^Serie:", "") .. ']]'
        output = output .. '<tr><td><strong>Serie</strong></td><td>' .. serienLink .. '</td></tr>'
     end
     end


     -- Erscheinungsjahr
     return "Keine Gesamtbände gefunden."
    output = output .. (args["Erscheinungsjahr"] and '<tr><td><strong>Erscheinungsjahr</strong></td><td>[[Erscheinungsjahr::' .. args["Erscheinungsjahr"] .. ']]</td></tr>' or "")
end


     -- ISBN
-- Hauptfunktion für die Buchdarstellung
     if args["ISBN-10"] or args["ISBN-13"] then
function buch.render(args, helper)
        local isbn10 = main.getIsbnLink(args["ISBN-10"], "ISBN-10")
    local title = args["Titel"] or "Unbekannt"
        local isbn13 = main.getIsbnLink(args["ISBN-13"], "ISBN-13")
    local author = args["Autor"] or "Unbekannt"
        output = output .. '<tr><td><strong>ISBN</strong></td><td>' .. isbn10 .. (isbn10 ~= "" and isbn13 ~= "" and " / " or "") .. isbn13 .. '</td></tr>'
    local band = args["Band"] or ""
    end
     local seriesID = args["Hat Serie"] or "" -- Serien-ID aus den Argumenten holen
    local cover = args["Coverbild"] or ""
    local genre = args["Genre"] or ""
    local language = args["Sprache"] or ""
    local location = args["Standort"] or ""
    local summary = args["Inhaltszusammenfassung"] or ""
    local price = args["Preis"] or ""
    local originalTitle = args["Original Titel"] or ""
     local publisher = args["Verlag"] or ""
    local year = args["Erscheinungsjahr"] or ""
    local isbn10 = helper.getIsbnLink(args["ISBN-10"], "ISBN-10")
    local isbn13 = helper.getIsbnLink(args["ISBN-13"], "ISBN-13")
    local dnbID = args["Datensatz ID"] or ""


     -- Sprache
     -- **DEBUG** Serien-ID überprüfen
     output = output .. (args["Sprache"] and '<tr><td><strong>Sprache</strong></td><td>[[Sprache::' .. args["Sprache"] .. ']]</td></tr>' or "")
     local debugOutput = "Serien-ID: " .. (seriesID ~= "" and seriesID or "Keine Serien-ID angegeben") .. "\n"


     -- Standort
     -- Gesamtbände extrahieren
     output = output .. (args["Standort"] and '<tr><td><strong>Standort</strong></td><td>[[Standort::' .. args["Standort"] .. ']]</td></tr>' or "")
     local completeVolumes = buch.getCompleteVolumes(seriesID)


     -- Umfang (Seitenanzahl)
     -- Ausgabe für Band
     output = output .. (args["Umfang"] and '<tr><td><strong>Umfang</strong></td><td>[[Umfang::' .. args["Umfang"] .. ']] Seiten</td></tr>' or "")
     local bandOutput = "Band " .. band
    if completeVolumes and completeVolumes ~= "" then
        bandOutput = bandOutput .. " von " .. completeVolumes
    end


     -- Preis
     -- Titelzeile
     output = output .. (args["Preis"] and '<tr><td><strong>Preis</strong></td><td>[[Preis::' .. args["Preis"] .. ']]</td></tr>' or "")
     local result = debugOutput .. "\n" -- **DEBUG** Serien-ID einfügen
    result = result .. "'''Titel:''' " .. title .. "\n"
    result = result .. "'''Autor(en):''' " .. author .. "\n"
    result = result .. "'''Band:''' " .. bandOutput .. "\n"


     -- Inhaltszusammenfassung
     -- Zusätzliche Felder
     output = output .. (args["Inhaltszusammenfassung"] and '<tr><td><strong>Inhaltszusammenfassung</strong></td><td>' .. args["Inhaltszusammenfassung"] .. '</td></tr>' or "")
    result = result .. (publisher ~= "" and "'''Verlag:''' " .. publisher .. "\n" or "")
    result = result .. (year ~= "" and "'''Erscheinungsjahr:''' " .. year .. "\n" or "")
    result = result .. (isbn10 ~= "" and "'''ISBN-10:''' " .. isbn10 .. "\n" or "")
    result = result .. (isbn13 ~= "" and "'''ISBN-13:''' " .. isbn13 .. "\n" or "")
    result = result .. (genre ~= "" and "'''Genre:''' " .. genre .. "\n" or "")
    result = result .. (language ~= "" and "'''Sprache:''' " .. language .. "\n" or "")
    result = result .. (location ~= "" and "'''Standort:''' " .. location .. "\n" or "")
     result = result .. (price ~= "" and "'''Preis:''' " .. price .. "\n" or "")
    result = result .. (dnbID ~= "" and "'''DNB-ID:''' [[https://d-nb.info/" .. dnbID .. "]]\n" or "")
    result = result .. (summary ~= "" and "'''Inhaltszusammenfassung:''' " .. summary .. "\n" or "")


     output = output .. '</table>'
     -- Coverbild
    local defaultCover = "Library:Cover:BuchDefault.webp"
    local coverImage = helper.getCoverImage(cover, defaultCover)
    result = result .. "\n" .. coverImage


     return output
     return result
end
 
-- Funktion zur dynamischen Abfrage der Gesamtbände
function buch.getTotalVolumes(seriesPage)
    local query = "[[" .. seriesPage .. "]][[Gesamtbände::+]]"
    local result = mw.smw.getQueryResult(query)
    if result and result.results and next(result.results) then
        local key = next(result.results)
        local data = result.results[key]
        return data.properties["Gesamtbände"] and data.properties["Gesamtbände"][1] or nil
    end
    return nil
end
end


return buch
return buch

Aktuelle Version vom 21. November 2024, 14:51 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(seriesID)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    if not seriesID or seriesID == "" then
        return "Keine Serien-ID angegeben."
    end

    -- Abfrage vorbereiten
    local query = { ["[[SerienID::" .. seriesID .. "]]"] = "?Complete volumes" }
    local queryResult = mw.smw.getQueryResult(query)

    if not queryResult or not queryResult.results then
        return "Keine Ergebnisse gefunden."
    end

    -- Ergebnisse analysieren
    for _, result in pairs(queryResult.results) do
        local printouts = result.printouts
        if printouts and printouts["Complete volumes"] then
            return printouts["Complete volumes"][1] -- Gibt den ersten gefundenen Wert zurück
        end
    end

    return "Keine Gesamtbände gefunden."
end

-- Hauptfunktion für die Buchdarstellung
function buch.render(args, helper)
    local title = args["Titel"] or "Unbekannt"
    local author = args["Autor"] or "Unbekannt"
    local band = args["Band"] or ""
    local seriesID = args["Hat Serie"] or "" -- Serien-ID aus den Argumenten holen
    local cover = args["Coverbild"] or ""
    local genre = args["Genre"] or ""
    local language = args["Sprache"] or ""
    local location = args["Standort"] or ""
    local summary = args["Inhaltszusammenfassung"] or ""
    local price = args["Preis"] or ""
    local originalTitle = args["Original Titel"] or ""
    local publisher = args["Verlag"] or ""
    local year = args["Erscheinungsjahr"] or ""
    local isbn10 = helper.getIsbnLink(args["ISBN-10"], "ISBN-10")
    local isbn13 = helper.getIsbnLink(args["ISBN-13"], "ISBN-13")
    local dnbID = args["Datensatz ID"] or ""

    -- **DEBUG** Serien-ID überprüfen
    local debugOutput = "Serien-ID: " .. (seriesID ~= "" and seriesID or "Keine Serien-ID angegeben") .. "\n"

    -- Gesamtbände extrahieren
    local completeVolumes = buch.getCompleteVolumes(seriesID)

    -- Ausgabe für Band
    local bandOutput = "Band " .. band
    if completeVolumes and completeVolumes ~= "" then
        bandOutput = bandOutput .. " von " .. completeVolumes
    end

    -- Titelzeile
    local result = debugOutput .. "\n" -- **DEBUG** Serien-ID einfügen
    result = result .. "'''Titel:''' " .. title .. "\n"
    result = result .. "'''Autor(en):''' " .. author .. "\n"
    result = result .. "'''Band:''' " .. bandOutput .. "\n"

    -- Zusätzliche Felder
    result = result .. (publisher ~= "" and "'''Verlag:''' " .. publisher .. "\n" or "")
    result = result .. (year ~= "" and "'''Erscheinungsjahr:''' " .. year .. "\n" or "")
    result = result .. (isbn10 ~= "" and "'''ISBN-10:''' " .. isbn10 .. "\n" or "")
    result = result .. (isbn13 ~= "" and "'''ISBN-13:''' " .. isbn13 .. "\n" or "")
    result = result .. (genre ~= "" and "'''Genre:''' " .. genre .. "\n" or "")
    result = result .. (language ~= "" and "'''Sprache:''' " .. language .. "\n" or "")
    result = result .. (location ~= "" and "'''Standort:''' " .. location .. "\n" or "")
    result = result .. (price ~= "" and "'''Preis:''' " .. price .. "\n" or "")
    result = result .. (dnbID ~= "" and "'''DNB-ID:''' [[https://d-nb.info/" .. dnbID .. "]]\n" or "")
    result = result .. (summary ~= "" and "'''Inhaltszusammenfassung:''' " .. summary .. "\n" or "")

    -- Coverbild
    local defaultCover = "Library:Cover:BuchDefault.webp"
    local coverImage = helper.getCoverImage(cover, defaultCover)
    result = result .. "\n" .. coverImage

    return result
end

return buch