Die Dokumentation für dieses Modul kann unter Modul:Publikation/Mangaka/Doku erstellt werden
local mangaka = {}
local helper = require("Modul:Publikation/Helper")
local related = require("Modul:Publikation/Related")
local getArgs = require("Module:Arguments").getArgs
function mangaka.render(frame)
local args = getArgs(frame)
local output = '<div class="mangaka-page">'
-- Mangaka-Name und DISPLAYTITLE setzen
local name = args["Name"] or mw.title.getCurrentTitle().text or "Unbekannter Mangaka"
helper.setProperty({ args = { ["Hat Titel"] = name } })
helper.setDisplayTitle({title = name})
-- Porträt und OpenGraph-Meta-Tags setzen
local portrait = args["Porträt"] or "Library:Default_Mangaka_Portrait.webp"
mw.ext.seo.set({
["og:image"] = "File:" .. portrait,
["og:image:alt"] = "Porträt von " .. name,
})
-- Infobox erstellen
output = output .. '<div class="infobox">'
output = output .. '<div class="infobox-image">[[File:' .. portrait .. '|250px|alt=Porträt von ' .. name .. ']]</div>'
output = output .. '<div class="infobox-title">' .. name .. '</div>'
output = output .. '<table class="infobox-table">'
if args["Geburtsdatum"] then
helper.setProperty({ args = { ["Geburtsdatum"] = args["Geburtsdatum"] } })
output = output .. '<tr><th>Geboren</th><td>' .. args["Geburtsdatum"] .. '</td></tr>'
end
if 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"] 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"] then
helper.setProperty({ args = { ["Sprachen"] = args["Sprachen"] } })
output = output .. '<tr><th>Sprache(n)</th><td>' .. args["Sprachen"] .. '</td></tr>'
end
if 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"] then
output = output .. '<tr><th>Bekannte Werke</th><td>' .. args["Bekannte Werke"] .. '</td></tr>'
end
if args["Genres"] then
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></div>' -- Ende der Infobox
-- Biografie
if args["Biografie"] then
output = output .. '<div class="mangaka-biografie">' .. args["Biografie"] .. '</div>'
end
-- Werke des Mangaka
output = output .. '<h2>Werke</h2>'
local worksQuery = '[[Mangaka::' .. name .. ']]|?Hat Titel|?Erscheinungsjahr|?Typ|?Keyword|sort=Erscheinungsjahr|order=desc'
output = output .. related.generateTable({
query = worksQuery,
limit = 50,
})
-- Ähnliche Mangaka
if args["Genres"] then
output = output .. '<h2>Ähnliche Mangaka</h2>'
local similarMangaka = related.similarAutor({
Genres = args["Genres"],
limit = 5,
})
output = output .. similarMangaka
end
output = output .. '</div>' -- Ende der mangaka-page
-- Kategorien setzen
local categories = {}
if args["Genres"] then
for genre in mw.text.gsplit(args["Genres"], ",") do
table.insert(categories, mw.text.trim(genre))
end
end
table.insert(categories, "Mangaka")
output = output .. helper.addCategories({categories = categories, sortkey = args["Titel"]})
return output
end
return mangaka