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