如果你看到本段文字,说明该页面未正常加载全局JS,部分功能将无法使用,请点击 刷新 重新加载页面。
如果打开页面显示缩略图创建出错,请点击刷新或页面右上WIKI功能中的刷新按钮清除页面缓存并刷新,如果还有问题,请多尝试几次。
全站通知:

模块:图鉴立绘

来自碧蓝航线WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

立绘面板

{{#invoke: 图鉴立绘 | 立绘面板
| 名称 = 平海
| 立绘 = 通常、泳装、中秋
| 通常 = [[File:平海立绘.jpg|200px]]
| 泳装 = [[File:平海换装.jpg|200px]]
| 中秋 = [[File:平海换装2.jpg|200px]]
}}

{{#invoke: 图鉴立绘 | 立绘面板
| 名称 = 平海
| 立绘 = 通常、泳装、中秋
| 通常立绘 = [[File:平海立绘.jpg|200px]]
| 泳装立绘 = [[File:平海换装.jpg|200px]]
| 中秋立绘 = [[File:平海换装2.jpg|200px]]
}}
  • 通常
  • 泳装
  • 中秋
平海立绘.jpg
平海换装.jpg
平海换装2.jpg

兼容性与默认值

{{#invoke: 图鉴立绘 | 立绘面板
| 名称 = 平海
| 立绘 = 
}}
  • 通常
  • 换装
  • 改造
  • 结婚
平海立绘.jpg
平海换装.jpg
平海改造.jpg
请上传文件『平海结婚.jpg』,文件大小不超过2M。

模板内调用

若要在模板内添加调用模块,则可以直接将模块参数作为模板参数传递。

例如,在模板:示例模板中添加如下代码

{{#invoke: 图鉴立绘 | 模板入口}}

则在要引用模板的模板中添加如下代码

{{模板:示例模板 
| 名称 = 平海
| 立绘 = 通常、泳装、中秋
| 通常立绘 = [[File:平海立绘.jpg|200px]]
| 泳装立绘 = [[File:平海换装.jpg|200px]]
| 中秋立绘 = [[File:平海换装2.jpg|200px]]
| 其他参数 = ....
}}

这相当于在模板:示例模板中直接添加了如下代码

{{#invoke: 图鉴立绘 | 立绘面板
| 名称 = 平海
| 立绘 = 通常、泳装、中秋
| 通常立绘 = [[File:平海立绘.jpg|200px]]
| 泳装立绘 = [[File:平海换装.jpg|200px]]
| 中秋立绘 = [[File:平海换装2.jpg|200px]]
}}

HTML代码

模块生成如下的HTML代码。 配合MediaWiki:Common.cssMediaWiki:Common.js实现页面动态效果。

<div class="TabContainer">
<ul class="">
<li class="tab_li active"> 通常</li>
<li class="tab_li"> 泳装</li>
<li class="tab_li"> 中秋</li>
</ul>
<div class="Contentbox2">
<div class="tab_con active">
[[File:宁海立绘.jpg|200px]]
</div><div class="tab_con">
[[File:宁海换装.jpg|200px]]
</div><div class="tab_con">
[[File:宁海换装2.jpg|200px]]
</div>
</div>
</div>

--[[
{{#invoke: 图鉴立绘 | 立绘面板
| 名称 = 平海
| 立绘 = 通常、泳装、中秋、结婚
| 通常 = [File:平海立绘.jpg]
| 泳装 = [File:平海换装.jpg]
| 中秋 = [File:平海换装2.jpg]
}}

]]


Text = mw.text
Text.IsNullOrEmpty = function(text)
	return not text or Text.trim(text) == ''
end

SEPERTATOR = '、'
INFO_UPLOAD_FILE = '请上传文件『[[Special:上传文件|%s]]』,文件大小不超过2M。'
DEFAULT_FILE = '[[File:%s|350px|link=]]'


local p = {}


--------------------------------------------------
-- 主要过程
--------------------------------------------------
--解析参数列表
function ParsingParameters(arg)
	local data = {all = {}}
	local KEY_0 = '通常'
	
	for key in Text.gsplit(arg['立绘'], SEPERTATOR) do
		table.insert(data.all, key)
		data[key] = arg[key..'立绘'] or arg[key]
	end
	
	local shipname = arg['名称']
	if shipname and Text.IsNullOrEmpty(data[KEY_0]) then
		data[KEY_0] = ifExist(shipname..'立绘.jpg', 'FILE')
					and DEFAULT_FILE:format(shipname..'立绘.jpg')
					or INFO_UPLOAD_FILE:format(shipname..'立绘.jpg');
	end
	return data
end

--生成默认参数
function GetDefaultParameters(shipname)
	
	if Text.IsNullOrEmpty(shipname) then
		return {
				all = {'通常'};
				['通常'] = INFO_UPLOAD_FILE:format('XX立绘.jpg');
			}
	end
	
	return {
		all = {'通常', '换装', '改造', '结婚'};
		['通常'] = ifExist(shipname..'立绘.jpg', 'FILE')
					and DEFAULT_FILE:format(shipname..'立绘.jpg')
					or INFO_UPLOAD_FILE:format(shipname..'立绘.jpg');
		['换装'] = ifExist(shipname..'换装.jpg', 'FILE')
					and DEFAULT_FILE:format(shipname..'换装.jpg')
					or INFO_UPLOAD_FILE:format(shipname..'换装.jpg');
		['改造'] = ifExist(shipname..'改造.jpg', 'FILE')
					and DEFAULT_FILE:format(shipname..'改造.jpg')
					or INFO_UPLOAD_FILE:format(shipname..'改造.jpg');
		['结婚'] = ifExist(shipname..'结婚.jpg', 'FILE')
					and DEFAULT_FILE:format(shipname..'结婚.jpg')
					or INFO_UPLOAD_FILE:format(shipname..'结婚.jpg');
	}
end

--从数据包生成整个面板
--[[
TabContainer
	ul
		li.tab_li.active
		li.tab_li

	div
		.tab_con.active
		.tab_con
]]
function GenerateWholePanel(data)
	local content = [[<div class="TabContainer"><ul>]]
	
	for i, key in ipairs(data.all) do
		content = content..([[<li class="tab_li %s">%s</li>]]
			):format(
				i == 1 and 'active' or '',
				key
			)
	end
	
	content = content .. [[</ul><div>]]
	
	for i, key in ipairs(data.all) do
		content = content..([[<div class="tab_con %s">%s</div>]]
			):format(
				i == 1 and 'active' or '',
				data[key] or ''
			)
	end
	
	return content..[[</div></div>]]
end
p.GenerateWholePanel = GenerateWholePanel


--------------------------------------------------
-- 函数入口
--------------------------------------------------
p['立绘面板'] = function (frame)
	local data = Text.IsNullOrEmpty(frame.args['立绘']) 
				and GetDefaultParameters(frame.args['名称'])
				or ParsingParameters(frame.args)
	
	return GenerateWholePanel(data)
end

p['模板入口'] = function(frame)
	return p['立绘面板'](frame:getParent())
end

p['测试'] = function (frame)
	return Text.nowiki(p['立绘面板'](frame))
end



--------------------------------------------------
-- 工具函数
--------------------------------------------------
--页面是否存在
function ifExist(title, ns)
	return mw.title.new(title, ns).exists
end

return p