Module:CareerList: Difference between revisions

From Porn Base Central
Jump to navigation Jump to search
No edit summary
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.createCareerList(frame)
function p.table(frame)
local args = frame.args
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 ""
url = url:gsub("%$1", id)
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)
:tag("td")
html
:tag('th')
:wikitext(config[site].name or "")
:css('background-color', '#F2F2F2')
:wikitext(": ")
:tag("a")
:wikitext(header)
end
:attr("href", url)

:wikitext(alias)
-- Строки таблицы
:done()
:tag("td")
for i, row in ipairs(cells) do
:wikitext(notes)
html:wikitext('\n|-')
:done()
for j, cell in ipairs(row) do
html:addChild(cell)
end
end


return tostring(html)
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