Module:CareerList: Difference between revisions

From Porn Base Central
Jump to navigation Jump to search
Content deleted Content added
No edit summary
No edit summary
 
(10 intermediate revisions by the same user not shown)
Line 4: Line 4:
function p.makeTableTop()
function p.makeTableTop()
local headerRow = mw.html.create('tr')
local headerRow = mw.html.create('tr')
:node(mw.html.create('th'):wikitext('Site'))
:node(mw.html.create('th'):wikitext('site'))
:node(mw.html.create('th'):wikitext('ID'))
:node(mw.html.create('th'):wikitext('id'))
:node(mw.html.create('th'):wikitext('Alias'))
:node(mw.html.create('th'):wikitext('alias'))
:node(mw.html.create('th'):wikitext('Notes'))
:node(mw.html.create('th'):wikitext('notes'))
:done()
:done()


Line 17: Line 17:


-- Функция для создания ячейки таблицы
-- Функция для создания ячейки таблицы
function p.makeCell(cellType, site, id, alias, notes)
function p.makeCell(cellType, args)
local function getColor(index)
local function getColor(index)
return (index % 2 == 0) and '#F3F3F3' or '#FFFFFF'
return ((index or 0) % 2 == 0) and '#F3F3F3' or '#FFFFFF'
end
end


Line 29: Line 29:


local function getAlias(alias, title)
local function getAlias(alias, title)
if not alias or alias == '' then
if not alias or alias == '' then
return title
return 'N/A'
else
else
return alias
return alias
end
end
end
end


local function getNotes(notes)
local function getNotes(notes)
if not notes or notes == '' then
if not notes or notes == '' then
return 'N/A'
return 'N/A'
else
else
return notes
return notes
end
end
end

if not args.site then
return mw.html.create('tr')
:css('background-color', getColor(args.rowIndex))
:node(mw.html.create('td'):attr('colspan', '4'):wikitext('Invalid arguments. Please see documentation for correct usage.'))
:done()
end
end


local site = args.site or mw.title.getCurrentTitle().text
local id = args.id or ''
local alias = getAlias(args.alias, site)
local notes = getNotes(args.notes)
local background = getBackground(site)
local background = getBackground(site)


Line 55: Line 66:
:css('background-color', background)
:css('background-color', background)
:css('padding', '8px')
:css('padding', '8px')
:wikitext(id or '')
:wikitext(id)
:done()
:done()


Line 61: Line 72:
:css('background-color', background)
:css('background-color', background)
:css('padding', '8px')
:css('padding', '8px')
:wikitext(getAlias(alias, mw.title.getCurrentTitle().text))
:wikitext(aliasCell)
:done()
:done()


Line 67: Line 78:
:css('background-color', background)
:css('background-color', background)
:css('padding', '8px')
:css('padding', '8px')
:wikitext(getNotes(notes))
:wikitext(notesCell)
:done()
:done()


return mw.html.create('tr')
return mw.html.create('tr')
:css('background-color', getColor())
:css('background-color', getColor(args.rowIndex))
:node(cell)
:node(cell)
:node(idCell)
:node(idCell)
Line 78: Line 89:
:done()
:done()
end
end

-- Функция для определения ссылки на сайт
-- Функция для определения ссылки на сайт
function p.getSiteLink(site)
function p.getSiteLink(site)
local config = mw.loadData('Module:CareerList/config')
local config = mw.loadData('Module:CareerList/config')
site = site:lower()
if config[site] then
local url = config[site].url
local id = mw.text.encode(site.id)
return string.format('[%s %s]', url:gsub('$1', id), site)
else
return site
end
end

-- Функция для обработки аргументов
function p.processArgs(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:CareerList'
})
local site = args[1] or ''
local id = args[2] or ''
local alias = args[3] or ''
local notes = args[4] or ''

if site == '' then
return '<strong class="error">Error: </strong>Site parameter is required'
else
site = site:lower()
site = site:lower()
if config[site] then
if not mw.loadData('Module:CareerList/config')[site] then
return '<strong class="error">Error: </strong>Invalid site specified'
local url = config[site].url
local id = mw.text.encode(site)
return string.format('[%s %s]', url:gsub('$1', id), site)
else
else
return site
return p.makeCell(site, id, alias, notes)
end
end
end
end

