Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(18 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
local buch = {} | local buch = {} | ||
-- Funktion | -- Funktion zum holen des Seitentitels mithilfe der Serien-ID | ||
function buch. | function buch.getSeriesPageTitle(frame) | ||
if not mw.smw then | if not mw.smw then | ||
return "Semantic MediaWiki-Erweiterung nicht gefunden." | return "Semantic MediaWiki-Erweiterung nicht gefunden." | ||
end | end | ||
local queryResult = mw.smw.getQueryResult(frame.args) | |||
local queryResult = mw.smw.getQueryResult( | |||
-- Kein Ergebnis | -- Kein Ergebnis gefunden | ||
if not queryResult or not queryResult.results then | if not queryResult or not queryResult.results or not queryResult.results[1] then | ||
return "Keine Ergebnisse gefunden." | return "Keine Ergebnisse gefunden." | ||
end | end | ||
-- | -- Seitentitel extrahieren | ||
local results = queryResult.results | local results = queryResult.results | ||
if | if results[1].fulltext then | ||
return | return results[1].fulltext | ||
else | else | ||
return "Kein Seitentitel gefunden." | return "Kein Seitentitel gefunden." | ||
Zeile 33: | Zeile 26: | ||
end | end | ||
function buch.getCompleteVolumesByTitle( | -- Funktion zur Extraktion der Gesamtbände aus der Serienseite | ||
function buch.getCompleteVolumesByTitle(frame) | |||
if not mw.smw then | if not mw.smw then | ||
return "Semantic MediaWiki-Erweiterung nicht gefunden." | return "Semantic MediaWiki-Erweiterung nicht gefunden." | ||
end | 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 | if not page or not attribute then | ||
return "Seite oder Attribut nicht angegeben." | return "Seite oder Attribut nicht angegeben." | ||
Zeile 46: | Zeile 43: | ||
local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1" | local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1" | ||
local result = mw.smw.ask(query) | local result = mw.smw.ask(query) | ||
-- Kein Ergebnis gefunden | |||
if not result then | if not result then | ||
return "Keine Ergebnisse gefunden." | return "Keine Ergebnisse gefunden." | ||
end | end | ||
-- | -- Ergebnis verarbeiten | ||
for title, data in pairs(result) do | for title, data in pairs(result) do | ||
if data[attribute] | if data[attribute] then | ||
return tostring(data[attribute | return tostring(data[attribute]) | ||
end | end | ||
end | end | ||
Zeile 61: | Zeile 60: | ||
-- Hauptfunktion für die Buchdarstellung | -- Hauptfunktion für die Buchdarstellung | ||
function buch.render( | function buch.render(frame, parentModule) | ||
local | local args = frame.args -- Direkt auf frame.args zugreifen | ||
local | local debugOutput = "" | ||
-- Serien- | -- Debug: Zeige alle empfangenen Argumente | ||
local | debugOutput = debugOutput .. "Empfangene Argumente:\n<pre>" .. mw.dumpObject(args) .. "</pre>\n" | ||
if | |||
-- Serien-ID prüfen | |||
local seriesID = args["SerienID"] | |||
if seriesID then | |||
debugOutput = debugOutput .. "Serien-ID: " .. seriesID .. "\n" | |||
-- Serienseite abrufen | |||
local seriesPageTitle = buch.getSeriesPageTitle({ args = { "[[SerienID::" .. seriesID .. "]]" } }) | |||
debugOutput = debugOutput .. "Gefundene Serienseite: " .. tostring(seriesPageTitle) .. "\n" | |||
-- Gesamtbände abrufen | |||
if seriesPageTitle and seriesPageTitle ~= "Keine Ergebnisse gefunden." then | |||
local completeVolumes = buch.getCompleteVolumesByTitle({ args = { seriesPageTitle, "Complete volumes" } }) | |||
debugOutput = debugOutput .. "Gefundene Gesamtbände: " .. tostring(completeVolumes) .. "\n" | |||
-- Formatiere die Ausgabe | |||
local band = args["Band"] or "Unbekannt" | |||
local seriesTitle = seriesPageTitle:gsub("Library:Serie:", "") -- Entferne den Namensraum | |||
return "Band " .. band .. " von " .. tostring(completeVolumes) .. " ([[" | |||
.. seriesPageTitle .. "|" .. seriesTitle .. "]])" | |||
else | |||
debugOutput = debugOutput .. "Fehler: Serienseite konnte nicht gefunden werden.\n" | |||
end | |||
else | else | ||
debugOutput = debugOutput .. "Fehler: Serien-ID nicht angegeben.\n" | |||
end | end | ||
return | -- Rückgabe der Debug-Ausgabe bei Fehlern | ||
return debugOutput | |||
end | end | ||
return buch | return buch |
Aktuelle Version vom 22. November 2024, 00:45 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.args -- Direkt auf frame.args zugreifen
local debugOutput = ""
-- Debug: Zeige alle empfangenen Argumente
debugOutput = debugOutput .. "Empfangene Argumente:\n<pre>" .. mw.dumpObject(args) .. "</pre>\n"
-- Serien-ID prüfen
local seriesID = args["SerienID"]
if seriesID then
debugOutput = debugOutput .. "Serien-ID: " .. seriesID .. "\n"
-- Serienseite abrufen
local seriesPageTitle = buch.getSeriesPageTitle({ args = { "[[SerienID::" .. seriesID .. "]]" } })
debugOutput = debugOutput .. "Gefundene Serienseite: " .. tostring(seriesPageTitle) .. "\n"
-- Gesamtbände abrufen
if seriesPageTitle and seriesPageTitle ~= "Keine Ergebnisse gefunden." then
local completeVolumes = buch.getCompleteVolumesByTitle({ args = { seriesPageTitle, "Complete volumes" } })
debugOutput = debugOutput .. "Gefundene Gesamtbände: " .. tostring(completeVolumes) .. "\n"
-- Formatiere die Ausgabe
local band = args["Band"] or "Unbekannt"
local seriesTitle = seriesPageTitle:gsub("Library:Serie:", "") -- Entferne den Namensraum
return "Band " .. band .. " von " .. tostring(completeVolumes) .. " ([["
.. seriesPageTitle .. "|" .. seriesTitle .. "]])"
else
debugOutput = debugOutput .. "Fehler: Serienseite konnte nicht gefunden werden.\n"
end
else
debugOutput = debugOutput .. "Fehler: Serien-ID nicht angegeben.\n"
end
-- Rückgabe der Debug-Ausgabe bei Fehlern
return debugOutput
end
return buch