Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

Модуль:Infobox

Материал из YastreWiki

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

local p = {}

local function clean(val)
    if val == '' or val == nil then return nil end
    return mw.text.trim(val)
end

function p.render(frame)
    local args = frame:getParent().args
    local title = clean(args['название']) or mw.title.getCurrentTitle().text
    local image = clean(args['изображение'])
    local caption = clean(args['подпись'])

    local root = mw.html.create('table')
    root:addClass('infobox')

    root:tag('caption')
        :addClass('infobox-title')
        :wikitext(title)

    if image then
        local imageRow = root:tag('tr'):addClass('infobox-image-row')
        local imageCell = imageRow:tag('td')
            :attr('colspan', '2')
            :addClass('infobox-image')
            
        imageCell:wikitext(string.format('[[Файл:%s|frameless|280px]]', image))
        
        if caption then
            imageCell:tag('div')
                :addClass('infobox-caption')
                :css('color', '#b0b0b0')
                :css('font-size', '90%')
                :css('margin-top', '4px')
                :wikitext(caption)
        end
    end

    local function addRow(label, data)
        local val = clean(data)
        if val then
            local row = root:tag('tr'):addClass('infobox-row')
            row:tag('th')
                :addClass('infobox-label')
                :wikitext(label)
            row:tag('td')
                :addClass('infobox-data')
                :wikitext(val)
        end
    end

    addRow('Имя', args['имя'])
    addRow('Описание', args['описание'])
    addRow('Дата создания', args['дата создания'])
    addRow('Подписчики', args['подписчики'])
    addRow('Просмотры', args['просмотры'])
    addRow('Ссылки', args['ссылки'])

    return tostring(root)
end

return p