Module:CareerList: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
PeaceDeadC (talk | contribs) No edit summary |
PeaceDeadC (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
local p = {} |
local p = {} |
||
-- загрузка конфигурационного файла |
|||
local cfg = mw.loadData('Module:CareerList/config') |
local cfg = mw.loadData('Module:CareerList/config') |
||
local function getSiteLink(site) |
|||
-- функция для определения ссылки на сайт |
|||
site = mw.ustring.lower(site) |
|||
local function getSiteLink(site, id) |
|||
local url = cfg[site].url or '' |
|||
local id = cfg[site].id or '' |
|||
return url:gsub('$1', id) |
|||
end |
|||
end |
end |
||
local function makeCell(args, bgcolor) |
|||
-- функция для создания ячейки таблицы |
|||
local site = args.site or '' |
|||
local function makeCell(row, bg) |
|||
local |
local id = args.id or '' |
||
local |
local alias = args.alias or mw.title.getCurrentTitle().text |
||
local notes = args.notes or 'N/A' |
|||
local link = getSiteLink(site):gsub('$1', id) |
|||
-- Ячейка 1 |
|||
local bg = (site == 'Website') and '#E7E7E7' or '#DADADA' |
|||
cell[1] = mw.html.create('td') |
|||
local rowbg = (bgcolor == '#FFFFFF') and '#F3F3F3' or '#FFFFFF' |
|||
:css('background-color', cfg[site].bg[bg]) |
|||
return string.format([[ |
|||
:wikitext(cfg[site].text) |
|||
<tr style="background-color: %s;"> |
|||
<td style="background-color: %s;">%s</td> |
|||
-- Ячейка 2 |
|||
<td style="background-color: %s;"><a href="%s">%s</a></td> |
|||
cell[2] = mw.html.create('td') |
|||
<td>%s</td> |
|||
:wikitext('[[' .. row.site .. '|' .. row.alias .. ']]') |
|||
<td>%s</td> |
|||
</tr> |
|||
-- Ячейка 3 |
|||
]], bgcolor, bg, site, rowbg, link, alias, alias, notes) |
|||
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.main(frame) |
||
local |
local args = frame.args |
||
local list = args.list or '' |
|||
local title = args.title or '' |
|||
local bgcolor = '#F2F2F2' |
|||
end |
|||
local rows = '' |
|||
for row in mw.ustring.gmatch(list, '{{CareerListCell(.-)}}') do |
|||
-- Разбиение на строки |
|||
rows = rows .. makeCell(mw.text.split(row, '|'), bgcolor) |
|||
bgcolor = (bgcolor == '#FFFFFF') and '#F3F3F3' or '#FFFFFF' |
|||
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 string.format([[ |
|||
end |
|||
<table class="wikitable" style="width: 100%; margin: 1em 0; background-color: %s;"> |
|||
<caption>%s</caption> |
|||
return tostring(html) |
|||
<tr> |
|||
<th style="width: 15%;">Type</th> |
|||
<th style="width: 35%;">Name</th> |
|||
<th style="width: 35%;">Alias</th> |
|||
<th style="width: 15%;">Notes</th> |
|||
</tr> |
|||
%s |
|||
</table> |
|||
]], bgcolor, title, rows) |
|||
end |
end |
||
Revision as of 23:17, 12 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)
site = mw.ustring.lower(site)
local url = cfg[site].url or ''
local id = cfg[site].id or ''
return url:gsub('$1', id)
end
local function makeCell(args, bgcolor)
local site = args.site or ''
local id = args.id or ''
local alias = args.alias or mw.title.getCurrentTitle().text
local notes = args.notes or 'N/A'
local link = getSiteLink(site):gsub('$1', id)
local bg = (site == 'Website') and '#E7E7E7' or '#DADADA'
local rowbg = (bgcolor == '#FFFFFF') and '#F3F3F3' or '#FFFFFF'
return string.format([[
<tr style="background-color: %s;">
<td style="background-color: %s;">%s</td>
<td style="background-color: %s;"><a href="%s">%s</a></td>
<td>%s</td>
<td>%s</td>
</tr>
]], bgcolor, bg, site, rowbg, link, alias, alias, notes)
end
function p.main(frame)
local args = frame.args
local list = args.list or ''
local title = args.title or ''
local bgcolor = '#F2F2F2'
local rows = ''
for row in mw.ustring.gmatch(list, '{{CareerListCell(.-)}}') do
rows = rows .. makeCell(mw.text.split(row, '|'), bgcolor)
bgcolor = (bgcolor == '#FFFFFF') and '#F3F3F3' or '#FFFFFF'
end
return string.format([[
<table class="wikitable" style="width: 100%; margin: 1em 0; background-color: %s;">
<caption>%s</caption>
<tr>
<th style="width: 15%;">Type</th>
<th style="width: 35%;">Name</th>
<th style="width: 35%;">Alias</th>
<th style="width: 15%;">Notes</th>
</tr>
%s
</table>
]], bgcolor, title, rows)
end
return p