Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Modul:Publikation/Helper: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Zeile 118: Zeile 118:
     end
     end


     -- Query zusammenbauen
     -- Query mit format=table
     local queryStr = query .. "|?" .. headers:gsub(",", "|?") .. "|limit=" .. limit
     local queryStr = query .. "|?" .. headers:gsub(",", "|?") .. "|limit=" .. limit .. "|format=table"
 
    -- Ergebnisse verarbeiten
     local result = mw.smw.ask(queryStr)
     local result = mw.smw.ask(queryStr)


    -- Kein Ergebnis gefunden
     if not result or next(result) == nil then
     if not result or next(result) == nil then
         return "<pre>Keine Ergebnisse gefunden. Query: " .. queryStr .. "</pre>"
         return "<pre>Keine Ergebnisse gefunden. Query: " .. queryStr .. "</pre>"
     end
     end


     -- Ergebnisse verarbeiten
     -- Automatisch generierte Tabelle zurückgeben
     local output = "<table class='wikitable'><tr>"
     return result
    for header in mw.text.gsplit(headers, ",") do
        output = output .. "<th>" .. header .. "</th>"
    end
    output = output .. "</tr>"
 
    for _, row in pairs(result) do
        output = output .. "<tr>"
        for header in mw.text.gsplit(headers, ",") do
            output = output .. "<td>" .. (row[header] or "N/A") .. "</td>"
        end
        output = output .. "</tr>"
    end
 
    output = output .. "</table>"
    return "<pre>Generierte Abfrage: " .. queryStr .. "</pre>" .. output
end
end


return helper
return helper

Version vom 24. November 2024, 00:20 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 mit format=table
    local queryStr = query .. "|?" .. headers:gsub(",", "|?") .. "|limit=" .. limit .. "|format=table"

    -- Ergebnisse verarbeiten
    local result = mw.smw.ask(queryStr)

    if not result or next(result) == nil then
        return "<pre>Keine Ergebnisse gefunden. Query: " .. queryStr .. "</pre>"
    end

    -- Automatisch generierte Tabelle zurückgeben
    return result
end

return helper