Module:Interlingual Energizer

local function renderRow(heading, value) return '|-\n| style="vertical-align:top; padding-left:5px; padding-right:5px; white-space:nowrap;" | \'\'\'' .. heading .. '\'\'\'\n| ' .. value .. '\n' end local function renderPlainRow(text, style) return 	'|-\n| style="padding-left:5px; padding-right:5px; '..style..'" colspan="2" | '.. text .. '\n' end local function renderRowHeading(heading) return renderPlainRow('\'\'\ .. heading .. '\'\'\, 'text-align:center;padding-top:10px;') end local function collapsiblePanel(title, content, lang) return '{| class="collapsible collapsed" style="clear: left;" lang="'..lang..'" \n |- style="text-align:left;" | \n ! '..title..'\n|-\n|\n'..content..'\n\|\}' end local function translatedPanel(frame, params, root, title) local elements = {} table.insert(elements, '== '..title.. ' ==\n') local langs = {} local descs = {} for key, value in pairs(params) do		if string.match( key, '^'..root..'\_.*' ) ~= nil and value ~= '' then local langcode,_ = string.gsub( key, '^'..root..'\_', '') local l = mw.language.fetchLanguageName(langcode) table.insert(langs, ..l.. ) --	table.insert(descs, '=== '..l..' ===\n') table.insert(descs, frame:expandTemplate{title = 'Anchor', args = {title..'-'..l}}..'\n'..collapsiblePanel(l, value, langcode)) end end if #langs > 0 then table.insert(elements, ' \'\'The '..mw.ustring.lower(title)..' is also available in '..#langs..' other languages: ' .. table.concat(langs, ', ')..'\'\' \n' ) end table.insert(elements, params[root].. '\n') table.insert(elements, table.concat(descs)) return '\n'..table.concat(elements) end local function firstParagraph(frame, params) local translatedNames = {} for key, value in pairs(params) do		if string.match( key, '^name\_.*' ) ~= nil and value ~= '' then local langcode,_ = string.gsub( key, '^name\_', '') local l = mw.language.fetchLanguageName(langcode) table.insert(translatedNames, '\'\''.. l ..':\'\' '..value..' ') end end local names = '' if #translatedNames > 0 then names = ' (' .. table.concat(translatedNames, ', ') .. ')' end return 'The activity \'\'\'' .. params['name'] .. '\'\'\''.. names ..' is part of the collection of interlingual energizers. See a list of all activities.' end

local p = {}

function p.energizer( frame ) local params = frame:getParent.args local elements = {} local cats = {} local language = mw.getContentLanguage table.insert(cats, '') table.insert(elements, '\n') -- Box Start table.insert(elements, ' \n{| cellpadding="0" cellspacing="0" style="background-color:#f9f9f9; border:1px solid #999; width:350px;"\n|-\n') if params['image'] == nil or params['image'] == '' then params['image'] = 'Bundesarchiv Bild 194-0191-38, Kindergarten, Kinderheim.jpg' -- fallback image end table.insert(elements, '| colspan="2" style="text-align:center; padding:0px;" | \n' ) table.insert(elements, renderRowHeading('Facilitator') ) table.insert(elements, renderRow('amount', params['facilitator_amount']) ) local levels = {} levels["simple"] = 1 levels["medium"] = 2 levels["advanced"] = 3 if levels[params['facilitator_language_level']] ~= nil then local catname = 'Category:'.. language:ucfirst(params['facilitator_language_level']).. ' Interlingual Energizers' table.insert(elements, renderRow('language level', string.rep('', levels[params['facilitator_language_level']]) .. string.rep('', 3-levels[params['facilitator_language_level']]) .. ' ('..params['facilitator_language_level']..')' )) table.insert(cats, ..catname..) end table.insert(elements, renderRowHeading('Participants') ) table.insert(elements, renderRow('age', params['participants_age']) ) table.insert(elements, renderRow('group size', params['participants_group_size']) ) table.insert(elements, renderRowHeading('Setting') ) table.insert(elements, renderRow('materials', params['setting_materials']) ) table.insert(elements, renderRow('space', params['setting_space']) ) table.insert(elements, renderRow('time', params['setting_time']) ) table.insert(elements, renderRowHeading('Outcome') ) table.insert(elements, renderPlainRow(params['outcome'], '') ) if params['outcome'] ~= nil and params['outcome'] ~= '' then local outcomeCats = { ["energizer"] = "Energizers in Interlingual Energizers", ["ice breaker"] = "Ice breakers in Interlingual Energizers", ["GTKEO"] = "Ice breakers in Interlingual Energizers", ["getting to know each other"] = "Ice breakers in Interlingual Energizers", ["teambuilder"] = "Teambuilders in Interlingual Energizers" }		for pattern, cat in pairs(outcomeCats) do			if string.find(string.lower(params['outcome']), string.lower(pattern)) ~= nil then table.insert(cats, '') end end end table.insert(elements, '|} \n') -- Box End

table.insert(elements, firstParagraph(frame, params)) if params['introduction'] ~= nil and params['introduction'] ~= '' then table.insert(elements, translatedPanel(frame, params, 'introduction', 'Introduction') ) end if params['rules'] ~= nil and params['rules'] ~= '' then table.insert(elements, translatedPanel(frame, params, 'rules', 'Rules') ) end if params['end'] ~= nil and params['end'] ~= '' then table.insert(elements, translatedPanel(frame, params, 'end', 'End of the Game') ) end if params['extensions'] ~= nil and params['extensions'] ~= '' then table.insert(elements, '\n== Possible extensions ==\n' .. params['extensions'] ) end table.insert(elements, '\n'..frame:expandTemplate{title = 'Erasmus+ Disclaimer'}) for key, value in pairs(params) do		if string.match( key, '^%w+\_.*' ) ~= nil and value ~= '' then local langcode,_ = string.gsub( key, '^%w+\_', '') local l = mw.language.fetchLanguageName(langcode, 'en') if l ~= nil and l ~= '' then table.insert(cats, '') end end end if mw.title.getCurrentTitle.text ~= 'Interlingual Energizers/Preload' then table.insert(elements, '\n' .. table.concat(cats,'\n')) end return table.concat(elements) end

return p