Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(35 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
-- Funktion | -- Funktion zum holen des Seitentitels mithilfe der Serien-ID | ||
function helper.getSeriesPageTitle( | function helper.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 args = type(frame) == "table" and (frame.args or getArgs(frame)) or { frame } | |||
local query = "[[SerienID::" .. seriesID .. "]] | -- Hole die Serien-ID aus den Argumenten | ||
local | local seriesID = args["SerienID"] or args[1] -- Entweder als benanntes oder als erstes Argument | ||
if not seriesID or seriesID == "" then | |||
return "Keine Serien-ID angegeben." | |||
end | |||
-- Baue die Query im erwarteten Format | |||
local query = "[[SerienID::" .. seriesID .. "]]" | |||
-- Führe die Abfrage aus | |||
local queryResult = mw.smw.getQueryResult({query}) | |||
-- Kein Ergebnis gefunden | |||
if not queryResult or not queryResult.results or not queryResult.results[1] then | |||
return "Keine Ergebnisse gefunden." | |||
end | |||
if | -- Seitentitel extrahieren | ||
return " | local results = queryResult.results | ||
if results[1].fulltext then | |||
return results[1].fulltext | |||
else | |||
return "Kein Seitentitel gefunden." | |||
end | end | ||
end | end | ||
-- Funktion zur Extraktion der Gesamtbände | -- Funktion zur Extraktion der Gesamtbände aus der Serienseite | ||
function helper.getCompleteVolumesByTitle( | function helper.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 query = "[[" .. | 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) | 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[" | if data[attribute] then | ||
return | return tostring(data[attribute]) | ||
end | |||
end | |||
return "Attribut nicht gefunden." | |||
end | |||
-- Hilfsfunktion für das Standardbild | |||
function helper.getCoverImage(frame) | |||
local args = getArgs(frame) | |||
local cover = args["cover"] | |||
local defaultCover = args["defaultCover"] or "DefaultBuchCover.webp" | |||
return cover and cover ~= "" and '[[File:Library:' .. cover .. '|550px]]' or '[[File:Library:' .. defaultCover .. '|550px]]' | |||
end | |||
-- Hilfsfunktion für ISBN-Links | |||
function helper.getIsbnLink(frame) | |||
local args = getArgs(frame) | |||
local isbn = args["isbn"] | |||
local version = args["version"] or "" | |||
local baseUrl = "Special:BookSources/" | |||
return isbn and isbn ~= "" and '[[' .. baseUrl .. isbn .. '|' .. isbn .. ' (' .. version .. ')]]' or "" | |||
end | |||
-- Funktion zur Anpassung des DISPLAYTITLE über mw.ext.displaytitle | |||
function helper.setDisplayTitle(frame) | |||
local args = getArgs(frame) | |||
local title = args["title"] | |||
if title and title ~= "" then | |||
local success, err = pcall(function() | |||
mw.ext.displaytitle.set(title) | |||
end) | |||
if not success then | |||
mw.log("Fehler beim Setzen des DISPLAYTITLE: " .. tostring(err)) | |||
end | |||
end | |||
end | |||
-- set with return results | |||
function helper.setProperty( frame ) | |||
if not mw.smw then | |||
return "mw.smw module not found" | |||
end | |||
local result = mw.smw.set( frame.args ) | |||
if result == true then | |||
return | |||
else | |||
return 'An error occurred during the storage process. Message reads ' .. result.error | |||
end | |||
end | |||
-- Funktion zur Hinzufügung von Kategorien mit Sortkey | |||
function helper.addCategories(frame) | |||
-- Argumente aus dem Frame extrahieren | |||
local args = getArgs(frame) | |||
-- Kategorienliste und Sortkey abrufen | |||
local categories = args["categories"] or {} | |||
local sortkey = args["sortkey"] or mw.title.getCurrentTitle().text -- Standard: Seitentitel als Sortkey | |||
-- Validierung der Kategorienliste | |||
if type(categories) == "string" then | |||
categories = mw.text.split(categories, ",") -- Kategorien können als kommaseparierte Liste übergeben werden | |||
end | |||
if type(categories) ~= "table" then | |||
return "Ungültige Kategorienliste." | |||
end | |||
-- Kategorienausgabe generieren | |||
local output = "" | |||
for _, category in ipairs(categories) do | |||
if category and category ~= "" then | |||
output = output .. "[[Kategorie:" .. category .. "|" .. sortkey .. "]]\n" | |||
end | end | ||
end | end | ||
return | return output | ||
end | end | ||
return helper | return helper |
Aktuelle Version vom 25. November 2024, 18:12 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Publikation/Helper/Doku erstellt werden
local helper = {}
local getArgs = require('Module:Arguments').getArgs
-- Funktion zum holen des Seitentitels mithilfe der Serien-ID
function helper.getSeriesPageTitle(frame)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
local args = type(frame) == "table" and (frame.args or getArgs(frame)) or { frame }
-- Hole die Serien-ID aus den Argumenten
local seriesID = args["SerienID"] or args[1] -- Entweder als benanntes oder als erstes Argument
if not seriesID or seriesID == "" then
return "Keine Serien-ID angegeben."
end
-- Baue die Query im erwarteten Format
local query = "[[SerienID::" .. seriesID .. "]]"
-- Führe die Abfrage aus
local queryResult = mw.smw.getQueryResult({query})
-- 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 helper.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
-- Hilfsfunktion für das Standardbild
function helper.getCoverImage(frame)
local args = getArgs(frame)
local cover = args["cover"]
local defaultCover = args["defaultCover"] or "DefaultBuchCover.webp"
return cover and cover ~= "" and '[[File:Library:' .. cover .. '|550px]]' or '[[File:Library:' .. defaultCover .. '|550px]]'
end
-- Hilfsfunktion für ISBN-Links
function helper.getIsbnLink(frame)
local args = getArgs(frame)
local isbn = args["isbn"]
local version = args["version"] or ""
local baseUrl = "Special:BookSources/"
return isbn and isbn ~= "" and '[[' .. baseUrl .. isbn .. '|' .. isbn .. ' (' .. version .. ')]]' or ""
end
-- Funktion zur Anpassung des DISPLAYTITLE über mw.ext.displaytitle
function helper.setDisplayTitle(frame)
local args = getArgs(frame)
local title = args["title"]
if title and title ~= "" then
local success, err = pcall(function()
mw.ext.displaytitle.set(title)
end)
if not success then
mw.log("Fehler beim Setzen des DISPLAYTITLE: " .. tostring(err))
end
end
end
-- set with return results
function helper.setProperty( frame )
if not mw.smw then
return "mw.smw module not found"
end
local result = mw.smw.set( frame.args )
if result == true then
return
else
return 'An error occurred during the storage process. Message reads ' .. result.error
end
end
-- Funktion zur Hinzufügung von Kategorien mit Sortkey
function helper.addCategories(frame)
-- Argumente aus dem Frame extrahieren
local args = getArgs(frame)
-- Kategorienliste und Sortkey abrufen
local categories = args["categories"] or {}
local sortkey = args["sortkey"] or mw.title.getCurrentTitle().text -- Standard: Seitentitel als Sortkey
-- Validierung der Kategorienliste
if type(categories) == "string" then
categories = mw.text.split(categories, ",") -- Kategorien können als kommaseparierte Liste übergeben werden
end
if type(categories) ~= "table" then
return "Ungültige Kategorienliste."
end
-- Kategorienausgabe generieren
local output = ""
for _, category in ipairs(categories) do
if category and category ~= "" then
output = output .. "[[Kategorie:" .. category .. "|" .. sortkey .. "]]\n"
end
end
return output
end
return helper