模块:三阶勋章

来自SS唯基
跳到导航 跳到搜索

此模块的文档可以在模块:三阶勋章/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
                '&nbsp;')
            :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))
        if i~=#awardNums then mainDiv:tag('hr') end
    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