Module:Wikipedia ads/navbox
Appearance
Implements {{Wikipedia ads/navbox}}
-- This module displays a navbox of all available Wikipedia ads. It is used in
-- [[Template:Wikipedia ads/doc]].
local DATA_MODULE = 'Module:Wikipedia ads/data'
local p = {}
function p.main()
local data = mw.loadData(DATA_MODULE)
-- Table root.
local root = mw.html.create('table')
root
:addClass('navbox collapsible collapsed')
:css('width', '100%')
:css('background', '#f7f8ff')
:css('text-align', 'left')
:css('border', 'solid 1px #aaaaaa')
:css('margin', 0)
:tag('tr')
:tag('th')
:css('background', 'transparent')
:css('font-size', '105%;')
:css('text-align', 'center;')
:css('font-weight', 'bold')
:wikitext('[[Template:Wikipedia ads|Wikipedia ads]]: [[Template:Wikipedia ads/navbox|Overview]]')
-- Ad table.
local adTable = root
:tag('tr')
:tag('td')
:tag('table')
:addClass('plainlinks sortable wikitable')
:css('width', '100%')
:css('text-align', 'left')
:css('margin', '0')
:css('font-size', '90%')
-- Ad table headers.
adTable
:tag('tr')
:tag('th')
:css('width', '3em')
:wikitext('#')
:done()
:tag('th')
:addClass('unsortable')
:wikitext('Image')
:done()
:tag('th')
:wikitext('Page')
:done()
:tag('th')
:wikitext('Author')
:done()
-- Ads.
for i, imageData in ipairs(data.list) do
-- Sanity checks. The ID is already checked by the data module.
for j, field in ipairs{'image', 'link', 'author'} do
assert(imageData[field], string.format(
"no '%s' field found in image data with ID '%s'",
field, tostring(imageData.id)
))
end
adTable
:tag('tr')
:tag('th')
:wikitext(imageData.id)
:done()
:tag('td')
:wikitext(string.format(
'[[File:%s|140px]]',
imageData.image
))
:done()
:tag('td')
:wikitext(string.format('[[%s]]', imageData.link))
:done()
:tag('td')
:wikitext(imageData.author)
end
return tostring(root)
end
return p