Die Dokumentation für dieses Modul kann unter Modul:Studio/EpisodeOutput/Doku erstellt werden
local episodeOutput = {}
local helper = require('Module:Studio/Helper')
local getArgs = require('Module:Arguments').getArgs
function episodeOutput.inside(frame, KategorieIntern)
local args = frame.args
KategorieIntern = args["KategorieIntern"] or args[1] -- Entweder benannter oder erster Parameter
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
if not KategorieIntern or KategorieIntern == "" then
return "Kein Projekt angegeben."
end
-- Abfrage-String für Studio-Projekt
local query = string.format(
"[[STUDIO:KategorieIntern::%s]][[STUDIO:Typ::Episode]]"
.. "|?STUDIO:Nummer"
.. "|?STUDIO:Titel"
.. "|?STUDIO:Dateiname"
.. "|?STUDIO:CUT_ADDS",
KategorieIntern
)
local queryResult = mw.smw.getQueryResult(query)
if not queryResult or not queryResult.results then
return "Keine Episoden für dieses Projekt gefunden."
end
-- Episoden in Tabgruppen (50er Blöcke)
local tabGroups = {}
for _, result in ipairs(queryResult.results) do
local nummer = tonumber(result.printouts["STUDIO:Nummer"] and result.printouts["STUDIO:Nummer"][1]) or 0
local titel = tostring(result.printouts["STUDIO:Titel"] and result.printouts["STUDIO:Titel"][1]) or "Ohne Titel"
local dateiname = tostring(result.printouts["STUDIO:Dateiname"] and result.printouts["STUDIO:Dateiname"][1]) or "-"
local cutAdds = tostring(result.printouts["STUDIO:CUT_ADDS"] and result.printouts["STUDIO:CUT_ADDS"][1]) or ""
local cutStatus = (cutAdds ~= "") and "ja" or "nein"
local tabName = string.format("%03d–%03d", math.floor((nummer - 1) / 50) * 50 + 1, math.floor((nummer - 1) / 50) * 50 + 50)
if not tabGroups[tabName] then
tabGroups[tabName] = {}
end
-- Zielseite (z.B. Studio:PROJEKT/001)
local subPage = string.format("Studio:%s/%03d", KategorieIntern, nummer)
local episodePage = string.format("[[%s|Seite]]", subPage)
-- Echter Formular-Link
local fullPageName = string.format("Studio:%s/%03d", KategorieIntern, nummer)
local encodedPage = mw.uri.encode(fullPageName, "WIKI")
local formEditLink = string.format("[[Special:FormEdit/Studio:Episoden/%s|Bearbeiten]]", encodedPage)
table.insert(tabGroups[tabName], string.format(
"<tr><td>%03d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
nummer,
mw.text.nowiki(titel),
mw.text.nowiki(dateiname),
cutStatus,
episodePage,
formEditLink
))
end
-- TabberNeue-Nested Syntax via Parserfunktion
local innerTabs = {}
for tabName, rows in pairs(tabGroups) do
table.insert(innerTabs, string.format(
"%s=\n\n{{{!}} class='studio-tabber-episodentabelle'\n!Nr.!!Titel!!Dateiname!!CUT_ADDS!!Seite!!Bearbeiten\n%s\n{{!}}}",
tabName,
table.concat(rows, "\n")
))
end
local separator = frame:preprocess("{{!}}-{{!}}")
local fullTabber = "{{#tag:tabber|\n" .. table.concat(innerTabs, "\n" .. separator .. "\n") .. "\n}}"
return frame:preprocess(fullTabber)
end
return episodeOutput