打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
登录后可编辑和发表评论。

Module:Notice

来自Vocawiki

用于{{Notice}}

local p = {}

function p.main(frame)
	local args = frame:getParent().args
	local type = args.type or "info"

	-- 图标(icon)
	local icon = args.icon
	local iconClass = ""
	if icon and icon ~= "" then
		iconClass = " notice-icon-" .. icon
	end

	-- 列表标题(lt)
	local ltHtml = ""
	if args.lt and args.lt ~= "" then
		ltHtml = '<div class="notice-list-title text-sm">' .. args.lt .. '</div>'
	end

	-- 列表(list)
	local listItems = {}
	for i = 1, 50 do
		local key = "l" .. i
		if args[key] and args[key] ~= "" then
			table.insert(listItems, "<li>" .. args[key] .. "</li>")
		end
	end

	local listHtml = ""
	if #listItems > 0 then
		listHtml = '<ul class="notice-list text-sm">' .. table.concat(listItems, "") .. '</ul>'
	elseif args.list and args.list ~= "" then
		listHtml = '<ul class="notice-list text-sm">' .. args.list .. '</ul>'
	end

	-- 详细说明(detail)
	local detailHtml = ""
	if args.detail and args.detail ~= "" then
		detailHtml = '<div class="notice-detail text-sm">' .. args.detail .. '</div>'
	end

	-- 图片(image)
	local image = args.image or ""
	local imageSize = args["image-size"] or "120px"
	local imageHtml = ""
	if image ~= "" then
		local fileWikitext = string.format(
			'[[File:%s|%s|class=notpageimage|link=]]',
			image,
			imageSize
		)
		imageHtml = '<div class="notice-image">' .. fileWikitext .. '</div>'
	end

	-- 基础模式(text)
	local textContent = args.text or args[1]
	if textContent and textContent ~= "" then
	return string.format([[
		<div class="notice notice-%s">
			<div class="notice-icon%s" style="-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;"></div>
			<div class="notice-text text-base">%s</div>
			%s
		</div>
	]], type, iconClass, textContent, imageHtml)
	end

   -- 完整输出
	return string.format([[
		<div class="notice notice-%s">
			<div class="notice-icon%s" style="-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;"></div>
			<div class="notice-text">
				<div class="notice-title text-base">%s</div>
				%s%s%s
			</div>
			%s
		</div>
	]], type, iconClass, args.title or "", ltHtml, listHtml, detailHtml, imageHtml)
	end

return p