Jump to content

Module:Navigation header

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Harej (talk | contribs) at 23:07, 9 May 2023. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local p = {}

function p.main(frame)
    local parent = frame:getParent()
    local pages = {}
    local index = 1

    while parent.args['page' .. index] or parent.args['content' .. index] do
        local pageName = parent.args['page' .. index]
        local content = parent.args['content' .. index]
        local sectionName = parent.args['section' .. index]
        local pageDiv = mw.html.create('div'):addClass('blocks-block')

        if sectionName then
            local editLink
            if pageName then
                editLink = mw.uri.makeFullUrl(pageName, {action = 'edit', section = tostring(index)})
            elseif content then
                editLink = mw.uri.makeFullUrl(mw.title.getCurrentTitle().prefixedText, {action = 'edit', section = tostring(index)})
            end
            local editButton = mw.html.create('span')
                :addClass('mw-editsection')
                :wikitext('[' .. editLink .. ' edit]')
            pageDiv:wikitext('\n==' .. sectionName .. '== ' .. tostring(editButton))
        end

        if pageName then
            local transcludedContent = frame:expandTemplate{title = pageName}
            pageDiv:wikitext('\n' .. transcludedContent)
        elseif content then
            pageDiv:wikitext('\n' .. content)
        end

        table.insert(pages, pageDiv)
        index = index + 1
    end

    if #pages == 0 then
        return ''
    end

    local mainDiv = mw.html.create('div')
    for _, pageDiv in ipairs(pages) do
        mainDiv:node(pageDiv)
    end

    return tostring(mainDiv)
end

return p