Модуль:CategoryMenu

Материал из Space Station 14 Вики

Для документации этого модуля может быть создана страница Модуль:CategoryMenu/doc

local p = {}

function p.generate(frame)
    local args = frame:getParent().args
    local html = mw.html.create()

    -- Контейнер для категорий
    local categoriesDiv = html:tag('div'):addClass('categories')

    -- Контейнер для меню и контента
    local mainContainer = html:tag('div'):addClass('main-container')
    local menuContainer = mainContainer:tag('div'):addClass('menu-container')
    local contentContainer = mainContainer:tag('div'):addClass('content')

    -- Проходим по всем категориям
    local i = 1
    while args['category' .. i] do
        local category = args['category' .. i]
        categoriesDiv:tag('div'):addClass('category' .. i):wikitext(category)

        -- Создаём меню для этой категории
        local menu = menuContainer:tag('div'):addClass('menu'):addClass('category' .. i .. '-menu')
        local j = 1
        while args['category' .. i .. '-paragraph' .. j] do
            local paragraph = args['category' .. i .. '-paragraph' .. j]
            local paragraphContent = args['category' .. i .. '-paragraph' .. j .. '-content']
            menu:tag('div'):addClass('category' .. i .. '-paragraph' .. j):wikitext(paragraph)
            if paragraphContent then
                contentContainer:tag('div'):addClass('category' .. i .. '-paragraph' .. j .. '-content'):wikitext(paragraphContent)
            else
                contentContainer:tag('div'):addClass('category' .. i .. '-paragraph' .. j .. '-content'):wikitext('Контент отсутствует')
            end
            j = j + 1
        end
        i = i + 1
    end

    -- Возвращаем сгенерированный HTML-код
    return tostring(html)
end

return p