Модуль:CategoryMenu: различия между версиями

Материал из Space Station 14 Вики
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
local p = {}
local p = {}


-- Функция для рендеринга категории
function p.renderCategory(paragraphs, contents, categoryName, categoryIndex)
function p.renderCategory(paragraphs, contents, categoryName, categoryIndex)
     local html = mw.html.create()
     local html = mw.html.create()
Строка 15: Строка 16:
      
      
     for i, paragraph in ipairs(paragraphs) do
     for i, paragraph in ipairs(paragraphs) do
         categoryMenu:tag('div')
         if paragraph then
            :addClass('category' .. categoryIndex .. '-paragraph' .. i)
            categoryMenu:tag('div')
            :wikitext(paragraph)
                :addClass('category' .. categoryIndex .. '-paragraph' .. i)
                :wikitext(paragraph)
        end
     end
     end
      
      
Строка 24: Строка 27:
      
      
     for i, contentText in ipairs(contents) do
     for i, contentText in ipairs(contents) do
         content:tag('div')
         if contentText then
            :addClass('category' .. categoryIndex .. '-paragraph' .. i .. '-content')
            content:tag('div')
            :wikitext(contentText)
                :addClass('category' .. categoryIndex .. '-paragraph' .. i .. '-content')
                :wikitext(contentText)
        end
     end
     end
      
      
Строка 32: Строка 37:
end
end


-- Главная функция, которая вызывается в шаблоне
function p.main(frame)
function p.main(frame)
     local args = frame:getParent().args
     local args = frame:getParent().args
Строка 59: Строка 65:


             for j = 1, 3 do
             for j = 1, 3 do
                 table.insert(paragraphs, args['category' .. i .. '-paragraph' .. j])
                 table.insert(paragraphs, args['category' .. i .. '-paragraph' .. j] or '')
                 table.insert(contents, args['category' .. i .. '-paragraph' .. j .. '-content'])
                 table.insert(contents, args['category' .. i .. '-paragraph' .. j .. '-content'] or '')
             end
             end



Версия от 19:26, 19 сентября 2024

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

local p = {}

-- Функция для рендеринга категории
function p.renderCategory(paragraphs, contents, categoryName, categoryIndex)
    local html = mw.html.create()
    
    -- Генерация названия категории
    html:tag('div')
        :addClass('category' .. categoryIndex)
        :wikitext(categoryName)

    -- Меню
    local menu = html:tag('div'):addClass('menu-container')
    
    local categoryMenu = menu:tag('div'):addClass('menu category' .. categoryIndex .. '-menu')
    
    for i, paragraph in ipairs(paragraphs) do
        if paragraph then
            categoryMenu:tag('div')
                :addClass('category' .. categoryIndex .. '-paragraph' .. i)
                :wikitext(paragraph)
        end
    end
    
    -- Контент
    local content = html:tag('div'):addClass('content')
    
    for i, contentText in ipairs(contents) do
        if contentText then
            content:tag('div')
                :addClass('category' .. categoryIndex .. '-paragraph' .. i .. '-content')
                :wikitext(contentText)
        end
    end
    
    return tostring(html)
end

-- Главная функция, которая вызывается в шаблоне
function p.main(frame)
    local args = frame:getParent().args
    local html = mw.html.create()
    
    -- Генерация списка категорий
    local categories = html:tag('div'):addClass('categories')
    
    for i = 1, 2 do
        local categoryName = args['category' .. i]
        if categoryName then
            categories:tag('div')
                :addClass('category' .. i)
                :wikitext(categoryName)
        end
    end

    -- Основной контейнер
    local mainContainer = html:tag('div'):addClass('main-container')

    -- Генерация контента для каждой категории
    for i = 1, 2 do
        local categoryName = args['category' .. i]
        if categoryName then
            local paragraphs = {}
            local contents = {}

            for j = 1, 3 do
                table.insert(paragraphs, args['category' .. i .. '-paragraph' .. j] or '')
                table.insert(contents, args['category' .. i .. '-paragraph' .. j .. '-content'] or '')
            end

            mainContainer:wikitext(p.renderCategory(paragraphs, contents, categoryName, i))
        end
    end

    return tostring(html)
end

return p