模块:历史活动

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

此模块的文档可以在模块:历史活动/doc创建

--
--修改自模块navbox
--

local p = {}

local args--存参数
local frame
local anums = {}--存行数

--添加行
function addTableRow(tbl)
    return tbl:tag('tr')
end

--处理表头
function renderHeaderRow(tbl)

    local headerRow = addTableRow(tbl)
    headerRow
        :tag('th')
            :wikitext('活动名称')
            :css('width', '30%')
            :attr('scope', 'column')
        :done()
        :tag('th')
            :wikitext('活动说明')
            :css('width', '70%')
            :attr('scope', 'column')
        :done()

end

--处理某一行数据
function renderListRow(tb1, anum)
    local row = addTableRow(tb1)--添加行,并将当前行传给row

    if args['a' .. anum] then
        local activity = row:tag('td')--添加单元格,并将该单元格传给activity
        activity
        :attr('align', 'center')--单元格样式
        :wikitext(args['a' .. anum])
    end
    
    local info = row:tag('td')--再添加单元格,并将该单元格传给info

    info
    :wikitext(args['i' .. anum])--单元格样式

end

--处理表格
function renderMainTable()
    local tb1 = mw.html.create('table')--创建table
        --.attr('cellspacing', 0)--在这里table添加样式
        :addClass('wikitable')
        :addClass('mw-collapsible')
        :addClass('mw-collapsed')
        :css('width', '60%')
    
    renderHeaderRow(tb1)
    for i, anum in ipairs(anums) do--循环处理每一行数据
        renderListRow(tb1, anum)
    end

    return tb1
end

function p._historicalActivity(Args)
    args = Args
    
    for k, v in pairs(args) do--计算行数
        local anum = ('' .. k):match('^a(%d+)$')
        if anum then table.insert(anums, tonumber(anum)) end
    end
    table.sort(anums)

    --处理表格
    local tb1 = renderMainTable()

    local res = mw.html.create()
    res:node(tb1)
 
    return tostring(res)
end

function p.historicalActivity(frame)
    local args = {}
    local parent_args = frame:getParent().args;--获取页面传来得参数,而不是模板的参数

    -- Out of order parsing bug.
    -- 不懂
    local temp;
    for i = 1, 50 do
        temp = parent_args["a" .. tostring(i)];
        temp = parent_args["i" .. tostring(i)];
    end
    
    --将获取的参数传给args
    for k, v in pairs(parent_args) do
        if v ~= '' then
            args[k] = v
        end
    end
    return p._historicalActivity(args)
end

return p