Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 6: | Zeile 6: | ||
function zeitschrift.render(frame) | function zeitschrift.render(frame) | ||
local args = frame.args | local args = frame.args | ||
local output = "" -- Initialisierung von output | |||
-- Setze den DISPLAYTITLE basierend auf dem Titel des Buches | |||
if args["Titel"] then | |||
helper.setDisplayTitle({title = args["Titel"]}) | |||
end | |||
-- Setze die Inhaltszusammenfassung als semantischen Wert | |||
if args["Inhaltszusammenfassung"] and args["Inhaltszusammenfassung"] ~= "" then | |||
local rawSummary = mw.text.unstripNoWiki(args["Inhaltszusammenfassung"]):gsub("<.->", ""):gsub("%[%[.-%]%]", ""):gsub("%{.-%}", "") -- Entferne HTML-Tags und MediaWiki-Markierungen, bewahre geschützte Bereiche wie <nowiki> | |||
local truncatedSummary = mw.ustring.sub(rawSummary, 1, 250) -- Begrenze auf 250 Zeichen | |||
helper.setProperty({ args = { ["Inhaltszusammenfassung"] = truncatedSummary } }) -- Setze den semantischen Wert | |||
mw.ext.seo.set{description = truncatedSummary} -- Setze die Beschreibung | |||
end | |||
-- OpenGraph-Bild für SEO | |||
local coverImage = args["Coverbild"] or "DefaultBuchCover.webp" | |||
mw.ext.seo.set{["og:image"] = mw.uri.fullUrl("File:Library:" .. coverImage)} | |||
-- Coverbild semantisch setzen | |||
if args["Coverbild"] and args["Coverbild"] ~= "" then | |||
helper.setProperty({ args = { ["Hat Cover"] = args["Coverbild"] } }) | |||
end | |||
local output = '<table class="publikation zeitschrift">' | local output = '<table class="publikation zeitschrift">' | ||
-- Coverbild | -- Coverbild | ||
output = output .. '<tr><td colspan="2" style="text-align: center;">' .. | output = output .. '<tr><td colspan="2" style="text-align: center;">' .. | ||
helper.getCoverImage({cover = args["Coverbild"], defaultCover = "Library | helper.getCoverImage({cover = args["Coverbild"], defaultCover = "Library:DefaultZeitschriftCover.webp"}) .. | ||
'</td></tr>' | '</td></tr>' | ||
Zeile 35: | Zeile 59: | ||
helper.setProperty({ args = { ["Hat Stichwort"] = keyword } }) -- Semantischen Wert setzen | helper.setProperty({ args = { ["Hat Stichwort"] = keyword } }) -- Semantischen Wert setzen | ||
output = output .. keyword .. ', ' | output = output .. keyword .. ', ' | ||
end | end | ||
output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma | output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma | ||
Zeile 52: | Zeile 64: | ||
-- Verlag | -- Verlag | ||
output = output .. (args["Verlag"] and '<tr><td><strong>Verlag</strong></td><td>[[ | output = output .. (args["Verlag"] and '<tr><td><strong>Verlag</strong></td><td>[[Verlag::' .. args["Verlag"] .. ']]</td></tr>' or "") | ||
-- ISSN | -- ISSN | ||
Zeile 58: | Zeile 70: | ||
-- Erscheinungsjahr | -- Erscheinungsjahr | ||
output = output .. (args["Erscheinungsjahr"] and '<tr><td><strong>Erscheinungsjahr</strong></td><td>[[ | output = output .. (args["Erscheinungsjahr"] and '<tr><td><strong>Erscheinungsjahr</strong></td><td>[[Erscheinungsjahr::' .. args["Erscheinungsjahr"] .. ']]</td></tr>' or "") | ||
-- Jahrgang | -- Jahrgang | ||
output = output .. (args["Jahrgang"] and '<tr><td><strong>Jahrgang</strong></td><td>[[ | output = output .. (args["Jahrgang"] and '<tr><td><strong>Jahrgang</strong></td><td>[[Jahrgang::' .. args["Jahrgang"] .. ']]</td></tr>' or "") | ||
-- Ausgabe | -- Ausgabe | ||
output = output .. (args["Ausgabe"] and '<tr><td><strong>Ausgabe</strong></td><td>[[ | output = output .. (args["Ausgabe"] and '<tr><td><strong>Ausgabe</strong></td><td>[[Ausgabe::' .. args["Ausgabe"] .. ']]</td></tr>' or "") | ||
-- Standort | -- Standort | ||
output = output .. (args["Standort"] and '<tr><td><strong>Standort</strong></td><td>[[ | output = output .. (args["Standort"] and '<tr><td><strong>Standort</strong></td><td>[[Standort::' .. args["Standort"] .. ']]</td></tr>' or "") | ||
-- Datensatz ID | |||
output = output .. (args["Datensatz ID"] and '<tr><td><strong>Datensatz ID</strong></td><td>' .. args["Datensatz ID"] .. '</td></tr>' or "") | |||
-- Wichtige Artikel | |||
if args["Wichtige Artikel"] then | |||
output = output .. '<tr><td><strong>Wichtige Artikel</strong></td><td>' | |||
for article in mw.text.gsplit(args["Wichtige Artikel"], ",") do | |||
article = mw.text.trim(article) | |||
local articlePage = "Library:Artikel:" .. article:gsub(" ", "_") | |||
helper.setProperty({ args = { ["Hat wichtigen Artikel"] = article } }) -- Semantischen Wert setzen | |||
output = output .. '[[' .. articlePage .. '|' .. article .. ']], ' | |||
end | |||
output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma | |||
end | |||
-- Inhaltszusammenfassung | -- Inhaltszusammenfassung | ||
output = output .. (args["Inhaltszusammenfassung"] and '<tr><td><strong>Inhaltszusammenfassung</strong></td><td>' .. args["Inhaltszusammenfassung"] .. '</td></tr>' or "") | output = output .. (args["Inhaltszusammenfassung"] and '<tr><td><strong>Inhaltszusammenfassung</strong></td><td>' .. args["Inhaltszusammenfassung"] .. '</td></tr>' or "") | ||
output = output .. '</table>' | output = output .. '</table>' | ||
-- Kategorien | -- Kategorien setzen | ||
local categories = {} -- Korrekte Initialisierung der Tabelle | |||
args[" | |||
args[" | -- Kategorien basierend auf Argumenten hinzufügen | ||
args[" | if args["Genre"] then | ||
}) | for genre in mw.text.gsplit(args["Genre"], ",") do | ||
table.insert(categories, mw.text.trim(genre)) | |||
end | |||
end | |||
if args["Standort"] then | |||
table.insert(categories, "Standort:" .. args["Standort"]) | |||
end | |||
if args["Autor"] and args["Autor"] ~= "" then | |||
for autor in mw.text.gsplit(args["Autor"], ",") do | |||
table.insert(categories, "Autor:" .. mw.text.trim(autor)) | |||
end | |||
end | |||
if args["Verlag"] and args["Verlag"] ~= "" then | |||
table.insert(categories, args["Verlag"]) | |||
end | |||
-- Hinzufügen allgemeiner Kategorien | |||
table.insert(categories, "Zeitschriften") | |||
table.insert(categories, "Alle Publikationen") | |||
output = output .. helper.addCategories({categories = categories, sortkey = args["Titel"]}) | |||
return output | return output | ||
end | end | ||
return zeitschrift | return zeitschrift |
Version vom 26. November 2024, 21:46 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Publikation/Zeitschrift/Doku erstellt werden
local getArgs = require('Module:Arguments').getArgs
local helper = require("Modul:Publikation/Helper")
local related = require("Modul:Publikation/Related")
local zeitschrift = {}
function zeitschrift.render(frame)
local args = frame.args
local output = "" -- Initialisierung von output
-- Setze den DISPLAYTITLE basierend auf dem Titel des Buches
if args["Titel"] then
helper.setDisplayTitle({title = args["Titel"]})
end
-- Setze die Inhaltszusammenfassung als semantischen Wert
if args["Inhaltszusammenfassung"] and args["Inhaltszusammenfassung"] ~= "" then
local rawSummary = mw.text.unstripNoWiki(args["Inhaltszusammenfassung"]):gsub("<.->", ""):gsub("%[%[.-%]%]", ""):gsub("%{.-%}", "") -- Entferne HTML-Tags und MediaWiki-Markierungen, bewahre geschützte Bereiche wie <nowiki>
local truncatedSummary = mw.ustring.sub(rawSummary, 1, 250) -- Begrenze auf 250 Zeichen
helper.setProperty({ args = { ["Inhaltszusammenfassung"] = truncatedSummary } }) -- Setze den semantischen Wert
mw.ext.seo.set{description = truncatedSummary} -- Setze die Beschreibung
end
-- OpenGraph-Bild für SEO
local coverImage = args["Coverbild"] or "DefaultBuchCover.webp"
mw.ext.seo.set{["og:image"] = mw.uri.fullUrl("File:Library:" .. coverImage)}
-- Coverbild semantisch setzen
if args["Coverbild"] and args["Coverbild"] ~= "" then
helper.setProperty({ args = { ["Hat Cover"] = args["Coverbild"] } })
end
local output = '<table class="publikation zeitschrift">'
-- Coverbild
output = output .. '<tr><td colspan="2" style="text-align: center;">' ..
helper.getCoverImage({cover = args["Coverbild"], defaultCover = "Library:DefaultZeitschriftCover.webp"}) ..
'</td></tr>'
-- Titel
output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. (args["Titel"] or "Unbekannt") .. ']]</td></tr>'
-- Autoren
if args["Autor"] then
output = output .. '<tr><td><strong>Autor(en)</strong></td><td>'
for author in mw.text.gsplit(args["Autor"], ",") do
author = mw.text.trim(author)
local authorPage = "Library:Autor:" .. author:gsub(" ", "_")
helper.setProperty({ args = { ["Hat Autor"] = author } }) -- Semantischen Wert setzen
output = output .. '[[' .. authorPage .. '|' .. author .. ']], '
end
output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
end
-- Stichworte
if args["Stichworte"] then
output = output .. '<tr><td><strong>Stichworte</strong></td><td>'
for keyword in mw.text.gsplit(args["Stichworte"], ",") do
keyword = mw.text.trim(keyword)
helper.setProperty({ args = { ["Hat Stichwort"] = keyword } }) -- Semantischen Wert setzen
output = output .. keyword .. ', '
end
output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
end
-- Verlag
output = output .. (args["Verlag"] and '<tr><td><strong>Verlag</strong></td><td>[[Verlag::' .. args["Verlag"] .. ']]</td></tr>' or "")
-- ISSN
output = output .. (args["ISSN"] and '<tr><td><strong>ISSN</strong></td><td>[[ISSN::' .. args["ISSN"] .. ']]</td></tr>' or "")
-- Erscheinungsjahr
output = output .. (args["Erscheinungsjahr"] and '<tr><td><strong>Erscheinungsjahr</strong></td><td>[[Erscheinungsjahr::' .. args["Erscheinungsjahr"] .. ']]</td></tr>' or "")
-- Jahrgang
output = output .. (args["Jahrgang"] and '<tr><td><strong>Jahrgang</strong></td><td>[[Jahrgang::' .. args["Jahrgang"] .. ']]</td></tr>' or "")
-- Ausgabe
output = output .. (args["Ausgabe"] and '<tr><td><strong>Ausgabe</strong></td><td>[[Ausgabe::' .. args["Ausgabe"] .. ']]</td></tr>' or "")
-- Standort
output = output .. (args["Standort"] and '<tr><td><strong>Standort</strong></td><td>[[Standort::' .. args["Standort"] .. ']]</td></tr>' or "")
-- Datensatz ID
output = output .. (args["Datensatz ID"] and '<tr><td><strong>Datensatz ID</strong></td><td>' .. args["Datensatz ID"] .. '</td></tr>' or "")
-- Wichtige Artikel
if args["Wichtige Artikel"] then
output = output .. '<tr><td><strong>Wichtige Artikel</strong></td><td>'
for article in mw.text.gsplit(args["Wichtige Artikel"], ",") do
article = mw.text.trim(article)
local articlePage = "Library:Artikel:" .. article:gsub(" ", "_")
helper.setProperty({ args = { ["Hat wichtigen Artikel"] = article } }) -- Semantischen Wert setzen
output = output .. '[[' .. articlePage .. '|' .. article .. ']], '
end
output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
end
-- Inhaltszusammenfassung
output = output .. (args["Inhaltszusammenfassung"] and '<tr><td><strong>Inhaltszusammenfassung</strong></td><td>' .. args["Inhaltszusammenfassung"] .. '</td></tr>' or "")
output = output .. '</table>'
-- Kategorien setzen
local categories = {} -- Korrekte Initialisierung der Tabelle
-- Kategorien basierend auf Argumenten hinzufügen
if args["Genre"] then
for genre in mw.text.gsplit(args["Genre"], ",") do
table.insert(categories, mw.text.trim(genre))
end
end
if args["Standort"] then
table.insert(categories, "Standort:" .. args["Standort"])
end
if args["Autor"] and args["Autor"] ~= "" then
for autor in mw.text.gsplit(args["Autor"], ",") do
table.insert(categories, "Autor:" .. mw.text.trim(autor))
end
end
if args["Verlag"] and args["Verlag"] ~= "" then
table.insert(categories, args["Verlag"])
end
-- Hinzufügen allgemeiner Kategorien
table.insert(categories, "Zeitschriften")
table.insert(categories, "Alle Publikationen")
output = output .. helper.addCategories({categories = categories, sortkey = args["Titel"]})
return output
end
return zeitschrift