Zuletzt bearbeitet vor 13 Stunden
von Xineohp1506

Unterrichtsfilm

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

local p = {}
local getArgs = require('Module:Arguments').getArgs
local frame = mw.getCurrentFrame()

function p.render(frame)
    local args = getArgs(frame)
    local html = mw.html.create('div'):addClass('uf-block')

    -- Semantische Speicherung
    mw.smw.set{
        ['FilmTitel'] = args.Titel,
        ['FilmFach'] = args.Fach,
        ['FilmThema'] = args.Thema,
        ['FilmKlassenstufe'] = args.Klassenstufe,
        ['FilmAltersfreigabe'] = args.Altersfreigabe,
        ['FilmTyp'] = args.Typ,
        ['FilmErscheinungsjahr'] = args.Erscheinungsjahr,
        ['FilmLänge'] = args.Laenge,
    }

    -- Kategorien per preprocess
    if args.Fach then
        frame:preprocess('[[Kategorie:Unterrichtsfilm/' .. args.Fach .. ']]')
    end
    if args.Klassenstufe then
        frame:preprocess('[[Kategorie:Klassenstufe ' .. args.Klassenstufe .. ']]')
    end
    if args.Altersfreigabe then
        frame:preprocess('[[Kategorie:' .. args.Altersfreigabe .. ']]')
    end
    if args.Typ then
        frame:preprocess('[[Kategorie:Filmtyp/' .. args.Typ .. ']]')
    end

    -- Layout-Container
    local container = html:tag('div'):addClass('uf-container')

    -- Linke Spalte
    local left = container:tag('div'):addClass('uf-left')
    left:tag('h1'):wikitext(args.Titel or 'Unbenannter Film')

    left:tag('div'):addClass('uf-meta'):wikitext('🎓 Klassenstufe: ' .. (args.Klassenstufe or '-') ..
        '   🧒 FSK: ' .. (args.Altersfreigabe or '-'))

    left:tag('div'):addClass('uf-meta'):wikitext('📚 ' .. (args.Fach or '-') .. ' | ' .. (args.Thema or '-'))

    if args.Erscheinungsjahr or args.Laenge then
        left:tag('div'):addClass('uf-meta'):wikitext('🗓️ ' .. (args.Erscheinungsjahr or '?') ..
            ' – 🎬 ' .. (args.Laenge or '?'))
    end

    if args.Hinweise then
        left:tag('div'):addClass('uf-hinweis'):wikitext('⚠️ ' .. args.Hinweise)
    end

    left:tag('h2'):wikitext('Beschreibung')
    left:tag('p'):wikitext(args.Beschreibung or '')

    if args.Fragestellungen then
        left:tag('h2'):wikitext('Fragestellungen')
        local format = (args.FragenFormat or ''):lower()

        if format == 'numeric' then
            local list = left:tag('ol')
            for _, q in ipairs(mw.text.split(args.Fragestellungen, '%s*;%s*')) do
                list:tag('li'):wikitext(q)
            end
        elseif format == 'bullet' then
            local list = left:tag('ul')
            for _, q in ipairs(mw.text.split(args.Fragestellungen, '%s*;%s*')) do
                list:tag('li'):wikitext(q)
            end
        else
            left:tag('p'):wikitext(args.Fragestellungen)
        end
    end

    if args.Empfehlung or args.Warnung then
        local empBlock = left:tag('div'):addClass('uf-bewertung')
        if args.Empfehlung and args.Empfehlung ~= '' then
            empBlock:tag('div'):wikitext('💬 Empfehlung: ' .. args.Empfehlung)
        end
        if args.Warnung and args.Warnung ~= '' then
            empBlock:tag('div'):wikitext('🚨 Hinweis: ' .. args.Warnung)
        end
    end

    if args.InfoLink then
        left:tag('div'):addClass('uf-info'):wikitext('🔗 ['
            .. args.InfoLink .. ' Weiterführende Informationen]')
    end

    -- Rechte Spalte: Bild
    local right = container:tag('div'):addClass('uf-right')
    local bild = args.Bild or ('Default_' .. (args.Typ or 'Film') .. '.jpg')
    right:wikitext('[[Datei:' .. bild .. '|300px|rahmen|right]]')

    return tostring(html)
end

return p