ФЭНДОМ


local infoboxSeries = {}
 
function infoboxSeries.create( frame )
    local numToString = function( num )
        if num == 1 then
            return 'Первый'
        elseif num == 2 then
            return 'Второй'
        elseif num == 3 then
            return 'Третий'
        elseif num == 4 then
            return 'Четвёртый'
        elseif num == 5 then
            return 'Пятый'
        elseif num == 6 then
            return 'Шестой'
        elseif num == 7 then
            return 'Седьмой'
        elseif num == 8 then
            return 'Восьмой'
        elseif num == 9 then
            return 'Девятый'
        elseif num == 10 then
            return 'Десятый'
        elseif num == 11 then
            return 'Одинадцатый'
        end
    end
    local args = frame.args
    local seriesApi = require( 'Модуль:Серии' )
    local library = require( 'Модуль:Библиотека' )
    local parser1 = library.parser.create( 'standart' )
    local parser2 = library.parser.create({
        baseSettingName = 'standart',
        actions = {
            separators = 'replace'
        },
        separators = {
            [1] = { ',', '<br />' }
        }
    })
    local commonInfobox = require( 'Модуль:Обычный инфобокс' )
    local pageName = mw.title.getCurrentTitle().text
    local currentEpisode = seriesApi:getEpisode( pageName, 'pageName' )
    if not currentEpisode then
        return '<span style="color: red">Ошибка. Данной серии не существует</span>[[Категория:Pages with script errors]]'
    end
    local nextEpisode = seriesApi:getEpisode( currentEpisode.totalEpisodeNumber + 1 )
    local previousEpisode = seriesApi:getEpisode( currentEpisode.totalEpisodeNumber - 1 )
    local infobox, image
    if args[ 'изображение' ] then
        image = args[ 'изображение' ]
    else
        image = pageName..' изображение.png'
    end
    local infobox = commonInfobox.create( currentEpisode.name, image )
    infobox:addHeader( 'Информация' )
    infobox:addRow( '№'..currentEpisode.seasonNumber, 'Сезон:' )
    infobox:addRow( '№'..currentEpisode.episodeNumber, 'Серия в сезоне:' )
    infobox:addRow( '№'..currentEpisode.totalEpisodeNumber, 'Серия в сериале:' )
    if (args[ 'эфир' ] and args[ 'эфир' ] ~= '') or (args[ 'эфир рф' ] and args[ 'эфир рф' ] ~= '') then
        local broadcast = ''
        local title
        if args[ 'эфир' ] and args[ 'эфир' ] ~= '' then
            broadcast = broadcast..args[ 'эфир' ]
        end
        if args[ 'эфир' ] and args[ 'эфир' ] ~= '' and args[ 'эфир рф' ] and args[ 'эфир рф' ] ~= '' then
            broadcast = broadcast..'<br />'
            title = 'Даты выхода в эфир: '
        else
            title = 'Дата выхода в эфир: '
        end
        if args[ 'эфир рф' ] and args[ 'эфир рф' ] ~= '' then
            broadcast = broadcast..args[ 'эфир рф' ]..' (РФ)'
        end
        infobox:addRow( broadcast, title )
    end
    if args[ 'сценаристы' ] and args[ 'сценаристы' ] ~= '' then
        local title
        if mw.ustring.find( args[ 'сценаристы' ], '[^\\],[^,]' ) then
            title = 'Сценаристы:'
        else
            title = 'Сценарист:'
        end
        infobox:addRow( parser2:parse( args[ 'сценаристы' ] ), title )
    end
    if args[ 'раскадровка' ] and args[ 'раскадровка' ] ~= '' then
        infobox:addRow( parser2:parse( args[ 'раскадровка' ] ), 'Раскадровка:' )
    end
    local characters = 0
    if args[ 'персонажи' ] and args[ 'персонажи' ] ~= '' then
        if mw.ustring.find( args[ 'персонажи' ], '[^\\],[^,]' ) then
            characters = 2
        else
            characters = 1
        end
    end
    local songs = 0
    if args[ 'песни' ] and args[ 'песни' ] ~= '' then
        if mw.ustring.find( args[ 'песни' ], '[^\\],[^,]' ) then
            songs = 2
        else
            songs = 1
        end
    end
    if characters == 1 then
        infobox:addRow( parser2:parse( args[ 'персонажи' ] ), 'Главный персонаж:' )
    end
    if songs == 1 then
        infobox:addRow( parser2:parse( args[ 'песни' ] ), 'Песня:' )
    end
    if characters == 2 then
        infobox:addHeader( 'Главные персонажи' )
        infobox:addRow( parser1:parse( args[ 'персонажи' ] ) )
    end
    if songs == 2 then
        infobox:addHeader( 'Песни' )
        infobox:addRow( parser1:parse( args[ 'песни' ] ) )
    end
    infobox:addHeader( 'См. также' )
    infobox:addRow( '[[Стенограммы/'..currentEpisode.name..'|Стенограмма]] • [['..pageName..'/Галерея|Галерея]] • [[Отсылки/'..numToString( currentEpisode.seasonNumber )..' сезон#'..currentEpisode.name..'|Отсылки]]' )
    infobox:addHeader( 'Навигация' )
    local linkNext, linkPrevious
    if nextEpisode then
        linkNext = '[['..nextEpisode.pageName..'|'..nextEpisode.name..']]'
    else
        linkNext = 'TBA'
    end
    if previousEpisode then
        linkPrevious = '[['..previousEpisode.pageName..'|'..previousEpisode.name..']]'
    else
        linkPrevious = 'N/A'
    end
    infobox:addNav( linkPrevious, linkNext )
    return infobox:getInfobox()
end
 
return infoboxSeries
Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA , если не указано иное.