Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 60: | Zeile 60: | ||
-- Hauptfunktion für die Buchdarstellung | -- Hauptfunktion für die Buchdarstellung | ||
function buch.render(args | function buch.render(frame, parentModule) | ||
local seriesID = args["Hat Serie"] or | local args = frame:getParent().args | ||
local | local title = args["Titel"] or "Unbekannt" | ||
local author = args["Autor"] or "Unbekannt" | |||
local seriesID = args["Hat Serie"] or nil | |||
local volume = args["Band"] or "Unbekannt" | |||
local bandAusgabe = "" | |||
-- | -- Serienseite abrufen | ||
local | if seriesID then | ||
local seriesPageTitle = buch.getSeriesPageTitle({ args = { "[[SerienID::" .. seriesID .. "]]" } }) | |||
if seriesPageTitle and seriesPageTitle ~= "Keine Ergebnisse gefunden." then | |||
-- Gesamtbände abrufen | |||
local completeVolumes = buch.getCompleteVolumesByTitle(seriesPageTitle, "Complete volumes") | |||
if completeVolumes and completeVolumes ~= "Keine Ergebnisse gefunden." and completeVolumes ~= "Attribut nicht gefunden." then | |||
bandAusgabe = "Band " .. volume .. " von " .. completeVolumes | |||
else | |||
bandAusgabe = "Band " .. volume .. " (Gesamtbände nicht verfügbar)" | |||
end | |||
else | |||
bandAusgabe = "Band " .. volume .. " (Serienseite nicht verfügbar)" | |||
end | |||
else | else | ||
bandAusgabe = "Band " .. volume | |||
end | end | ||
-- | -- Ausgabe der Buchdetails | ||
local | local result = "<div class='book-infobox'>" | ||
result = result .. "<b>Titel:</b> " .. title .. "<br>" | |||
result = result .. "<b>Autor(en):</b> " .. author .. "<br>" | |||
result = result .. "<b>" .. bandAusgabe .. "</b><br>" | |||
result = result .. "</div>" | |||
return | return result | ||
end | end | ||
return buch | return buch |
Version vom 22. November 2024, 00:02 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Publikation/Buch/Doku erstellt werden
local smw = require('Module:SMW')
local getArgs = require('Module:Arguments').getArgs
local buch = {}
-- Funktion zum holen des Seitentitels mithilfe der Serien-ID
function buch.getSeriesPageTitle(frame)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
local queryResult = mw.smw.getQueryResult(frame.args)
-- Kein Ergebnis gefunden
if not queryResult or not queryResult.results or not queryResult.results[1] then
return "Keine Ergebnisse gefunden."
end
-- Seitentitel extrahieren
local results = queryResult.results
if results[1].fulltext then
return results[1].fulltext
else
return "Kein Seitentitel gefunden."
end
end
-- Funktion zur Extraktion der Gesamtbände aus der Serienseite
function buch.getCompleteVolumesByTitle(frame)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
local page = frame.args[1] -- Seitentitel
local attribute = frame.args[2] -- Attributname
-- Überprüfen, ob die erforderlichen Parameter vorhanden sind
if not page or not attribute then
return "Seite oder Attribut nicht angegeben."
end
-- Abfrage erstellen
local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
local result = mw.smw.ask(query)
-- Kein Ergebnis gefunden
if not result then
return "Keine Ergebnisse gefunden."
end
-- Ergebnis verarbeiten
for title, data in pairs(result) do
if data[attribute] then
return tostring(data[attribute])
end
end
return "Attribut nicht gefunden."
end
-- Hauptfunktion für die Buchdarstellung
function buch.render(frame, parentModule)
local args = frame:getParent().args
local title = args["Titel"] or "Unbekannt"
local author = args["Autor"] or "Unbekannt"
local seriesID = args["Hat Serie"] or nil
local volume = args["Band"] or "Unbekannt"
local bandAusgabe = ""
-- Serienseite abrufen
if seriesID then
local seriesPageTitle = buch.getSeriesPageTitle({ args = { "[[SerienID::" .. seriesID .. "]]" } })
if seriesPageTitle and seriesPageTitle ~= "Keine Ergebnisse gefunden." then
-- Gesamtbände abrufen
local completeVolumes = buch.getCompleteVolumesByTitle(seriesPageTitle, "Complete volumes")
if completeVolumes and completeVolumes ~= "Keine Ergebnisse gefunden." and completeVolumes ~= "Attribut nicht gefunden." then
bandAusgabe = "Band " .. volume .. " von " .. completeVolumes
else
bandAusgabe = "Band " .. volume .. " (Gesamtbände nicht verfügbar)"
end
else
bandAusgabe = "Band " .. volume .. " (Serienseite nicht verfügbar)"
end
else
bandAusgabe = "Band " .. volume
end
-- Ausgabe der Buchdetails
local result = "<div class='book-infobox'>"
result = result .. "<b>Titel:</b> " .. title .. "<br>"
result = result .. "<b>Autor(en):</b> " .. author .. "<br>"
result = result .. "<b>" .. bandAusgabe .. "</b><br>"
result = result .. "</div>"
return result
end
return buch