Module:Portal: Difference between revisions
Jump to navigation
Jump to search
m (Rollback test) Tags: Manual revert Reverted |
Tag: Rollback |
||
Line 168: | Line 168: | ||
end | end | ||
return portals, trackingCat, errMsg | return portals, trackingCat, errMsg | ||
end | |||
local function portalBox(args) | |||
return mw.html.create('ul') | |||
:attr('role', 'navigation') | |||
:attr('aria-label', 'Portals') | |||
:addClass('noprint') | |||
:addClass(args.error and '' or sandboxVersion('portalbox')) | |||
:addClass(args.border and sandboxVersion('portalborder') or '') | |||
:addClass(sandboxVersion(args.left and 'portalleft' or 'portalright')) | |||
:css('margin', args.margin or nil) | |||
:newline() | |||
end | |||
local function fillBox(root, contents) | |||
for _, item in ipairs(contents) do | |||
local entry = root:tag('li') | |||
entry:addClass(sandboxVersion('portalbox-entry')) | |||
local image = entry:tag('span') | |||
image:addClass(sandboxVersion('portalbox-image')) | |||
image:wikitext(item[1]) | |||
local link = entry:tag('span') | |||
link:addClass(sandboxVersion('portalbox-link')) | |||
link:wikitext(item[2]) | |||
end | |||
return root | |||
end | end | ||
Line 182: | Line 208: | ||
end | end | ||
local root = | local root = portalBox(args) | ||
local trackingCat = '' | local trackingCat = '' | ||
Line 201: | Line 219: | ||
if errMsg then | if errMsg then | ||
if args.border then -- suppress error message when border=no | if args.border then -- suppress error message when border=no | ||
args.error = true -- recreate box without fancy formatting | |||
root = portalBox(args) | |||
root:wikitext(trackingCat) | |||
local errTag = root:tag('strong') | local errTag = root:tag('strong') | ||
errTag:addClass('error') | errTag:addClass('error') | ||
Line 213: | Line 234: | ||
end | end | ||
local contents = {} | |||
local | |||
-- Display the portals specified in the positional arguments. | -- Display the portals specified in the positional arguments. | ||
for _, portal in ipairs(portals) do | for _, portal in ipairs(portals) do | ||
local image = getImageName(portal) | local image = string.format('[[File:%s|32x28px|class=noviewer]]', | ||
getImageName(portal)) | |||
local link = string.format('[[Portal:%s|%s%sportal]]', | |||
portal, portal, args.addBreak and '<br />' or ' ') | |||
table.insert(contents, {image, link}) | |||
end | |||
return tostring(fillBox(root, contents)) | |||
end | |||
function p._demo(imageList, args) | |||
for key, default in pairs({left=false,border=true}) do | |||
if args[key] == nil then args[key] = default end | |||
args[key] = yesno(args[key], default) | |||
end | end | ||
return tostring(root) | |||
local root = portalBox(args) | |||
local contents = {} | |||
-- Display the portals specified in the positional arguments. | |||
for _, fn in ipairs(imageList) do | |||
local image = string.format('[[File:%s|32x28px|class=noviewer]]',fn) | |||
local link = string.format('[[:File:%s|%s]]',fn,fn) | |||
table.insert(contents,{image,link}) | |||
end | |||
return tostring(fillBox(root,contents)) | |||
end | end | ||
function p._image( | function p._image(portal,nostrip) | ||
-- Wrapper function to allow getImageName() to be accessed through #invoke. | -- Wrapper function to allow getImageName() to be accessed through #invoke. | ||
local name = getImageName( | -- backward compatibility: if table passed, take first element | ||
return name:match('^(.-)|') or name -- FIXME: use a more elegant way to separate borders etc. from the image name | if type(portal) == 'table' then | ||
portal = portal[1] | |||
end | |||
local name = getImageName(portal) | |||
-- If nostrip is yes (or equivalent), then allow all metadata (like image borders) to be returned | |||
local strip = not yesno(nostrip) | |||
return strip and name:match('^(.-)|') or name -- FIXME: use a more elegant way to separate borders etc. from the image name | |||
end | end | ||
Line 310: | Line 347: | ||
function p._processPortalArgs(args) | function p._processPortalArgs(args) | ||
return processPortalArgs(args) | return processPortalArgs(args) | ||
end | |||
function p.image(frame) | |||
local origArgs = getArgs(frame) | |||
local portals, args = processPortalArgs(origArgs) | |||
return p._image(portals[1],args.border) | |||
end | |||
function p.demo(frame) | |||
local args = getArgs(frame) | |||
local styles = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } | |||
return styles..p._demo(args,args) | |||
end | end | ||
Line 331: | Line 380: | ||
end | end | ||
for _, funcName in ipairs{'portal | for _, funcName in ipairs{'portal', 'imageDupes', 'displayAll'} do | ||
p[funcName] = makeWrapper('_' .. funcName) | p[funcName] = makeWrapper('_' .. funcName) | ||
end | end | ||
return p | return p |