Keine Bearbeitungszusammenfassung Markierung: Manuelle Zurücksetzung |
Keine Bearbeitungszusammenfassung |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
local helper = require('Module:LPON/Helper') | local helper = require('Module:LPON/Helper') | ||
-- Funktion zur tabberbasierten Ausgabe der Folgen | -- Funktion zur tabberbasierten Ausgabe der Folgen mit festem Design | ||
function episodeOutput.inside(frame, cleanProjektname) | function episodeOutput.inside(frame, cleanProjektname) | ||
if not mw.smw then | if not mw.smw then | ||
Zeile 14: | Zeile 14: | ||
-- Abfrage-String erstellen | -- Abfrage-String erstellen | ||
local query = string.format( | local query = string.format( | ||
"[[LPON:Projekt::%s]][[LPON:Typ::Episode]]|?LPON:Episodennummer|?LPON:Episodentitel|?LPON: | "[[LPON:Projekt::%s]][[LPON:Typ::Episode]]|?LPON:Episodennummer|?LPON:Episodentitel|?LPON:Description|?LPON:Service|?LPON:ID", | ||
cleanProjektname | cleanProjektname | ||
) | ) | ||
Zeile 29: | Zeile 29: | ||
local episodeNumber = result.printouts["LPON:Episodennummer"] and result.printouts["LPON:Episodennummer"][1] or 0 | local episodeNumber = result.printouts["LPON:Episodennummer"] and result.printouts["LPON:Episodennummer"][1] or 0 | ||
local episodeTitle = result.printouts["LPON:Episodentitel"] and result.printouts["LPON:Episodentitel"][1] or "Ohne Titel" | local episodeTitle = result.printouts["LPON:Episodentitel"] and result.printouts["LPON:Episodentitel"][1] or "Ohne Titel" | ||
local | local description = result.printouts["LPON:Description"] and result.printouts["LPON:Description"][1] or "Keine Beschreibung verfügbar" | ||
local | local service = result.printouts["LPON:Service"] and result.printouts["LPON:Service"][1] or nil | ||
local | local videoID = result.printouts["LPON:ID"] and result.printouts["LPON:ID"][1] or nil | ||
-- Staffelnummer bestimmen (z. B. alle 20 Folgen eine neue Staffel) | -- Staffelnummer bestimmen (z. B. alle 20 Folgen eine neue Staffel) | ||
Zeile 41: | Zeile 41: | ||
end | end | ||
-- Link zur Plattform generieren | |||
local vodWikiLink = "PRIVAT" | |||
if service and videoID then | |||
local videoLink = helper.getVideoLink(service, videoID) | |||
if videoLink then | |||
vodWikiLink = "[" .. videoLink .. " " .. service:gsub("^%l", string.upper) .. "]" | |||
end | |||
end | |||
-- HTML-Tabelleintrag hinzufügen | |||
table.insert(tabGroups[tabName], string.format( | |||
'<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>', | |||
episodeNumber, | |||
episodeTitle, | |||
description, | |||
frame:preprocess(vodWikiLink) | |||
)) | |||
end | |||
-- Tabber-Ausgabe generieren | |||
local wikitextOutput = '<tabber>' | |||
for tabName, episodes in pairs(tabGroups) do | |||
wikitextOutput = wikitextOutput .. string.format( | |||
"\n%s=\n<table class='lpnon-episode-table'>\n<tr><th>Nr.</th><th>Titel</th><th>Beschreibung</th><th>VOD</th></tr>\n%s\n</table>\n|-|\n", | |||
tabName, | |||
table.concat(episodes, "\n") | |||
) | |||
end | |||
wikitextOutput = wikitextOutput .. '</tabber>' | |||
-- Wikitext verarbeiten | |||
return frame:preprocess(wikitextOutput) | |||
end | |||
function episodeOutput.outside(frame) | |||
local args = require('Module:Arguments').getArgs(frame) | |||
local projectName = args["Projekt"] | |||
if not projectName or projectName == "" then | |||
return "Kein Projektname angegeben." | |||
end | |||
if not mw.smw then | |||
return "Semantic MediaWiki-Erweiterung nicht gefunden." | |||
end | |||
-- DISPLAYTITLE setzen | |||
helper.setDisplayTitle({title = projectName .. " - Episoden"}) | |||
local cleanProjektname = helper.cleanString(projectName) | |||
-- Abfrage-String erstellen | |||
local query = string.format( | |||
"[[LPON:Projekt::%s]][[LPON:Typ::Episode]]|?LPON:Episodennummer|?LPON:Episodentitel|?LPON:Description|?LPON:Service|?LPON:ID", | |||
cleanProjektname | |||
) | |||
local queryResult = mw.smw.getQueryResult(query) | |||
if not queryResult or not queryResult.results then | |||
return "Keine Folgen für dieses Projekt gefunden." | |||
end | |||
-- Folgen nach Tabs aufteilen (100 pro Gruppe) | |||
local tabGroups = {} | |||
for _, result in ipairs(queryResult.results) do | |||
local episodeNumber = result.printouts["LPON:Episodennummer"] and result.printouts["LPON:Episodennummer"][1] or 0 | |||
local episodeTitle = result.printouts["LPON:Episodentitel"] and result.printouts["LPON:Episodentitel"][1] or "Ohne Titel" | |||
local description = result.printouts["LPON:Description"] and result.printouts["LPON:Description"][1] or "Keine Beschreibung verfügbar" | |||
local service = result.printouts["LPON:Service"] and result.printouts["LPON:Service"][1] or nil | |||
local videoID = result.printouts["LPON:ID"] and result.printouts["LPON:ID"][1] or nil | |||
-- Staffelnummer bestimmen (z. B. alle 100 Folgen eine neue Staffel) | |||
local season = math.floor((episodeNumber - 1) / 100) + 1 | |||
local tabName = string.format("%03d - %03d", (season - 1) * 100 + 1, season * 100) | |||
if not tabGroups[tabName] then | |||
tabGroups[tabName] = {} | |||
end | |||
-- Link zur Plattform generieren | |||
local vodWikiLink = "PRIVAT" | |||
if service and videoID then | |||
local videoLink = helper.getVideoLink(service, videoID) | |||
if videoLink then | |||
vodWikiLink = "[" .. videoLink .. " " .. service:gsub("^%l", string.upper) .. "]" | |||
end | |||
end | |||
-- HTML-Tabelleintrag hinzufügen | |||
table.insert(tabGroups[tabName], string.format( | table.insert(tabGroups[tabName], string.format( | ||
' | '<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>', | ||
episodeNumber, | episodeNumber, | ||
episodeTitle, | episodeTitle, | ||
description, | |||
frame:preprocess(vodWikiLink) | |||
)) | )) | ||
end | end | ||
Zeile 54: | Zeile 143: | ||
for tabName, episodes in pairs(tabGroups) do | for tabName, episodes in pairs(tabGroups) do | ||
wikitextOutput = wikitextOutput .. string.format( | wikitextOutput = wikitextOutput .. string.format( | ||
"\n%s=\n | "\n%s=\n<table class='lpnon-episode-table'>\n<tr><th>Nr.</th><th>Titel</th><th>Beschreibung</th><th>VOD</th></tr>\n%s\n</table>\n|-|\n", | ||
tabName, | tabName, | ||
table.concat(episodes, "\n") | table.concat(episodes, "\n") | ||
Zeile 60: | Zeile 149: | ||
end | end | ||
wikitextOutput = wikitextOutput .. '</tabber>' | wikitextOutput = wikitextOutput .. '</tabber>' | ||
wikitextOutput = wikitextOutput .. helper.addCategories({categories = "LPON:" .. cleanProjektname , sortkey = "!"}) | |||
-- Wikitext verarbeiten | -- Wikitext verarbeiten |
Aktuelle Version vom 20. Dezember 2024, 00:08 Uhr
Die Dokumentation für dieses Modul kann unter Modul:LPON/EpisodeOutput/Doku erstellt werden
local episodeOutput = {}
local helper = require('Module:LPON/Helper')
-- Funktion zur tabberbasierten Ausgabe der Folgen mit festem Design
function episodeOutput.inside(frame, cleanProjektname)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
if not cleanProjektname or cleanProjektname == "" then
return "Kein Projekt angegeben."
end
-- Abfrage-String erstellen
local query = string.format(
"[[LPON:Projekt::%s]][[LPON:Typ::Episode]]|?LPON:Episodennummer|?LPON:Episodentitel|?LPON:Description|?LPON:Service|?LPON:ID",
cleanProjektname
)
local queryResult = mw.smw.getQueryResult(query)
if not queryResult or not queryResult.results then
return "Keine Folgen für dieses Projekt gefunden."
end
-- Folgen nach Tabs aufteilen
local tabGroups = {}
for _, result in ipairs(queryResult.results) do
local episodeNumber = result.printouts["LPON:Episodennummer"] and result.printouts["LPON:Episodennummer"][1] or 0
local episodeTitle = result.printouts["LPON:Episodentitel"] and result.printouts["LPON:Episodentitel"][1] or "Ohne Titel"
local description = result.printouts["LPON:Description"] and result.printouts["LPON:Description"][1] or "Keine Beschreibung verfügbar"
local service = result.printouts["LPON:Service"] and result.printouts["LPON:Service"][1] or nil
local videoID = result.printouts["LPON:ID"] and result.printouts["LPON:ID"][1] or nil
-- Staffelnummer bestimmen (z. B. alle 20 Folgen eine neue Staffel)
local season = math.floor((episodeNumber - 1) / 20) + 1
local tabName = string.format("%02d - %02d", (season - 1) * 20 + 1, season * 20)
if not tabGroups[tabName] then
tabGroups[tabName] = {}
end
-- Link zur Plattform generieren
local vodWikiLink = "PRIVAT"
if service and videoID then
local videoLink = helper.getVideoLink(service, videoID)
if videoLink then
vodWikiLink = "[" .. videoLink .. " " .. service:gsub("^%l", string.upper) .. "]"
end
end
-- HTML-Tabelleintrag hinzufügen
table.insert(tabGroups[tabName], string.format(
'<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>',
episodeNumber,
episodeTitle,
description,
frame:preprocess(vodWikiLink)
))
end
-- Tabber-Ausgabe generieren
local wikitextOutput = '<tabber>'
for tabName, episodes in pairs(tabGroups) do
wikitextOutput = wikitextOutput .. string.format(
"\n%s=\n<table class='lpnon-episode-table'>\n<tr><th>Nr.</th><th>Titel</th><th>Beschreibung</th><th>VOD</th></tr>\n%s\n</table>\n|-|\n",
tabName,
table.concat(episodes, "\n")
)
end
wikitextOutput = wikitextOutput .. '</tabber>'
-- Wikitext verarbeiten
return frame:preprocess(wikitextOutput)
end
function episodeOutput.outside(frame)
local args = require('Module:Arguments').getArgs(frame)
local projectName = args["Projekt"]
if not projectName or projectName == "" then
return "Kein Projektname angegeben."
end
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
-- DISPLAYTITLE setzen
helper.setDisplayTitle({title = projectName .. " - Episoden"})
local cleanProjektname = helper.cleanString(projectName)
-- Abfrage-String erstellen
local query = string.format(
"[[LPON:Projekt::%s]][[LPON:Typ::Episode]]|?LPON:Episodennummer|?LPON:Episodentitel|?LPON:Description|?LPON:Service|?LPON:ID",
cleanProjektname
)
local queryResult = mw.smw.getQueryResult(query)
if not queryResult or not queryResult.results then
return "Keine Folgen für dieses Projekt gefunden."
end
-- Folgen nach Tabs aufteilen (100 pro Gruppe)
local tabGroups = {}
for _, result in ipairs(queryResult.results) do
local episodeNumber = result.printouts["LPON:Episodennummer"] and result.printouts["LPON:Episodennummer"][1] or 0
local episodeTitle = result.printouts["LPON:Episodentitel"] and result.printouts["LPON:Episodentitel"][1] or "Ohne Titel"
local description = result.printouts["LPON:Description"] and result.printouts["LPON:Description"][1] or "Keine Beschreibung verfügbar"
local service = result.printouts["LPON:Service"] and result.printouts["LPON:Service"][1] or nil
local videoID = result.printouts["LPON:ID"] and result.printouts["LPON:ID"][1] or nil
-- Staffelnummer bestimmen (z. B. alle 100 Folgen eine neue Staffel)
local season = math.floor((episodeNumber - 1) / 100) + 1
local tabName = string.format("%03d - %03d", (season - 1) * 100 + 1, season * 100)
if not tabGroups[tabName] then
tabGroups[tabName] = {}
end
-- Link zur Plattform generieren
local vodWikiLink = "PRIVAT"
if service and videoID then
local videoLink = helper.getVideoLink(service, videoID)
if videoLink then
vodWikiLink = "[" .. videoLink .. " " .. service:gsub("^%l", string.upper) .. "]"
end
end
-- HTML-Tabelleintrag hinzufügen
table.insert(tabGroups[tabName], string.format(
'<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>',
episodeNumber,
episodeTitle,
description,
frame:preprocess(vodWikiLink)
))
end
-- Tabber-Ausgabe generieren
local wikitextOutput = '<tabber>'
for tabName, episodes in pairs(tabGroups) do
wikitextOutput = wikitextOutput .. string.format(
"\n%s=\n<table class='lpnon-episode-table'>\n<tr><th>Nr.</th><th>Titel</th><th>Beschreibung</th><th>VOD</th></tr>\n%s\n</table>\n|-|\n",
tabName,
table.concat(episodes, "\n")
)
end
wikitextOutput = wikitextOutput .. '</tabber>'
wikitextOutput = wikitextOutput .. helper.addCategories({categories = "LPON:" .. cleanProjektname , sortkey = "!"})
-- Wikitext verarbeiten
return frame:preprocess(wikitextOutput)
end
return episodeOutput