Mô đun:Side box

local yesno = require('Mô đun:Yesno')
local p = {}

local function makeData(args)
	local data = {}

	-- Main table classes
	data.classes = {}
	if yesno(args.metadata) ~= false then
		table.insert(data.classes, 'metadata')
	end
	if args.position and args.position:lower() == 'left' then
		table.insert(data.classes, 'side-box-left')
	else
		table.insert(data.classes, 'side-box-right')
	end
	
	if args.collapsible then
		table.insert(data.classes, 'mw-collapsible')
		if args.collapsible == "collapsed" then
			table.insert(data.classes, 'mw-collapsed')
		end
		data.collapsible = true
	end

	table.insert(data.classes, args.class)
	
	-- Image
	if args.image and args.image ~= 'none' then
		data.image = args.image
	end
	
	-- we have to check to see if a downstream use has plainlist like
	-- Template:Sister_project. also it's the default. wikitext is :(
	if args.textclass == 'plainlist' or not args.textclass then
		data.textclass = 'plainlist'
		data.plainlist_templatestyles = 'Plainlist/styles.css'
	else
		data.textclass = args.textclass
	end

	-- Copy over data that does not need adjusting
	local argsToCopy = {
		-- aria qualities
		'role',
		'labelledby',

		-- Styles
		'style',
		'textstyle',
		'templatestyles',

		-- Above row
		'above',
		'abovestyle',

		-- Body row
		'text',
		'imageright',

		-- Below row
		'below',
	}
	for i, key in ipairs(argsToCopy) do
		data[key] = args[key]
	end

	return data
end

local function renderSidebox(data)
	-- Renders the sidebox HTML.

	-- Table root
	local root = mw.html.create('div')
	root:attr('role', data.role)
		:attr('aria-labelledby', data.labelledby)
		:addClass('side-box')
	for i, class in ipairs(data.classes or {}) do
		root:addClass(class)
	end
	if data.style then
		root:cssText(data.style)
	end
	
	local frame = mw.getCurrentFrame()
	if data.plainlist_templatestyles then
		root:wikitext(frame:extensionTag{
			name = 'templatestyles', args = { src = data.plainlist_templatestyles }
		})
	end

	-- The "above" row
	if data.above then
		local above = root:newline():tag('div')
		above:addClass('side-box-abovebelow')
			:newline()
			:wikitext(data.above)
		if data.textstyle then
			above:cssText(data.textstyle)
		end
		if data.abovestyle then
			above:cssText(data.abovestyle)
		end
	end

	-- The body row
	local body = root:newline():tag('div')
		body:addClass('side-box-flex')
			:addClass(data.collapsible and 'mw-collapsible-content')
			:newline()
	if data.image then
		body:tag('div')
			:addClass('side-box-image')
			:wikitext(data.image)
	end
	local text = body:newline():tag('div')
	text:addClass('side-box-text')
		:addClass(data.textclass)
	if data.textstyle then
		text:cssText(data.textstyle)
	end
	text:wikitext(data.text)
	if data.imageright then
		body:newline():tag('div')
			:addClass('side-box-imageright')
			:wikitext(data.imageright)
	end

	-- The below row
	if data.below then
		local below = root:newline():tag('div')
		below
			:addClass('side-box-abovebelow')
			:wikitext(data.below)
		if data.textstyle then
			below:cssText(data.textstyle)
		end
	end

	root:newline()
	local templatestyles = ''
	if data.templatestyles then
		templatestyles = frame:extensionTag{
			name = 'templatestyles', args = { src = data.templatestyles }
		}
	end
	return frame:extensionTag{
		name = 'templatestyles', args = { src = 'Mô đun:Side box/styles.css' }
	} .. templatestyles .. tostring(root)
end

function p._main(args)
	local data = makeData(args)
	return renderSidebox(data)
end

function p.main(frame)
	local origArgs = frame:getParent().args
	local args = {}
	for k, v in pairs(origArgs) do
		v = v:match('%s*(.-)%s*$')
		if v ~= '' then
			args[k] = v
		end
	end
	return p._main(args)
end

return p
Chúng tôi bán
Bài viết liên quan
Giám sát viên Utahime Iori trường Kyoto Jujutsu Kaisen
Giám sát viên Utahime Iori trường Kyoto Jujutsu Kaisen
Utahime Iori (Iori Utahime?) là một nhân vật trong seri Jujutsu Kaisen, cô là một chú thuật sư sơ cấp 1 và là giám thị học sinh tại trường trung học Jujutsu Kyoto.
Review Phim: The Whole Truth - Lỗ Sâu Sự Thật (2021)
Review Phim: The Whole Truth - Lỗ Sâu Sự Thật (2021)
The Whole Truth kể về một câu chuyện của 2 chị em Pim và Putt. Sau khi mẹ ruột bị tai nạn xe hơi phải nhập viện
Ore wo Suki nano wa Omae dake ka yo Vietsub
Ore wo Suki nano wa Omae dake ka yo Vietsub
Kisaragi Amatsuyu được Cosmos – 1 senpai xinh ngút trời và Himawari- cô bạn thời thơ ấu của mình rủ đi chơi
Karakai Simulation Game Việt hóa
Karakai Simulation Game Việt hóa
Đây là Visual Novel làm dựa theo nội dung của manga Karakai Jouzu no Takagi-san nhằm mục đích quảng cáo cho anime đang được phát sóng