Zuletzt bearbeitet vor 4 Minuten
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

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


local buch = {}
function buch.render(frame)
    -- Argumente aus dem Frame extrahieren
    local args = frame.args
    local output = '<table class="publikation buch table">'


-- Funktion zur Extraktion der Gesamtbände aus der Serien-ID
    -- Coverbild
function buch.getCompleteVolumes(frame)
output = output .. '<tr><td colspan="2" style="text-align: center;">' .. helper.getCoverImage({cover = args["Coverbild"], defaultCover = "Library:Cover:DefaultBuchCover.webp"}) .. '</td></tr>'
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end


     -- Überprüfung auf leere Parameter
     -- Setze den DISPLAYTITLE basierend auf dem Titel des Buches
     if frame.args[1] == nil then
     if args["Titel"] then
         return "Keine Abfrageparameter gefunden."
         helper.setDisplayTitle({title = args["Titel"]})
     end
     end


     -- Abfrage ausführen
     -- Titel
     local queryResult = mw.smw.getQueryResult(frame.args)
     output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. (args["Titel"] or "Unbekannt") .. ']]</td></tr>'


     -- Kein Ergebnis
     -- Autoren (Mehrfachwerte als Liste)
     if queryResult == nil 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::' .. mw.text.trim(author) .. ']], '
        end
         output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
     end
     end


     -- Debugging: Vollständige Struktur anzeigen
     -- Verlag
     -- return "<pre>" .. mw.dumpObject(queryResult) .. "</pre>"
     if args["Verlag"] then
 
        output = output .. '<tr><td><strong>Verlag</strong></td><td>[[Verlag::' .. args["Verlag"] .. ']]</td></tr>'
    -- 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
end


    -- Band und Serie
    if args["Band"] then
        local seriesID = args["SerienID"]
        local bandText = args["Band"]


function buch.getCompleteVolumesByTitle(page, attribute)
        if seriesID then
    if not mw.smw then
            local seriesQuery = "[[SerienID::" .. seriesID .. "]]"
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
            local seriesPageTitle = helper.getSeriesPageTitle({ args = { seriesQuery } })
    end
            local completeVolumes = "Keine Ergebnisse gefunden."


    if not page or not attribute then
            if seriesPageTitle ~= "Keine Ergebnisse gefunden." then
        return "Seite oder Attribut nicht angegeben. Seite: " .. tostring(page) .. ", Attribut: " .. tostring(attribute)
                completeVolumes = helper.getCompleteVolumesByTitle({ args = { seriesPageTitle, "Complete volumes" } })
    end
            end


    local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
            bandText = bandText .. " von " .. (completeVolumes or "?") .. ' ([[' .. mw.uri.anchorEncode(seriesPageTitle) .. '|' .. (args["Hat Serie"] or "Serie") .. "]])"
    local result = mw.smw.ask(query)
        end


    if not result then
         output = output .. '<tr><td><strong>Band</strong></td><td>' .. bandText .. '</td></tr>'
         return "Keine Ergebnisse gefunden für Seite: " .. page
     end
     end


     for title, data in pairs(result) do
     -- Erscheinungsjahr
        if data[attribute] and type(data[attribute]) == "table" then
    if args["Erscheinungsjahr"] then
            return "Gefundene Gesamtbände: " .. tostring(data[attribute][1])
        output = output .. '<tr><td><strong>Erscheinungsjahr</strong></td><td>[[Erscheinungsjahr::' .. args["Erscheinungsjahr"] .. ']]</td></tr>'
        end
     end
     end


     return "Attribut nicht gefunden. Seite: " .. page .. ", Attribut: " .. attribute
     -- ISBN
if args["ISBN-10"] or args["ISBN-13"] then
    local isbn10 = helper.getIsbnLink({ isbn = args["ISBN-10"], version = "ISBN-10" })
    local isbn13 = helper.getIsbnLink({ isbn = args["ISBN-13"], version = "ISBN-13" })
    output = output .. '<tr><td><strong>ISBN</strong></td><td>' .. isbn10 .. (isbn10 ~= "" and isbn13 ~= "" and " / " or "") .. isbn13 .. '</td></tr>'
end
end


-- Hauptfunktion für die Buchdarstellung
    -- Sprache
