ФЭНДОМ


local p = {}
local rates = require('Модуль:Util/Ratings')
 
-- Служебные функции
local function length ( t )
    local count = 0
    for _ in pairs(t) do count = count + 1 end
    return count    
end
 
local function note ( n )
    return tostring(
        mw.html.create("span")
            :css({
                ['font-weight'] = 'bold',
                ['color']       = '#aaaaaa'
            })
            :wikitext(n)
    )
end
 
-- Диалог
function p.dialog ( frame )
    frame = (frame:getParent() or frame)
 
    if not frame.args[1] then
        return perror("Неправильное заполнение или нет значений для безымянных параметров")
    end
 
    local header = frame.args["header"]
    local blockquote = mw.html.create("div")
        :css({
            ["border-left"]    = "5px solid #c28b1f",
            ["display"]        = "flex",
            ["flex-direction"] = "column",
            ["padding-left"]   = "6px"
        })
 
    if header then
        blockquote
        :tag("em")
        :wikitext( mw.text.trim(header) )
        :done()
    end
 
    for i = 1, length(frame.args) do
        if frame.args[i] then
            blockquote
            :tag("span")
            :wikitext( mw.text.trim(frame.args[i]) )
            :done()
        end
    end
 
    return tostring(blockquote)
end
 
-- Вывод рейтинга
function p.rating( frame )
    local code
    if frame.args["code"] then
        code = mw.text.trim(frame.args["code"])
    elseif frame.args["season"] and frame.args["episode"] then 
        local season = frame.args["season"]
        local episode = mw.text.trim(frame.args["episode"])
        episode = #episode < 2 and "0"..episode or episode
 
        code = season..episode
    else
        return error('Должны быть заполнены или «code» или «season» с «episode».', 2)
    end
 
    if rates[code] == "" then
        return note("Нет данных")
    elseif rates[code] == nil then
        return note("Серии нет")
    end
 
    return tostring(
        mw.html.create('span')
        :attr('title', 'Количество зрителей в США в день премьеры')
        :css({
            ["border-bottom"] = "1px dotted black",
            ["cursor"]        = "help"
        })
        :wikitext(rates[code])
    )
end
 
-- Навибокс (специфичный для серий)
function p.ep_navbox ( frame )
    if not frame.args["season"] then
        return error("Должно быть название сезона", 2)
    end
 
    if not frame.args[1] then
        return error("Должен быть заполнен список", 2)
    end
 
    if not rates[ frame.args["season"]..'01' ] then
        return note("Этот сезон ещё не выпустили")
    end
 
    local secondarystyles = {
        ["background"]  = "#c28b1f",
        ["text-align"]  = "center",
        ["font-weight"] = "bold",
        ["padding"]     = "5px"
    }
 
    local template = frame:getParent() or frame
    local templatename = template:getTitle()
    local seasonNumber = mw.text.trim( frame.args["season"] )
 
    local main = mw.html.create('div'):css('width', '100%')
 
    local header = mw.html.create('div')
        :css(secondarystyles)
            :tag('div')
            :css({
                ["position"] = "absolute",
                ["left"] = "5px"
            })
            :wikitext(
                '['..'['..templatename..'|П]]  • ['
                 ..tostring( mw.uri.fullUrl(templatename, "action=edit") )..' Р]'
            )
            :done()
        :wikitext('['..'['..seasonNumber..' сезон]]')
 
    local body = mw.html.create('div'):css('background', '#f9f9f9')
    local list = mw.html.create('ol')
            :css({
                ["display"]         = "flex",
                ["flex-wrap"]       = "wrap",
                ["margin-top"]      = "0",
                ["margin-bottom"]   = "0",
                ["justify-content"] = "space-between"
            })
 
    for i = 1, length(frame.args) do
        if frame.args[i] then
            list
            :tag('li')
            :css({
                ['width']       = '29%',
                ['margin-left'] = '4%'
            })
            :wikitext('['..'['..mw.text.trim(frame.args[i])..']]')
            :done()
        end
    end
 
    body:node(list)
 
    local footer = mw.html.create('div')
        :css(secondarystyles)
        :css({
            ["display"]         = "flex",
            ["justify-content"] = "space-between"
        })
 
    local prevS = tonumber( seasonNumber ) - 1
 
    if prevS == 0 then
        prevS = "N/A"
    else
        prevS = '['..'[:Категория:Серии ('..prevS..' сезон)|← '..prevS..' сезон]]'
    end
 
    local nextS = tonumber( seasonNumber ) + 1
 
    if rates[nextS..'01'] == nil then
        nextS = 'N/A'
    else
        nextS = '['..'[:Категория:Серии ('..nextS..' сезон)|'..nextS..' сезон →]]'
    end
 
    footer
        :tag("div")
        :css({
            ["width"]      = "33%",
            ["text-align"] = "left"
        })
        :wikitext(prevS)
        :done()
        :tag("div")
        :css("width", "33%")
        :wikitext("[".."[:Категория:Сезоны|Другие сезоны]]")
        :done()
        :tag("div")
        :css({
            ["width"] = "33%",
            ["text-align"] = "right"
        })
        :wikitext(nextS)
        :done()
 
    return tostring(
        main
        :node(header)
        :node(body)
        :node(footer)
    )
end
 
return p

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики