Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
||
Zeile 113: | Zeile 113: | ||
local headers = args["headers"] or "" | local headers = args["headers"] or "" | ||
local limit = args["limit"] or "10" | local limit = args["limit"] or "10" | ||
if query == "" or headers == "" then | if query == "" or headers == "" then | ||
Zeile 133: | Zeile 132: | ||
output = output .. "! " .. headers:gsub(",", " !! ") .. "\n" | output = output .. "! " .. headers:gsub(",", " !! ") .. "\n" | ||
for | for title, row in pairs(result) do | ||
output = output .. "|-\n" | output = output .. "|-\n" | ||
for _, header in ipairs(mw.text.split(headers, ",")) do | for _, header in ipairs(mw.text.split(headers, ",")) do | ||
local value = row[header] or "—" | local value = row[header] or "—" | ||
-- Titel | -- Wenn der Header "Hat Titel" ist, tatsächlichen Seitennamen für den Link verwenden | ||
if header == "Hat Titel" and value ~= "—" then | if header == "Hat Titel" and value ~= "—" then | ||
value = "[[" .. | value = "[[" .. title .. "|" .. value .. "]]" | ||
end | end | ||
Version vom 24. November 2024, 00:45 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 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 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:' .. cover .. '|550px]]' or '[[File:Library:Cover:' .. 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
-- Generische Funktion zur ask-Abfrage
function helper.askQuery(frame)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
local args = frame.args
local query = args["query"] or ""
local headers = args["headers"] or ""
local limit = args["limit"] or "10"
if query == "" or headers == "" then
return "Keine gültige Abfrage oder Kopfzeilen angegeben."
end
-- Query vorbereiten
local queryStr = query .. "|?" .. headers:gsub(",", "|?") .. "|limit=" .. limit
-- Ergebnisse abfragen
local result = mw.smw.ask(queryStr)
if not result or next(result) == nil then
return "<pre>Keine Ergebnisse gefunden. Query: " .. queryStr .. "</pre>"
end
-- Tabelle generieren
local output = "{| class=\"wikitable\"\n"
output = output .. "! " .. headers:gsub(",", " !! ") .. "\n"
for title, row in pairs(result) do
output = output .. "|-\n"
for _, header in ipairs(mw.text.split(headers, ",")) do
local value = row[header] or "—"
-- Wenn der Header "Hat Titel" ist, tatsächlichen Seitennamen für den Link verwenden
if header == "Hat Titel" and value ~= "—" then
value = "[[" .. title .. "|" .. value .. "]]"
end
output = output .. "| " .. value .. " || "
end
output = output:sub(1, -4) .. "\n" -- Entfernt das letzte " || "
end
output = output .. "|}"
return output
end
return helper