Действия

Модуль

Ukraine map

Материал из ВикиВоины

0.00
(0 голосов)

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

local p = {}
local cacheModule = require('Module:Countries/Cache')

function p.generateAllCodes(frame)
    local result = ''
    local args = frame:getParent().args
    -- Список всех стран и соответствующих параметров
    local countries = {
{name = 'Винницкая область', id = 'Vinnytsya'},
{name = 'Волынская область', id = 'Volyn'},
{name = 'Днепропетровская область', id = 'Dnipr'},
{name = 'Донецкая область', id = 'Donetsk'},
{name = 'Житомирская область', id = 'Zhytomyr'},
{name = 'Закарпатская область', id = 'Transcarpathia'},
{name = 'Запорожская область', id = 'Zaporizhzhya'},
{name = 'Ивано-Франковская область', id = 'Ivano-Frankivsk'},
{name = 'Киев', id = 'Kiev-City'},
{name = 'Киевская область', id = 'Kiev'},
{name = 'Кировоградская область', id = 'Kirovohrad'},
{name = 'Крым', id = 'Crimea'},
{name = 'Луганская область', id = 'Luhansk'},
{name = 'Львовская область', id = 'Lviv'},
{name = 'Николаевская область', id = 'Mykolayiv'},
{name = 'Одесская область', id = 'Odessa'},
{name = 'Полтавская область', id = 'Poltava'},
{name = 'Ровненская область', id = 'Rivne'},
{name = 'Севастополь', id = 'Sevastopol'},
{name = 'Сумская область', id = 'Sumy'},
{name = 'Тернопольская область', id = 'Ternopil'},
{name = 'Харьковская область', id = 'Kharkiv'},
{name = 'Херсонская область', id = 'Kherson'},
{name = 'Хмельницкая область', id = 'Khmelnytskyy'},
{name = 'Черкасская область', id = 'Cherkasy'},
{name = 'Черниговская область', id = 'Chernihiv'},
{name = 'Черновицкая область', id = 'Chernivtsi'},
    }
 -- Перебираем все страны и генерируем код для каждой
    for i, country in ipairs(countries) do
        local countryImage = args[country.name .. '-изображение'] or ''
        local countryTitle = args[country.name .. '-заголовок'] or ''
        local countryText = args[country.name .. '-текст'] or ''

        if countryImage ~= '' then
            local countryCode = p.generateCountryCode(frame, country.name, country.id, countryImage, countryTitle, countryText)
            result = result .. countryCode
        end
    end

    return result
end

function p.generateCountryCode(frame, country, id, image, title, text)
    local idAttr = mw.uri.encode(id)
    local cdPopupCode = mw.html.create()
        :tag('div')
            :addClass('cd-popup')
            :attr('id', idAttr)
            :tag('div')
                :addClass('cd-popup-container')
                :tag('div')
                    :addClass('popup-content')
                    :wikitext("[[File:" .. id .. ".png|30px|]] " .. country .. " ")
                :done()
                :tag('div')
                    :addClass('cd-popup-image')
                    :wikitext(image)
                :done()
                :tag('div')
                    :addClass('title')
                    :wikitext(title)
                :done()
                :tag('div')
                    :addClass('height-popup-limit')
                    :wikitext('\n' .. text)
                :done()
            :done()

    local rowWrap = mw.html.create()
        :tag('div')
            :addClass('row-wrap')
            :tag('div')
                :addClass('row valign-middle wikitable-row')
                :tag('div')
                    :addClass('large-2 columns table-image')
                    :wikitext(image)
                :done()
                :tag('div')
                    :addClass('large-2 columns')
                    :wikitext(title)
                :done()
                :tag('div')
                    :addClass('large-8 columns')
                    :tag('div')
                        :addClass('height-limit')
                        :wikitext('\n* Область: ' .. ' ' .. ("[[File:" .. id .. ".png|30px|]] " .. country .. " "))
                        :wikitext('\n' .. text)
                    :done()
                :done()
            :done()

    local result = mw.html.create()
        :node(rowWrap)
        :node(cdPopupCode)

    return tostring(result)
end

function p.saveToCache(frame)
    local key = frame:preprocess('{{PAGENAME}}')
    local data = p.generateAllCodes(frame)
    cacheModule.saveData(key, data)
    return ''
end

return p