Module:Userbox: Difference between revisions
Jump to navigation
Jump to search
m No |
|||
Line 82: | Line 82: | ||
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. | local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. | ||
data.borderWidth = addSuffix(borderWidthNum, 'px') | data.borderWidth = addSuffix(borderWidthNum, 'px') | ||
data.borderColor = args['border-color' | data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' | ||
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. | data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. | ||
data.bodyClass = args.bodyclass | data.bodyClass = args.bodyclass | ||
Line 108: | Line 108: | ||
data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' | data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' | ||
data.idTextAlign = args['id-a'] or 'center' | data.idTextAlign = args['id-a'] or 'center' | ||
data.idFontSize = | data.idFontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) | ||
data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor | data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor | ||
data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' | data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' | ||
Line 124: | Line 124: | ||
-- Get div tag values. | -- Get div tag values. | ||
data.float = args.float or 'left' | data.float = args.float or 'left' | ||
local borderWidthNum = checkNum( | local borderWidthNum = checkNum(args['border-s'] or args[9], 1) -- Used to calculate width. | ||
data.borderWidth = addSuffix(borderWidthNum, 'px') | data.borderWidth = addSuffix(borderWidthNum, 'px') | ||
data.borderColor = | data.borderColor = args['border-c'] or args[6] or args['id1-c'] or args[1] or '#999999' | ||
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. | data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. | ||
data.bodyClass = args.bodyclass | data.bodyClass = args.bodyclass | ||
-- Get table tag values. | -- Get table tag values. | ||
data.backgroundColor = | data.backgroundColor = args['info-c'] or args[2] or '#eeeeee' | ||
-- Get info values. | -- Get info values. | ||
data.info = args[4] | data.info = args.info or args[4] or "<code>{{{info}}}</code>" | ||
data.infoTextAlign = args['info-a'] or 'left' | data.infoTextAlign = args['info-a'] or 'left' | ||
data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') | data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') | ||
data.infoColor = | data.infoColor = args['info-fc'] or args[8] or 'black' | ||
data.infoPadding = args['info-p'] or '0 4px 0 4px' | data.infoPadding = args['info-p'] or '0 4px 0 4px' | ||
data.infoLineHeight = args['info-lh'] or '1.25em' | data.infoLineHeight = args['info-lh'] or '1.25em' | ||
Line 147: | Line 147: | ||
data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') | data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') | ||
data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') | data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') | ||
data.idBackgroundColor = | data.idBackgroundColor = args['id1-c'] or args[1] or '#dddddd' | ||
data.idTextAlign = 'center' | data.idTextAlign = 'center' | ||
data.idFontSize = | data.idFontSize = checkNum(args['id1-s'], 14) | ||
data.idLineHeight = args['id1-lh'] or '1.25em' | data.idLineHeight = args['id1-lh'] or '1.25em' | ||
data.idColor = args['id1-fc'] or data.infoColor | data.idColor = args['id1-fc'] or data.infoColor | ||
Line 160: | Line 160: | ||
data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') | data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') | ||
data.id2Height = data.idHeight | data.id2Height = data.idHeight | ||
data.id2BackgroundColor = | data.id2BackgroundColor = args['id2-c'] or args[7] or args[1] or '#dddddd' | ||
data.id2TextAlign = 'center' | data.id2TextAlign = 'center' | ||
data.id2FontSize = | data.id2FontSize = checkNum(args['id2-s'], 14) | ||
data.id2LineHeight = args['id2-lh'] or '1.25em' | data.id2LineHeight = args['id2-lh'] or '1.25em' | ||
data.id2Color = args['id2-fc'] or data.infoColor | data.id2Color = args['id2-fc'] or data.infoColor | ||
Line 179: | Line 179: | ||
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. | local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. | ||
data.borderWidth = addSuffix(borderWidthNum, 'px') | data.borderWidth = addSuffix(borderWidthNum, 'px') | ||
data.borderColor = args['border-color' | data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' | ||
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. | data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. | ||
data.bodyClass = args.bodyclass | data.bodyClass = args.bodyclass | ||
Line 205: | Line 205: | ||
data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' | data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' | ||
data.id2TextAlign = args['id-a'] or 'center' | data.id2TextAlign = args['id-a'] or 'center' | ||
data.id2FontSize = | data.id2FontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) | ||
data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor | data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor | ||
data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' | data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' | ||
Line 245: | Line 245: | ||
:css('background', data.idBackgroundColor) | :css('background', data.idBackgroundColor) | ||
:css('text-align', data.idTextAlign) | :css('text-align', data.idTextAlign) | ||
:css('font-size', data.idFontSize) | :css('font-size', data.idFontSize .. 'pt') | ||
:css('font-weight', 'bold') | :css('font-weight', 'bold') | ||
:css('color', data.idColor) | :css('color', data.idColor) | ||
Line 278: | Line 278: | ||
:css('background', data.id2BackgroundColor) | :css('background', data.id2BackgroundColor) | ||
:css('text-align', data.id2TextAlign) | :css('text-align', data.id2TextAlign) | ||
:css('font-size', data.id2FontSize) | :css('font-size', data.id2FontSize .. 'pt') | ||
:css('font-weight', 'bold') | :css('font-weight', 'bold') | ||
:css('color', data.id2Color) | :css('color', data.id2Color) | ||
Line 301: | Line 301: | ||
local function has_text(wikitext) | local function has_text(wikitext) | ||
wikitext = wikitext:gsub("]]", "|]]") | wikitext = wikitext:gsub("]]", "|]]") | ||
wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", | wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", "") | ||
wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", | wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", "") | ||
wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", | wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", "") | ||
return mw.text.trim(wikitext) ~= "" | return mw.text.trim(wikitext) ~= "" | ||
end | end | ||
Line 316: | Line 312: | ||
end | end | ||
if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } < | -- For bold text >= 14pt, requirement is only 3. | ||
local idContrastThreshold = 4.5 | |||
local id2ContrastThreshold = 4.5 | |||
if (data.idFontSize or 0) >= 14 then | |||
idContrastThreshold = 3 | |||
end | |||
if (data.id2FontSize or 0) >= 14 then | |||
id2ContrastThreshold = 3 | |||
end | |||
if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } < idContrastThreshold then | |||
if has_text(data.id or "") then | if has_text(data.id or "") then | ||
legible = false | legible = false | ||
Line 322: | Line 328: | ||
end | end | ||
if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } < | if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } < id2ContrastThreshold then | ||
if has_text(data.id2 or "") then | if has_text(data.id2 or "") then | ||
legible = false | legible = false | ||
Line 329: | Line 335: | ||
if not legible then | if not legible then | ||
root:wikitext('') | root:wikitext('[[Category:Userboxes with insufficient color contrast]]') | ||
end | end | ||
Line 343: | Line 349: | ||
cats[#cats + 1] = args.usercategory2 | cats[#cats + 1] = args.usercategory2 | ||
cats[#cats + 1] = args.usercategory3 | cats[#cats + 1] = args.usercategory3 | ||
cats[#cats + 1] = args.usercategory4 | |||
cats[#cats + 1] = args.usercategory5 | |||
-- Get the title object | |||
local title | |||
if page then | |||
title = mw.title.new(page) | |||
else | else | ||
title = mw.title.getCurrentTitle() | |||
end | |||
-- Build category handler arguments. | |||
local chargs = {} | |||
chargs.page = page | |||
chargs.nocat = args.nocat | |||
chargs.main = '[[Category:Pages with templates in the wrong namespace]]' | |||
if args.notcatsubpages then | |||
chargs.subpage = 'no' | |||
end | |||
-- User namespace. | |||
local user = '' | |||
for i, cat in ipairs(cats) do | |||
user = user .. makeCat(cat) | |||
end | |||
chargs.user = user | |||
-- Template namespace. | |||
local basepage = title.baseText | |||
local template = '' | |||
for i, cat in ipairs(cats) do | |||
template = template .. makeCat(cat, ' ' .. basepage) | |||
end | end | ||
chargs.template = template | |||
return categoryHandler(chargs) | |||
end | end | ||
return p | return p |