Die Dokumentation für dieses Modul kann unter Modul:LPON/Player/Doku erstellt werden
local player = {}
local helper = require('Module:LPON/Helper')
local getArgs = require('Module:Arguments').getArgs
local transcluder = require('Module:Transcluder')
function player.render(frame)
local args = getArgs(frame)
local output = ""
local playerName = args["Name"] or mw.title.getCurrentTitle().subpageText
local cleanPlayerName = helper.cleanString(playerName)
-- DISPLAYTITLE setzen
helper.setDisplayTitle({title = playerName})
-- Headergrafik
local headerImage = args["Headerbild"] or "DefaultPlayerHeader.jpg"
output = output .. '<div class="lpnon-player-header">'
output = output .. '[[File:' .. headerImage .. '|center|100%]]'
output = output .. '</div>'
-- Info-Boxen
output = output .. '<div class="lpnon-player-info-boxes">'
-- Box 1: Allgemeine Infos
output = output .. '<div class="lpnon-player-box">'
output = output .. '<h3>Allgemein</h3>'
output = output .. '<p><b>Status:</b> ' .. (args["Status"] or "Unbekannt") .. '</p>'
output = output .. '<p><b>Beitritt:</b> ' .. (args["Beitrittsdatum"] or "Unbekannt") .. '</p>'
output = output .. '<p><b>Rolle:</b> ' .. (args["Rolle"] or "Unbekannt") .. '</p>'
output = output .. '</div>'
-- Box 2: Social Links
output = output .. '<div class="lpnon-player-box">'
output = output .. '<h3>Social Links</h3>'
local linkPage = "LetsPlayOrNot:" .. playerName .. "/Links"
local rawContent = transcluder.get(linkPage)
output = output .. '<div class="lpnon-player-links">' .. frame:preprocess(rawContent) .. '</div>'
output = output .. '</div>'
-- Box 3: Statistiken (Projekte / Episoden)
output = output .. '<div class="lpnon-player-box">'
output = output .. '<h3>Statistiken</h3>'
-- Episoden zählen
local episodeQuery = string.format("[[LPON:Typ::Episode]][[LPON:Spieler::%s]]", playerName)
local episodeResult = mw.smw.getQueryResult(episodeQuery)
local episodeCount = (episodeResult and episodeResult.results) and #episodeResult.results or 0
-- Projekte zählen
local projectQuery = string.format("[[LPON:Typ::Projekt]][[LPON:Spieler::%s]]", playerName)
local projectResult = mw.smw.getQueryResult(projectQuery)
local projectCount = (projectResult and projectResult.results) and #projectResult.results or 0
output = output .. string.format('<p><b>Episoden:</b> %d</p>', episodeCount)
output = output .. string.format('<p><b>Projekte:</b> %d</p>', projectCount)
output = output .. '</div>' -- Ende Box 3
output = output .. '</div>' -- Ende der Boxen
-- Über mich Text (optional)
if args["Über"] and args["Über"] ~= "" then
output = output .. '<div class="lpnon-player-about">'
output = output .. '<h2>Über mich</h2>'
output = output .. args["Über"]
output = output .. '</div>'
end
-- Aktive Projekte auflisten
local projectListQuery = string.format("[[LPON:Typ::Projekt]][[LPON:Spieler::%s]]|?LPON:Title|?LPON:Status", playerName)
local projectListResult = mw.smw.getQueryResult(projectListQuery)
output = output .. '<div class="lpnon-player-projects">'
output = output .. '<h2>Projekte</h2>'
if projectListResult and projectListResult.results and #projectListResult.results > 0 then
output = output .. '<ul>'
for _, result in ipairs(projectListResult.results) do
local title = result.printouts["LPON:Title"] and result.printouts["LPON:Title"][1] or "Unbekannt"
local status = result.printouts["LPON:Status"] and result.printouts["LPON:Status"][1] or "Unbekannt"
local projectPage = result.fulltext or title
output = output .. string.format('<li>[[%s|%s]] (%s)</li>', projectPage, title, status)
end
output = output .. '</ul>'
else
output = output .. '<p>Keine Projekte gefunden.</p>'
end
output = output .. '</div>'
return output
end
return player