模块:三阶勋章
外观
此模块的文档可以在模块:三阶勋章/doc创建
--
--处理勋章的模块
--
local p = {}
local converNum={'【I】','【II】','【III】'}
local defaultEXP={'30','90','永久'}
--处理单个勋章
function renderAwardDiv(awardNum, args)
--添加新的div
local mainAwardDiv = mw.html.create('div')
for i=1,3,1 do
local awardDiv = mainAwardDiv:tag('div')
awardDiv
--div样式
:cssText('width:200px; margin:15px;'..
' display:inline-block; vertical-align:top;'..
' position:relative; text-align:center; ')
:wikitext(args['file'..awardNum..'_'..i] or
('[[File:'..args['file' .. awardNum]..
converNum[i]..'.gif]]'))
:wikitext('<br>')
:wikitext((args['name' .. awardNum..'_'..converNum[i]]) or
(args['name' .. awardNum]..converNum[i]))
--创建表格
local infoTable = mw.html.create('table')
infoTable
:cssText('margin:auto; text-align:center;'..
'max-width:200px; min-width:200px;')
:attr('border', '1')
:attr('cellspacing', '0')
local EXP = infoTable:tag('tr')
EXP
:tag('th')
:wikitext('有效期')
:done()
:tag('td')
:wikitext((args['EXP' .. awardNum..'_'..i]) or
args['EXP' .. awardNum] or
defaultEXP[i])
:done()
local author = infoTable:tag('tr')
author
:tag('th')
:wikitext('作者')
:done()
:tag('td')
:wikitext((args['author' .. awardNum..'_'..i]) or
args['author' .. awardNum])
:done()
local description = infoTable:tag('tr')
description
:tag('td')
:attr('colspan', '2')
:css('padding', '0 10px 0 10px')
:wikitext((args['description' .. awardNum..'_'..i]) or
args['description' .. awardNum] or
' ')
:done()
awardDiv:node(infoTable)
end
return mainAwardDiv
end
--处理表格
function renderMainDiv(awardNums, args)
local mainDiv = mw.html.create('div')--创建mainDiv
--在这里mainDiv添加样式
:css('overflow', 'auto')
:css('max-width', '800px')
--循环处理每一个勋章
for i, awardNum in ipairs(awardNums) do
mainDiv:node(renderAwardDiv(awardNum, args))
mainDiv:tag('hr')
end
return mainDiv
end
function p.awards(frame)
local args={}
local awardNums={}
--获取页面传来得参数,而不是模板的参数
local parent_args = frame:getParent().args;
--将获取的参数传给args
for k, v in pairs(parent_args) do
if v ~= 'nil' then
args[k] = v
end
end
for k, v in pairs(args) do
--依靠name个数,计算勋章个数
local awardNum = ('' .. k):match('^name(%d+)$')
if awardNum then table.insert(awardNums, tonumber(awardNum)) end
end
table.sort(awardNums)
--处理勋章
local mainDiv = renderMainDiv(awardNums, args)
return tostring(mainDiv)
end
return p