Toggle menu
14
229
68
27.1K
Kenshi Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

This module is used for Template:Blocks.

Usage

To use this module, add the following code to your wiki page:

{{#invoke:Blocks|main}}

Inputs

See Template:Blocks/doc.

Outputs

This module outputs a single string containing the HTML markup for the generated blocks. Each block will include:

  • The section name (if provided) as an <h2> heading, followed by an edit link (either to that page or the transcluded page if a page title is passed).
  • The transcluded content from the specified page or the provided content, wrapped in a <div> with the class blocks-block.

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.fullUrl(pageName, {action = 'edit'})
            elseif content then
                editLink = mw.uri.fullUrl(mw.title.getCurrentTitle().prefixedText, {action = 'edit'})
            end
            local encodedEditLink = mw.text.encode(tostring(editLink))
            local editButton = mw.html.create('span')
                :addClass('mw-editsection plainlinks')
                :wikitext('[ [' .. encodedEditLink .. ' edit] ]')

            local heading = mw.html.create('h2')
                :wikitext(sectionName)
                :node(editButton)
            
            local headingContainer = mw.html.create('div')
                :addClass('heading-container')
                :node(heading)
                
            pageDiv:node(headingContainer)
        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