Zum Inhalt springen

Modul:Infobox

aus Wikipedia, der freien Enzyklopädie

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

local p = {}
local getArgs = require('Modul:Arguments').getArgs

function p.tab(frame)
	local args = getArgs(frame)
	local index = {}
	local i = 0
	for datum = 1, 80 do i = i + 1
		if args['name'..i] or args['zweite'..i] or args['farbez'..i] or args['unter'..i] or args['datei'..i] then table.insert(index, i) end
		if args['dritte'..i] then dritte = true end
		if args['vierte'..i] then vierte = true end
	end
	cspan = vierte and 4 or dritte and 3 or 2
	
	local root = mw.html.create('table'):css('clear', 'left'):css('float', 'right'):css('font-size', '96%'):css('border', '0.1px solid silver'):css('border-collapse', 'collapse'):css('line-height', '1.5em'):css('min-width', '20em')
	row = root:tag('tr')
	
	row:tag('td')
		:wikitext(args['titel'] or 'Titel')
		:css('background-color', '#CCF')
		:css('text-align', 'center')
		:css('font-weight', 'bold')
		:css('padding-top', '0.2em')
		:css('padding-bottom', '0.2em')
		:css('font-size', '110%')
		:attr('colspan', cspan)	

	for k, v in pairs(index) do
		text = args['dritte'..v] and 'center' or 'left' 
		if args['zweite'..v] or args['farbez'..v] or args['unter'..v] or args['datei'..v] then
			row = root:tag('tr')
			if args['unter'..v] then
				row:tag('td')
					:wikitext(args['unter'..v])
					:css('font-weight', 'bold')
					:css('text-align', 'center')
					:css('background-color', '#EBEBFF')
					:css('padding-top', '0.3em')
					:css('padding-bottom', '0.3em')
					:css('padding-left', '0.5em')
					:css('padding-right', '0.5em')
					:attr('colspan', cspan)
			elseif args['datei'..v] then
				row:tag('td')
					:wikitext(args['datei'..v])
					:css('text-align', 'center')
					:css('vertical-align', 'top')
					:attr('colspan', cspan)
			elseif args['farbez'..v] then
				row:tag('td')
					:css('background-color', 'rgb(170 170 170 / 0.1)')
				row:tag('td')
					:wikitext('<div style="background-color:#'..args['farbez'..v]..';height:0.8em;width:100%></div>')
				if args['farbed'..v] then
					row:tag('td')
						:wikitext('<div style="background-color:#'..args['farbed'..v]..';height:0.8em;width:100%></div>')
					if args['farbev'..v] then
						row:tag('td')
							:wikitext('<div style="background-color:#'..args['farbev'..v]..';height:0.8em;width:100%></div>')
					end
				end
			else
				row:tag('td')
					:wikitext(args['name'..v] or '')
					:css('font-weight', 'bold')
					:css('background-color', 'rgb(170 170 170 / 0.1)')
					:css('color', 'var(--color-base, #202122)')
					:css('vertical-align', 'top')
					:css('padding-top', '0.3em')
					:css('padding-bottom', '0.3em')
					:css('padding-left', '0.3em')
					:css('padding-right', '0.8em')
					:css('border-top', '0.1px solid #E6E6E6')
			end
		end
		if args['zweite'..v] then
			if dritte then
				if args['dritte'..v] then
					row:tag('td')
						:wikitext(args['zweite'..v])
						:css('text-align', text)
						:css('padding-top', '0.3em')
						:css('padding-bottom', '0.3em')
						:css('padding-left', '0.2em')
						:css('padding-right', '0.2em')
						:css('border-top', '0.1px solid #E6E6E6')
						:css('vertical-align', 'top')
						:css('max-width', args['vierte'..v] and '112px' or '135px')
					row:tag('td')
						:wikitext(args['dritte'..v])
						:css('text-align', text)	
						:css('padding-top', '0.3em')
						:css('padding-bottom', '0.3em')
						:css('padding-left', '0.2em')
						:css('padding-right', '0.2em')
						:css('border-top', '0.1px solid #E6E6E6')
						:css('vertical-align', 'top')
						:css('max-width', args['vierte'..v] and '112px' or '135px')
					if args['vierte'..v]  then
						row:tag('td')
							:wikitext(args['vierte'..v])
							:css('text-align', text)
							:css('padding-top', '0.3em')
							:css('padding-bottom', '0.3em')
							:css('padding-left', '0.2em')
							:css('padding-right', '0.2em')
							:css('vertical-align', 'top')
							:css('border-top', '0.1px solid #E6E6E6')
							:css('max-width', '112px')
					end
				else
					row:tag('td')
						:wikitext(args['zweite'..v])
						:css('text-align', text)						
						:css('padding-top', '0.3em')
						:css('padding-bottom', '0.3em')
						:css('padding-left', '0.2em')
						:css('padding-right', '0.2em')
						:css('border-top', '0.1px solid #E6E6E6')
						:css('max-width', '135px')
						:css('vertical-align', 'top')
						:attr('colspan', vierte and 3 or 2)
				end
			else
				row:tag('td')
					:wikitext(args['zweite'..v])
						:css('text-align', text)
						:css('padding-top', '0.3em')
						:css('padding-bottom', '0.3em')
						:css('padding-left', '0.3em')
						:css('padding-right', '0.3em')
						:css('vertical-align', 'top')
						:css('border-top', '0.1px solid #E6E6E6')
						:css('max-width', '320px')
				end
			end
		end
	return root
end

return p