Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Modul:Publikation/Autor: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 82: Zeile 82:
     })
     })
      
      
     -- Ähnliche Autoren
     -- Ähnliche Autoren/Mangaka
     if args["Genres"] and args["Genres"] ~= "" then
     if args["Genres"] and args["Genres"] ~= "" then
         output = output .. '<h2>Ähnliche Autoren</h2>'
         output = output .. '<h2>Ähnliche Autoren</h2>'
Zeile 108: Zeile 108:
      
      
     -- Kategorien hinzufügen
     -- Kategorien hinzufügen
     output = output .. helper.addCategories({categories = categories, sortkey = args["Titel"]})
     output = output .. helper.addCategories({categories = categories, sortkey = args["Name"]})
     output = output .. helper.addCategories({categories = "Autor:" .. args["Name"], sortkey = " "})
     output = output .. helper.addCategories({categories = "Autor:" .. args["Name"], sortkey = "!"})
     return output
     return output
end
end


return autor
return autor

Aktuelle Version vom 30. November 2024, 12:26 Uhr

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/Mangaka
    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
    
    -- Hinzufügen allgemeiner Kategorien
    table.insert(categories, "Autor")
    
    -- Kategorien hinzufügen
    output = output .. helper.addCategories({categories = categories, sortkey = args["Name"]})
    output = output .. helper.addCategories({categories = "Autor:" .. args["Name"], sortkey = "!"})
    return output
end

return autor