local p = {}
-- загрузка конфигурационного файла
function p.createCareerListTop(frame)
local cfg = mw.loadData('Module:CareerList/config')
local args = frame.args
local list = args.list or ""
local bgColor = args.bgColor or "#F2F2F2"
local html = mw.html.create()
-- функция для определения ссылки на сайт
html:tag("div")
local function getSiteLink(site, id)
:css("background-color", bgColor)
if cfg[site] then
:wikitext("{| class=\"wikitable career-list\"")
return cfg[site].url:gsub('$1', id)
:wikitext("\n|-" .. "\n!")
end
:wikitext(list)
end
:wikitext("\n|}")
-- функция для создания ячейки таблицы
return tostring(html)
local function makeCell(row, bg)
local cell = {}
local site = row.site:lower()
-- Ячейка 1
cell[1] = mw.html.create('td')
:css('background-color', cfg[site].bg[bg])
:wikitext(cfg[site].text)
-- Ячейка 2
cell[2] = mw.html.create('td')
:wikitext('[[' .. row.site .. '|' .. row.alias .. ']]')
-- Ячейка 3
cell[3] = mw.html.create('td')
:wikitext('[[' .. getSiteLink(site, row.id) .. '|' .. row.id .. ']]')
-- Ячейка 4
cell[4] = mw.html.create('td')
:wikitext(row.alias == '' and mw.title.getCurrentTitle().text or row.alias)
-- Ячейка 5
cell[5] = mw.html.create('td')
:wikitext(row.notes == '' and 'N/A' or row.notes)
return cell
end
function p.createCareerListtable(frame)
local argslist = frame.args.list
if not list then
local site = args.site or ""
return ''
local id = args.id or ""
end
local alias = args.alias or mw.title.getCurrentTitle().text
local notes = args.notes or "N/A"
local html = mw.html.create()
-- Разбиение на строки
local config = mw.loadData("Module:CareerList/config")
local rows = mw.text.split(list, '\n')
local cells = {}
-- Создание ячеек
local url = config[site].url or ""
for i, urlrow =in url:gsubipairs("%$1", idrows) do
local values = mw.text.split(row, '|')
local bg = i % 2 == 0 and 2 or 1
cells[i] = makeCell({
site = values[1],
id = values[2],
alias = values[3] or '',
notes = values[4] or ''
}, bg)
end
-- Создание таблицы
local bgColor = "#FFFFFF"
local html = mw.html.create()
if config[site].type == "Studio" then
html
bgColor = "#DADADA"
:tag('table')
elseif config[site].type == "Website" then
:addClass('wikitable careerlist')
bgColor = "#E7E7E7"
:css('background-color', '#F2F2F2')
end
:css('width', '100%')
:css('max-width', 'none')
:css('table-layout', 'fixed')
:wikitext('\n|-')
-- Заголовок таблицы
html:tag("tr")
for i, header in ipairs(cfg.header) do
:css("background-color", bgColor)
:tag("td")html
:tag('th')
:wikitext(config[site].name or "")
:css('background-color', '#F2F2F2')
:wikitext(": ")
:tagwikitext("a"header)
end
:attr("href", url)
:wikitext(alias)
-- Строки таблицы
:done()
for i, row in :tagipairs("td"cells) do
html:wikitext(notes'\n|-')
for j, cell in :doneipairs(row) do
html:addChild(cell)
end
end
return tostring(html)
end
|