Modul:Collapse

CamNet - das Wiki
Version vom 11. September 2023, 15:41 Uhr von imported>Oetterer
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Documentation icon Module documentation

This module DOES NOT implement template {{Collapse}}. It copies that template's function, though.

Usage

{{#invoke:Collapse|main}}

local p = {}
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')

function p._main(args)
	local html = mw.html.create('table')
	local width = args.width or 'auto'
	local tableCss
	if args.float == 'left' then
		tableCss = 'margin:0.2em 0.5em 0.2em 0; width:' .. width .. '; float: left; clear: ' .. (args.clear or 'left')
	elseif args.float == 'right' then
		tableCss = 'margin:0.2em 0 0.2em 0.5em; width:' .. width .. '; float: right; clear: ' .. (args.clear or 'right')
	elseif args.float == 'none' then
		tableCss = 'margin:0.2em 0; width:' .. width .. '; clear: ' .. (args.clear or 'none')
	elseif args.float == 'center' or args.float == 'centre' then
		tableCss = 'margin:0.2em auto; width:' .. width .. '; clear: ' .. (args.clear or 'both')
	else
		tableCss = 'margin: 0.2em auto auto; width:' .. ( args.width or '100%' ) .. '; clear: ' .. (args.clear or 'both')
	end
	html:addClass('mw-collapsible')
		:addClass(yesno(args.expand) and 'mw-uncollapsed' or 'mw-collapsed')
		:addClass(args.class or '')
		:cssText('background-color: ' .. (args.bg1 or 'transparent') .. '; text-align: left; border: '
			.. (args.border or '1px') .. ' solid ' .. ( args['b-color'] or 'silver' ) .. '; '
			.. tableCss .. '; padding: 1px;' )
		:tag('tr')
			:tag('th')
				:cssText('background-color: ' .. (args.bg or '#F0F2F5') .. '; font-size:87%; padding:0.2em 0.3em; text-align:'
					.. ( args.left and 'left' or ( args.center and 'center' or 'left' ) ) .. ( args.fc and '; color: ' .. args.fc or '' ) .. ';' )
				:tag('div')
					:cssText('display: inline; font-size: 115%;')
					:wikitext(args[1] or args.title or args.reason or args.header or args.heading or 'Extended content')
					:done()
				:done()
			:done()
		:tag('tr')
			:tag('td')
				:cssText('border: solid ' .. (args.border2 or '1px silver') .. '; padding: ' .. (args.padding or '8px') .. '; background-color: ' .. (args.bg2 or 'white') .. ';')
				:tag('div')
					:wikitext(args[2] or args.text or args.content)
					:done()
				:done()
			:done()
	return tostring(html)
end

function p.main(frame)
	local args
	if frame == mw.getCurrentFrame() then
		args = getArgs(frame)
	else
		args = frame
	end
	return p._main(args)
end

return p