Zuletzt bearbeitet vor 2 Minuten
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(73 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local buch = {}
local buch = {}
local helper = require("Modul:Publikation/Helper")


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


     -- Coverbild
     -- Coverbild
    local defaultCover = args["Typ"] == "Buch" and "Library:Cover:DefaultBook.webp" or "Library:Cover:DefaultSeries.webp"
output = output .. '<tr><td colspan="2" style="text-align: center;">' .. helper.getCoverImage({cover = args["Coverbild"], defaultCover = "Library:Cover:DefaultBuchCover.webp"}) .. '</td></tr>'
    output = output .. '<tr><td colspan="2" style="text-align: center;">' .. main.getCoverImage(args["Coverbild"], defaultCover) .. '</td></tr>'
 
    -- DisplayTitle setzen
    helper.setDisplayTitle({ args = { title = args["Titel"] } })
    --helper.setDisplayTitle({ title = args["Titel"]  })


     -- Titel
     -- Titel
Zeile 15: Zeile 21:
         output = output .. '<tr><td><strong>Autor(en)</strong></td><td>'
         output = output .. '<tr><td><strong>Autor(en)</strong></td><td>'
         for author in mw.text.gsplit(args["Autor"], ",") do
         for author in mw.text.gsplit(args["Autor"], ",") do
             output = output .. '[[Hat Autor::' .. author .. ']], '
             output = output .. '[[Hat Autor::' .. mw.text.trim(author) .. ']], '
         end
         end
         output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
         output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
Zeile 21: Zeile 27:


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


     -- Band und Serie
     -- Band und Serie
     if args["Band"] then
     if args["Band"] then
         local bandText = 'Band ' .. args["Band"]
         local seriesID = args["SerienID"]
         if args["Hat Serie"] then
         local bandText = args["Band"]
            local seriesPage = 'Library:Serie:' .. args["Hat Serie"]:gsub(" ", "_")
            local totalVolumes = buch.getTotalVolumes(seriesPage)
            local serienLink = '[[' .. seriesPage .. '|' .. args["Hat Serie"] .. ']]'


            if totalVolumes then
        if seriesID then
                bandText = bandText .. ' von ' .. totalVolumes .. ' (' .. serienLink .. ')'
            local seriesQuery = "[[SerienID::" .. seriesID .. "]]"
             else
            local seriesPageTitle = helper.getSeriesPageTitle({ args = { seriesQuery } })
                 bandText = bandText .. ' (' .. serienLink .. ')'
            local completeVolumes = "Keine Ergebnisse gefunden."
 
             if seriesPageTitle ~= "Keine Ergebnisse gefunden." then
                 completeVolumes = helper.getCompleteVolumesByTitle({ args = { seriesPageTitle, "Complete volumes" } })
             end
             end


             -- Semantische Verbindung setzen
             bandText = bandText .. " von " .. (completeVolumes or "?") .. ' ([[' .. mw.uri.anchorEncode(seriesPageTitle) .. '|' .. (args["Hat Serie"] or "Serie") .. "]])"
            output = output .. '<tr><td><strong>Band</strong></td><td>[[Hat Serie::' .. args["Hat Serie"] .. ']] ' .. bandText .. '</td></tr>'
        else
            output = output .. '<tr><td><strong>Band</strong></td><td>' .. bandText .. '</td></tr>'
         end
         end
    elseif args["Hat Serie"] then
 
        local seriesPage = 'Library:Serie:' .. args["Hat Serie"]:gsub(" ", "_")
         output = output .. '<tr><td><strong>Band</strong></td><td>' .. bandText .. '</td></tr>'
        local serienLink = '[[' .. seriesPage .. '|' .. args["Hat Serie"] .. ']]'
         output = output .. '<tr><td><strong>Serie</strong></td><td>[[Hat Serie::' .. args["Hat Serie"] .. ']] ' .. serienLink .. '</td></tr>'
     end
     end


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


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


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


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


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


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


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


     output = output .. '</table>'
     output = output .. '</table>'
     return output
     return output
end
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]
        if data and data.properties and data.properties["Gesamtbände"] then
            return data.properties["Gesamtbände"][1]
        end
    end
    return nil
end


return buch
return buch

Aktuelle Version vom 23. November 2024, 11:59 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>'

    -- DisplayTitle setzen
    helper.setDisplayTitle({ args = { title = args["Titel"] } })
    --helper.setDisplayTitle({ title = args["Titel"]  })

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