Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Mangaka

Version vom 30. November 2024, 03:10 Uhr von Xineohp1506 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „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 = { ["H…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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