-- Главная функция модуля
function p.main(frame)
local tableTop = p.makeTableTop()
local tableRows = ''
for i = 1, 999 do
local result = p.processArgs(frame:getParent())
if type(result) == 'string' then
return result
elseif not result then
break
else
tableRows = tableRows .. tostring(result)
end
end
return tostring(tableTop) .. tableRows .. '</table>'
end
end



Latest revision as of 01:59, 13 March 2023

Documentation for this module may be created at Module:CareerList/doc

local p = {}

-- Функция для создания таблицы
function p.makeTableTop()
    local headerRow = mw.html.create('tr')
        :node(mw.html.create('th'):wikitext('site'))
        :node(mw.html.create('th'):wikitext('id'))
        :node(mw.html.create('th'):wikitext('alias'))
        :node(mw.html.create('th'):wikitext('notes'))
        :done()

    return mw.html.create('table')
        :css('width', '100%')
        :node(headerRow)
        :done()
end

-- Функция для создания ячейки таблицы
function p.makeCell(cellType, args)
    local function getColor(index)
        return ((index or 0) % 2 == 0) and '#F3F3F3' or '#FFFFFF'
    end

    local function getBackground(site)
        local config = mw.loadData('Module:CareerList/config')
        local color = (cellType == 'Studio') and '#DADADA' or '#E7E7E7'
        return config[site] and color or '#FFFFFF'
    end

    local function getAlias(alias, title)
    if not alias or alias == '' then
        return 'N/A'
    else
        return alias
    end
end

    local function getNotes(notes)
    if not notes or notes == '' then
        return 'N/A'
    else
        return notes
    end
end

    if not args.site then
        return mw.html.create('tr')
            :css('background-color', getColor(args.rowIndex))
            :node(mw.html.create('td'):attr('colspan', '4'):wikitext('Invalid arguments. Please see documentation for correct usage.'))
            :done()
    end

    local site = args.site or mw.title.getCurrentTitle().text
    local id = args.id or ''
    local alias = getAlias(args.alias, site)
    local notes = getNotes(args.notes)
    local background = getBackground(site)

    local cell = mw.html.create('td')
        :css('background-color', background)
        :css('padding', '8px')
        :wikitext(p.getSiteLink(site))
        :done()

    local idCell = mw.html.create('td')
        :css('background-color', background)
        :css('padding', '8px')
        :wikitext(id)
        :done()

    local aliasCell = mw.html.create('td')
        :css('background-color', background)
        :css('padding', '8px')
        :wikitext(aliasCell)
        :done()

    local notesCell = mw.html.create('td')
        :css('background-color', background)
        :css('padding', '8px')
        :wikitext(notesCell)
        :done()

    return mw.html.create('tr')
        :css('background-color', getColor(args.rowIndex))
        :node(cell)
        :node(idCell)
        :node(aliasCell)
        :node(notesCell)
        :done()
end
-- Функция для определения ссылки на сайт
function p.getSiteLink(site)
local config = mw.loadData('Module:CareerList/config')
site = site:lower()
if config[site] then
local url = config[site].url
local id = mw.text.encode(site.id)
return string.format('[%s %s]', url:gsub('$1', id), site)
else
return site
end
end

-- Функция для обработки аргументов
function p.processArgs(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:CareerList'
})
local site = args[1] or ''
local id = args[2] or ''
local alias = args[3] or ''
local notes = args[4] or ''

if site == '' then
    return '<strong class="error">Error: </strong>Site parameter is required'
else
    site = site:lower()
    if not mw.loadData('Module:CareerList/config')[site] then
        return '<strong class="error">Error: </strong>Invalid site specified'
    else
        return p.makeCell(site, id, alias, notes)
    end
end
end

-- Главная функция модуля
function p.main(frame)
local tableTop = p.makeTableTop()
local tableRows = ''
for i = 1, 999 do
local result = p.processArgs(frame:getParent())
if type(result) == 'string' then
return result
elseif not result then
break
else
tableRows = tableRows .. tostring(result)
end
end
return tostring(tableTop) .. tableRows .. '</table>'
end

return p