function buch.render(args, helper)
    if args["Sprache"] then
    local seriesID = args["Hat Serie"] or ""
        output = output .. '<tr><td><strong>Sprache</strong></td><td>[[Sprache::' .. args["Sprache"] .. ']]</td></tr>'
    local band = args["Band"] or ""
    end
 
    -- Standort
    if args["Standort"] then
        output = output .. '<tr><td><strong>Standort</strong></td><td>[[Standort::' .. args["Standort"] .. ']]</td></tr>'
    end


     -- Serien-Seite holen
     -- Umfang (Seitenanzahl)
    local seriesTitle = buch.getCompleteVolumes(seriesID)
     if args["Umfang"] then
     if seriesTitle:find("Gefundener Seitentitel") then
         output = output .. '<tr><td><strong>Umfang</strong></td><td>[[Umfang::' .. args["Umfang"] .. ']] Seiten</td></tr>'
         seriesTitle = seriesTitle:gsub("Gefundener Seitentitel: ", "")
    else
        return "Fehler beim Abrufen der Serien-Seite."
     end
     end


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


     -- Ausgabe der Bände
     -- Inhaltszusammenfassung
    local bandOutput = "Band " .. band
     if args["Inhaltszusammenfassung"] then
     if completeVolumes and completeVolumes ~= "" then
         output = output .. '<tr><td><strong>Inhaltszusammenfassung</strong></td><td>' .. args["Inhaltszusammenfassung"] .. '</td></tr>'
         bandOutput = bandOutput .. " von " .. completeVolumes
    else
        bandOutput = bandOutput .. " (Keine Gesamtbände gefunden)"
     end
     end


     return bandOutput
    output = output .. '</table>'
     return output
end
end


return buch
return buch

Aktuelle Version vom 23. November 2024, 12:03 Uhr

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

local buch = {}
local helper = require("Modul:Publikation/Helper")

function buch.render(frame)
    -- Argumente aus dem Frame extrahieren
    local args = frame.args
    local output = '<table class="publikation buch table">'

    -- Coverbild
	output = output .. '<tr><td colspan="2" style="text-align: center;">' .. helper.getCoverImage({cover = args["Coverbild"], defaultCover = "Library:Cover:DefaultBuchCover.webp"}) .. '</td></tr>'

    -- Setze den DISPLAYTITLE basierend auf dem Titel des Buches
    if args["Titel"] then
        helper.setDisplayTitle({title = args["Titel"]})
    end

    -- Titel
    output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. (args["Titel"] or "Unbekannt") .. ']]</td></tr>'

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

    -- Verlag
    if args["Verlag"] then
        output = output .. '<tr><td><strong>Verlag</strong></td><td>[[Verlag::' .. args["Verlag"] .. ']]</td></tr>'
    end

    -- Band und Serie
    if args["Band"] then
        local seriesID = args["SerienID"]
        local bandText = args["Band"]

        if seriesID then
            local seriesQuery = "[[SerienID::" .. seriesID .. "]]"
            local seriesPageTitle = helper.getSeriesPageTitle({ args = { seriesQuery } })
            local completeVolumes = "Keine Ergebnisse gefunden."

            if seriesPageTitle ~= "Keine Ergebnisse gefunden." then
                completeVolumes = helper.getCompleteVolumesByTitle({ args = { seriesPageTitle, "Complete volumes" } })
            end

            bandText = bandText .. " von " .. (completeVolumes or "?") .. ' ([[' .. mw.uri.anchorEncode(seriesPageTitle) .. '|' .. (args["Hat Serie"] or "Serie") .. "]])"
        end

        output = output .. '<tr><td><strong>Band</strong></td><td>' .. bandText .. '</td></tr>'
    end

    -- Erscheinungsjahr
    if args["Erscheinungsjahr"] then
        output = output .. '<tr><td><strong>Erscheinungsjahr</strong></td><td>[[Erscheinungsjahr::' .. args["Erscheinungsjahr"] .. ']]</td></tr>'
    end

    -- ISBN
if args["ISBN-10"] or args["ISBN-13"] then
    local isbn10 = helper.getIsbnLink({ isbn = args["ISBN-10"], version = "ISBN-10" })
    local isbn13 = helper.getIsbnLink({ isbn = args["ISBN-13"], version = "ISBN-13" })
    output = output .. '<tr><td><strong>ISBN</strong></td><td>' .. isbn10 .. (isbn10 ~= "" and isbn13 ~= "" and " / " or "") .. isbn13 .. '</td></tr>'
end

    -- Sprache
    if args["Sprache"] then
        output = output .. '<tr><td><strong>Sprache</strong></td><td>[[Sprache::' .. args["Sprache"] .. ']]</td></tr>'
    end

    -- Standort
    if args["Standort"] then
        output = output .. '<tr><td><strong>Standort</strong></td><td>[[Standort::' .. args["Standort"] .. ']]</td></tr>'
    end

    -- Umfang (Seitenanzahl)
    if args["Umfang"] then
        output = output .. '<tr><td><strong>Umfang</strong></td><td>[[Umfang::' .. args["Umfang"] .. ']] Seiten</td></tr>'
    end

    -- Preis
    if args["Preis"] then
        output = output .. '<tr><td><strong>Preis</strong></td><td>[[Preis::' .. args["Preis"] .. ']]</td></tr>'
    end

    -- Inhaltszusammenfassung
    if args["Inhaltszusammenfassung"] then
        output = output .. '<tr><td><strong>Inhaltszusammenfassung</strong></td><td>' .. args["Inhaltszusammenfassung"] .. '</td></tr>'
    end

    output = output .. '</table>'
    return output
end

return buch