Zuletzt bearbeitet vor 5 Tagen
von Xineohp1506

Player

Version vom 28. April 2025, 23:36 Uhr von Xineohp1506 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „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 = playerN…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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