Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Modul:Publikation/Serie: Unterschied zwischen den Versionen

(Die Seite wurde neu angelegt: „local p = {} -- Funktion zur Anzeige der zugehörigen Bücher basierend auf der Serie function p.renderRelatedBooks(frame) local args = frame.args local series = args["Hat Serie"] if not series or series == "" then return "Keine Serie definiert." end -- Abfrage der Bücher, die zur Serie gehören local query = mw.smw.ask { "Hat Serie::" .. series .. "", "?Titel", "?Autor", "?Erscheinung…“)
 
Keine Bearbeitungszusammenfassung
 
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local p = {}
local serie = {}
local getArgs = require('Module:Arguments').getArgs
local helper = require("Modul:Publikation/Helper")
local related = require("Modul:Publikation/Related")


-- Funktion zur Anzeige der zugehörigen Bücher basierend auf der Serie
-- Funktion zur Generierung von Kategorien
function p.renderRelatedBooks(frame)
local function addCategories(args)
     local args = frame.args
     local categories = ""
     local series = args["Hat Serie"]
   
    if not series or series == "" then
    -- Kategorie für Serie
         return "Keine Serie definiert."
     if args["Titel"] and args["Titel"] ~= "" then
         categories = categories .. "[[Category:Serie:" .. args["Titel"] .. "| ]]\n"
     end
     end
   
    -- Kategorie "Bücher"
    categories = categories .. "[[Kategorie:Serie|" .. args["Titel"] .. "]]\n"


     -- Abfrage der Bücher, die zur Serie gehören
    return categories
     local query = mw.smw.ask {
end
        "[[Hat Serie::" .. series .. "]]",
 
         "?Titel",
function serie.render(frame)
         "?Autor",
local args = getArgs(frame)
        "?Erscheinungsjahr",
   
         "?Band",
     -- Setze den DISPLAYTITLE basierend auf dem Titel des Buches
         format = "table",
     if args["Titel"] then
         headers = "plain"
    local DisplayTitel = 'Serie - ' .. args["Titel"]
     }
        helper.setDisplayTitle({title = DisplayTitel})
    end
   
    -- Setze das semantische Attribut "Typ"
    helper.setProperty({ args = { ["Typ"] = "Serie" } })
 
    local output = '<table class="publikation serie table">'
 
    -- Titel
    local title = args["Titel"] or "Unbekannt"
    output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. title .. ']]</td></tr>'
 
    -- Autor(en)
    if args["Autor"] then
         output = output .. '<tr><td><strong>Autor(en)</strong></td><td>'
         for author in mw.text.gsplit(args["Autor"], ",") do
            output = output .. '[[Hat Autor::' .. mw.text.trim(author) .. ']], '
        end
         output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
    end
 
    -- Serien ID
    if args["SerienID"] then
         output = output .. '<tr><td><strong>Serien ID</strong></td><td>[[SerienID::' .. args["SerienID"] .. ']]</td></tr>'
    end
   
    -- Complete volumes
    if args["Complete volumes"] then
         output = output .. '<tr><td><strong>Complete volumes</strong></td><td>[[Complete volumes::' .. args["Complete volumes"] .. ']]</td></tr>'
     end


     -- Generiere die Tabelle der Ergebnisse
     -- Serienbeschreibung
     local result = ""
     if args["Hat SerienBeschreibung"] then
    if query and #query > 0 then
         output = output .. '<tr><td><strong>Beschreibung</strong></td><td>[[Hat SerienBeschreibung::' .. args["Hat SerienBeschreibung"] .. ']]</td></tr>'
         result = result .. "{| class='wikitable'\n! Titel !! Autor !! Erscheinungsjahr !! Band\n"
    end
        for _, book in ipairs(query) do
 
            result = result .. "|-\n| " .. (book.Titel or "Unbekannt")
    -- Datensatz-IDs
            result = result .. " || " .. (book.Autor or "Unbekannt")
    if args["Bücher"] then
            result = result .. " || " .. (book.Erscheinungsjahr or "Unbekannt")
        output = output .. '<tr><td><strong>Bücher (Datensatz-IDs)</strong></td><td>'
             result = result .. " || " .. (book.Band or "Unbekannt") .. "\n"
        for id in mw.text.gsplit(args["Bücher"], ",") do
             output = output .. '[[Hat Datensatz ID::' .. mw.text.trim(id) .. ']], '
         end
         end
         result = result .. "|}"
         output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
    else
        result = "Keine zugehörigen Bücher gefunden."
     end
     end


     return result
    output = output .. '</table>'
   
-- Weitere Bücher in der Serie (unterhalb der Tabelle)
    if args["Titel"] then
        local relatedBooks = related.buchRelated({
    series = args["Titel"],
    limit = 50
})
        output = output .. '<div class="related-books">' ..
                '<h2>Bücher der Serie:</h2>' ..
                  (relatedBooks or "<p>Keine Bände verfügbar.</p>") ..
                  '</div>'
    end
   
    -- Kategorien hinzufügen
    output = output .. addCategories(args)
     return output
end
end


return p
return serie

Aktuelle Version vom 30. November 2024, 00:41 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Publikation/Serie/Doku erstellt werden

local serie = {}
local getArgs = require('Module:Arguments').getArgs
local helper = require("Modul:Publikation/Helper")
local related = require("Modul:Publikation/Related")

-- Funktion zur Generierung von Kategorien
local function addCategories(args)
    local categories = ""
    
    -- Kategorie für Serie
    if args["Titel"] and args["Titel"] ~= "" then
        categories = categories .. "[[Category:Serie:" .. args["Titel"] .. "| ]]\n"
    end
    
    -- Kategorie "Bücher"
    categories = categories .. "[[Kategorie:Serie|" .. args["Titel"] .. "]]\n"

    return categories
end

function serie.render(frame)
	local args = getArgs(frame)
    
    -- Setze den DISPLAYTITLE basierend auf dem Titel des Buches
    if args["Titel"] then
    	local DisplayTitel = 'Serie - ' .. args["Titel"]
        helper.setDisplayTitle({title = DisplayTitel})
    end
    
    -- Setze das semantische Attribut "Typ"
    helper.setProperty({ args = { ["Typ"] = "Serie" } })

    local output = '<table class="publikation serie table">'

    -- Titel
    local title = args["Titel"] or "Unbekannt"
    output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. title .. ']]</td></tr>'

    -- Autor(en)
    if args["Autor"] then
        output = output .. '<tr><td><strong>Autor(en)</strong></td><td>'
        for author in mw.text.gsplit(args["Autor"], ",") do
            output = output .. '[[Hat Autor::' .. mw.text.trim(author) .. ']], '
        end
        output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
    end

    -- Serien ID
    if args["SerienID"] then
        output = output .. '<tr><td><strong>Serien ID</strong></td><td>[[SerienID::' .. args["SerienID"] .. ']]</td></tr>'
    end
    
    -- Complete volumes
    if args["Complete volumes"] then
        output = output .. '<tr><td><strong>Complete volumes</strong></td><td>[[Complete volumes::' .. args["Complete volumes"] .. ']]</td></tr>'
    end

    -- Serienbeschreibung
    if args["Hat SerienBeschreibung"] then
        output = output .. '<tr><td><strong>Beschreibung</strong></td><td>[[Hat SerienBeschreibung::' .. args["Hat SerienBeschreibung"] .. ']]</td></tr>'
    end

    -- Datensatz-IDs
    if args["Bücher"] then
        output = output .. '<tr><td><strong>Bücher (Datensatz-IDs)</strong></td><td>'
        for id in mw.text.gsplit(args["Bücher"], ",") do
            output = output .. '[[Hat Datensatz ID::' .. mw.text.trim(id) .. ']], '
        end
        output = output:sub(1, -3) .. '</td></tr>' -- Entfernt das letzte Komma
    end

    output = output .. '</table>'
    
	-- Weitere Bücher in der Serie (unterhalb der Tabelle)
    if args["Titel"] then
        local relatedBooks = related.buchRelated({ 
    		series = args["Titel"], 
    		limit = 50
		})
        output = output .. '<div class="related-books">' ..
                 '<h2>Bücher der Serie:</h2>' ..
                  (relatedBooks or "<p>Keine Bände verfügbar.</p>") ..
                  '</div>'
    end
    
    -- Kategorien hinzufügen
    output = output .. addCategories(args)
    return output
end

return serie