Module:CareerList: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
PeaceDeadC (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
local p = {} |
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 |
end |
||
function p. |
function p.table(frame) |
||
local list = 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, row in ipairs(rows) 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) |
|||
html |
|||
:tag('th') |
|||
:wikitext(config[site].name or "") |
|||
:css('background-color', '#F2F2F2') |
|||
:wikitext(": ") |
|||
:wikitext(header) |
|||
end |
|||
:attr("href", url) |
|||
:wikitext(alias) |
|||
-- Строки таблицы |
|||
:done() |
|||
for i, row in ipairs(cells) do |
|||
html:wikitext('\n|-') |
|||
for j, cell in ipairs(row) do |
|||
html:addChild(cell) |
|||
end |
|||
end |
|||
return tostring(html) |
|||
end |
end |
||
Revision as of 02:09, 13 March 2023
Documentation for this module may be created at Module:CareerList/doc
local p = {} -- загрузка конфигурационного файла local cfg = mw.loadData('Module:CareerList/config') -- функция для определения ссылки на сайт local function getSiteLink(site, id) if cfg[site] then return cfg[site].url:gsub('$1', id) end end -- функция для создания ячейки таблицы 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.table(frame) local list = frame.args.list if not list then return '' end -- Разбиение на строки local rows = mw.text.split(list, '\n') local cells = {} -- Создание ячеек for i, row in ipairs(rows) 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 html = mw.html.create() html :tag('table') :addClass('wikitable careerlist') :css('background-color', '#F2F2F2') :css('width', '100%') :css('max-width', 'none') :css('table-layout', 'fixed') :wikitext('\n|-') -- Заголовок таблицы for i, header in ipairs(cfg.header) do html :tag('th') :css('background-color', '#F2F2F2') :wikitext(header) end -- Строки таблицы for i, row in ipairs(cells) do html:wikitext('\n|-') for j, cell in ipairs(row) do html:addChild(cell) end end return tostring(html) end return p