Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Modul:Publikation/Helper: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 116: Zeile 116:
end
end


-- Funktion zum Hinzufügen von Kategorien
-- Funktion zur Hinzufügung von Kategorien mit Sortkey
function helper.addCategories(frame)
function helper.addCategories(frame)
    -- Argumente aus dem Frame extrahieren
     local args = getArgs(frame)
     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 = ""
     local output = ""
     for _, category in pairs(args) do
     for _, category in ipairs(categories) do
         if category and category ~= "" then
         if category and category ~= "" then
             output = output .. "[[Category:" .. category .. "]]\n"
             output = output .. "[[Kategorie:" .. category .. "|" .. sortkey .. "]]\n"
         end
         end
     end
     end
     return output
     return output
end
end


return helper
return helper

Version vom 25. November 2024, 18:05 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