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 mw.title.getCurrentTitle().text or "Unbekannter Autor"
helper.setProperty({ args = { ["Hat Titel"] = name } }) -- Semantischen Wert setzen
helper.setDisplayTitle({title = name})
-- Porträt und OpenGraph-Meta-Tags setzen
-- Porträt: Setze Standardbild, falls kein Porträt vorhanden
local portrait = args["Porträt"] or "Library:Default_Author_Portrait.webp"
mw.ext.seo.set({
["og:image"] = "File:" .. portrait,
["og:image:alt"] = "Porträt von " .. name,
})
-- Infobox erstellen
output = output .. '<div class="infobox">'
-- Porträt in der Infobox
output = output .. '<div class="infobox-image">[[File:' .. portrait .. '|250px|alt=Porträt von ' .. name .. ']]</div>'
-- Name als Überschrift in der Infobox
output = output .. '<div class="infobox-title">' .. name .. '</div>'
-- Tabelleninhalt der Infobox
output = output .. '<table class="infobox-table">'
if args["Geburtsdatum"] and args["Geburtsdatum"] ~= "" then
helper.setProperty({ args = { ["Geburtsdatum"] = args["Geburtsdatum"] } })
output = output .. '<tr><th>Geboren</th><td>' .. args["Geburtsdatum"] .. '</td></tr>'
end
if args["Sterbedatum"] and args["Sterbedatum"] ~= "" then
helper.setProperty({ args = { ["Sterbedatum"] = args["Sterbedatum"] } })
output = output .. '<tr><th>Gestorben</th><td>' .. args["Sterbedatum"] .. '</td></tr>'
end
if args["Nationalität"] and args["Nationalität"] ~= "" then
helper.setProperty({ args = { ["Nationalität"] = args["Nationalität"] } })
output = output .. '<tr><th>Nationalität</th><td>' .. args["Nationalität"] .. '</td></tr>'
end
if args["Sprachen"] and args["Sprachen"] ~= "" then
helper.setProperty({ args = { ["Sprachen"] = args["Sprachen"] } })
output = output .. '<tr><th>Sprache(n)</th><td>' .. args["Sprachen"] .. '</td></tr>'
end
if args["Berufe"] and args["Berufe"] ~= "" then
helper.setProperty({ args = { ["Berufe"] = args["Berufe"] } })
output = output .. '<tr><th>Beruf(e)</th><td>' .. args["Berufe"] .. '</td></tr>'
end
if args["Bekannte Werke"] and args["Bekannte Werke"] ~= "" then
output = output .. '<tr><th>Bekannte Werke</th><td>' .. args["Bekannte Werke"] .. '</td></tr>'
end
if args["Genres"] and args["Genres"] ~= "" then
-- Genres verarbeiten und semantisch setzen
local genresList = {}
for genre in mw.text.gsplit(args["Genres"], ",") do
genre = mw.text.trim(genre)
helper.setProperty({ args = { ["Genre"] = genre } })
table.insert(genresList, genre)
end
output = output .. '<tr><th>Genre(s)</th><td>' .. table.concat(genresList, ", ") .. '</td></tr>'
end
output = output .. '</table>' -- Ende der Infobox-Tabelle
output = output .. '</div>' -- Ende der Infobox
-- Biografie unter der Infobox
if args["Biografie"] and args["Biografie"] ~= "" then
output = output .. '<div class="autor-biografie">' .. args["Biografie"] .. '</div>'
end
-- Werke des Autors
output = output .. '<h2>Werke</h2>'
local worksQuery = '[[Hat Autor::' .. name .. ']]|?Hat Titel|?Erscheinungsjahr|?Typ|?Keyword|sort=Erscheinungsjahr|order=desc'
output = output .. related.generateTable({
query = worksQuery,
limit = 50,
})
-- Ähnliche Autoren
if args["Genres"] and args["Genres"] ~= "" then
output = output .. '<h2>Ähnliche Autoren</h2>'
local similarAutor = related.similarAutor({
Genres = args["Genres"],
limit = 5,
})
output = output .. similarAutor
end
output = output .. '</div>' -- Ende der autor-page
local categories = {} -- Korrekte Initialisierung der Tabelle
-- Kategorien basierend auf Argumenten hinzufügen
if args["Genres"] then
for genre in mw.text.gsplit(args["Genres"], ",") do
table.insert(categories, mw.text.trim(genre))
end
end
if args["Name"] and args["Name"] ~= "" then
table.insert(categories, "Autor:" .. args["Name"])
end
-- Kategorien hinzufügen
output = output .. helper.addCategories({categories = categories, sortkey = args["Titel"]})
return output
end
return autor