Zuletzt bearbeitet vor einem Tag
von Xineohp1506

Publikation

Das Modul dient zur Darstellung verschiedener Publikationstypen in einer einheitlichen Form. Es verwendet Submodule für spezifische Publikationstypen.

Verwendung

Das Modul wird über die Vorlage `Unbekannter Publikationstyp

` aufgerufen. Der Typ der Publikation wird durch den Parameter `Typ` definiert. Basierend auf diesem Parameter wird das entsprechende Submodul verwendet.

Syntax

{{Publikation
 | Typ = <Publikationstyp>
 | Titel = <Titel der Publikation>
 | Autor = <Autor(en)>
 | Weitere Parameter abhängig vom Publikationstyp...
}}

Unterstützte Publikationstypen

Das Modul unterstützt die folgenden Publikationstypen:

Buch

Das Submodul `Modul:Publikation/Buch` wird verwendet, um Bücher darzustellen.

Parameter:

  • `Titel`: Der Titel des Buches.
  • `Autor`: Autor(en), kommasepariert bei mehreren.
  • `Band`: Bandnummer, falls es Teil einer Serie ist.
  • `SerienID`: Eine eindeutige ID für die Serie.
  • `Verlag`: Der Verlag des Buches.
  • `ISBN-10` / `ISBN-13`: ISBN-Nummern.
  • `Sprache`: Sprache des Buches.
  • `Standort`: Standort im Regal.
  • `Umfang`: Seitenanzahl.
  • `Inhaltszusammenfassung`: Eine kurze Beschreibung des Buchinhalts.

Manga

Das Submodul `Modul:Publikation/Manga` wird für Manga verwendet.

Parameter:

  • `Titel`: Der Titel des Manga.
  • `Mangaka`: Der/die Mangaka (Zeichner).
  • `Band`: Bandnummer.
  • `SerienID`: Eine eindeutige ID für die Serie.
  • `Genre`: Genre(s), kommasepariert.

Artikel

Das Submodul `Modul:Publikation/Artikel` dient zur Darstellung von Artikeln aus anderen Werken.

Parameter:

  • `Titel`: Titel des Artikels.
  • `Autor`: Autor(en) des Artikels.
  • `Publikationswerk`: Name des Werks, in dem der Artikel veröffentlicht wurde.
  • `Seitenzahl`: Seitenanzahl des Artikels.

Zeitschrift

Das Submodul `Modul:Publikation/Zeitschrift` wird für Zeitschrifteneinträge genutzt.

Parameter:

  • `Titel`: Titel der Zeitschrift.
  • `Jahrgang`: Jahrgang der Zeitschrift.
  • `Ausgabe`: Ausgabennummer.
  • `ISSN`: ISSN-Nummer.

Erweiterbarkeit

Falls weitere Publikationstypen hinzugefügt werden sollen, kann dies durch ein neues Submodul erfolgen. Dieses Submodul sollte die Funktion `render(frame)` implementieren.

Beispiele

Buch

{{Publikation
 | Typ = Buch
 | Titel = Das Reich der Vampire: A Tale of Blood and Darkness
 | Autor = Jay Kristoff
 | Band = 1
 | SerienID = 001
}}

Manga

{{Publikation
 | Typ = Manga
 | Titel = One Piece
 | Mangaka = Eiichiro Oda
 | Band = 101
 | SerienID = 002
}}

Entwicklerhinweise

Das Modul verwendet die Submodule:

  • `Modul:Publikation/Buch`
  • `Modul:Publikation/Manga`
  • `Modul:Publikation/Artikel`
  • `Modul:Publikation/Zeitschrift`
  • `Modul:Publikation/Helper` (gemeinsame Hilfsfunktionen)
  • `Modul:Publikation/Related` (Verknüpfte Publikationen)

local p = {}

-- Hilfsfunktion für das Standardbild
function p.getCoverImage(cover, defaultCover)
    return cover and cover ~= "" and '[[File:' .. cover .. '|550px]]' or '[[File:' .. defaultCover .. '|550px]]'
end

-- Hilfsfunktion für ISBN-Links
function p.getIsbnLink(isbn, version)
    local baseUrl = "Special:BookSources/"
    return isbn and isbn ~= "" and '[[' .. baseUrl .. isbn .. '|' .. isbn .. ' (' .. version .. ')]]' or ""
end

-- Funktion zur Anpassung des DISPLAYTITLE
function p.setDisplayTitle(originalTitle)
    local pageTitle = mw.title.getCurrentTitle().text
    if originalTitle and pageTitle ~= originalTitle then
        mw.title.getCurrentTitle().displaytitle = originalTitle
    end
end

-- Hauptfunktion zum Rendern der Publikation, abhängig vom Typ
function p.generatePublication(frame)
    local args = frame.args
    local typ = args["Typ"] or "Buch" -- Standardtyp: Buch

    -- Titelanpassung
    local originalTitle = args["Titel"] or "Unbekannt"
    p.setDisplayTitle(originalTitle)

    -- Wähle das richtige Submodul je nach Publikationstyp
    local result = ""
    if typ == "Buch" then
        local buchModule = require("Modul:Publikation/Buch")
        result = buchModule.render(args, p)
    elseif typ == "Zeitschrift" then
        local zeitschriftModule = require("Modul:Publikation/Zeitschrift")
        result = zeitschriftModule.render(args, p)
    elseif typ == "Artikel" then
        local artikelModule = require("Modul:Publikation/Artikel")
        result = artikelModule.render(args, p)
    elseif typ == "Manga" then
        local mangaModule = require("Modul:Publikation/Manga")
        result = mangaModule.render(args, p)
    else
        result = "Unbekannter Publikationstyp"
    end

    return result
end

return p