Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Autor

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

local autor = {}
local helper = require("Modul:Publikation/Helper")
local related = require("Modul:Publikation/Related")
local getArgs = require("Module:Arguments").getArgs

function autor.render(frame)
    local args = getArgs(frame)
    local output = '<div class="autor-page">'

    -- Autorenname und DISPLAYTITLE setzen
    local name = args["Name"] or "Unbekannter Autor"
    helper.setProperty({ args = { ["Hat Titel"] = name } }) -- Semantischen Wert setzen
    helper.setDisplayTitle({title = name})

    -- Porträt
    if args["Porträt"] and args["Porträt"] ~= "" then
        output = output .. '<div class="autor-portrait">[[File:' .. args["Porträt"] .. '|300px|center]]</div>'
        mw.ext.seo.set({
            ["og:image"] = "File:" .. args["Porträt"],
            ["og:image:alt"] = "Porträt von " .. name,
        })
    end

    -- Basisinformationen
    output = output .. '<table class="autor-infobox">'
    output = output .. (args["Geburtsdatum"] and '<tr><td><strong>Geboren:</strong></td><td>' .. args["Geburtsdatum"] .. '</td></tr>' or "")
    output = output .. (args["Sterbedatum"] and '<tr><td><strong>Verstorben:</strong></td><td>' .. args["Sterbedatum"] .. '</td></tr>' or "")
    output = output .. (args["Nationalität"] and '<tr><td><strong>Nationalität:</strong></td><td>' .. args["Nationalität"] .. '</td></tr>' or "")
    output = output .. (args["Sprachen"] and '<tr><td><strong>Sprachen:</strong></td><td>' .. args["Sprachen"] .. '</td></tr>' or "")
    output = output .. '</table>'

    -- Kurzbiografie
    if args["Biografie"] then
        output = output .. '<div class="autor-biografie"><h2>Biografie</h2><p>' .. args["Biografie"] .. '</p></div>'
    end

    -- Werke des Autors
    output = output .. '<h2>Werke</h2>'
    local worksQuery = "[[Hat Autor::" .. name .. "]]|?Hat Titel|?Erscheinungsjahr|?Typ|?Genre"
    output = output .. related.generateTable({
        query = worksQuery,
        limit = 50,
    })

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

return autor