Module:Babel: Difference between revisions
Jump to navigation
Jump to search
(didn't work, so revert for now) |
(updates requested by User:The Mol Man) |
||
Line 8: | Line 8: | ||
end | end | ||
local args = getArgs(frame, {wrappers = 'Template:Babel'}) | local args = getArgs(frame, {wrappers = 'Template:Babel'}) | ||
local | local ret = mw.html.create('table') | ||
:addClass('userboxes') | :addClass('userboxes') | ||
:css( { | |||
float = args.align or 'right', | |||
['margin-left'] = (args.left or '1') .. 'em', | |||
['margin-bottom'] = (args.bottom or '0') .. 'em', | |||
width = (args.width or '248') .. 'px', | |||
clear = args.align or 'right', | |||
color = args.textcolor or '#000000', | |||
border = (bordercolor or '#99B3FF') .. ' solid ' .. (args.solid or 1)..'px' | |||
} ) | |||
if args.shadow and string.lower(args.shadow) == 'yes' then | if args.shadow and string.lower(args.shadow) == 'yes' then | ||
ret:css({ ['box-shadow'] = '0 2px 4px rgb(0,0,0,0.2)', | |||
['-mox-box-shadow'] = '0 2px 4px rgb(0,0,0,0.2)', | |||
['-webkit-box-shadow'] = '0 2px 4px rgb(0,0,0,0.2)' }) | |||
end | end | ||
ret:cssText( args['extra-css'] or '' ) | |||
local color = args.color or 'inherit' | local color = args.color or 'inherit' | ||
local row1 = | local row1 = ret:tag('tr') | ||
local row2 = | local row2 = ret:tag('tr') | ||
local row3 = | local row3 = ret:tag('tr') | ||
local | local body_cells = row2:tag('td') | ||
:css('vertical-align', 'middle !important') | :css('vertical-align', 'middle !important') | ||
local userboxes | local userboxes | ||
-- Special message for when first argument is blank; otherwise treat it as normal | |||
if args[1] and args[1]:find('%S') then | if args[1] and args[1]:find('%S') then | ||
userboxes = frame:preprocess('{{User '..args[1]..'}}') | userboxes = frame:preprocess('{{User '..args[1]..'}}') | ||
Line 71: | Line 44: | ||
userboxes = args.noboxestext or "''You haven't set up any languages. Please see [[Template:Babel/doc]] for help.''" | userboxes = args.noboxestext or "''You haven't set up any languages. Please see [[Template:Babel/doc]] for help.''" | ||
end | end | ||
body_cells:wikitext(userboxes) | |||
-- "remove" args[1] so it isn't looked at in the loop | |||
-- table.remove(args,1) doesn't produce desired result | |||
args[1] = '' | args[1] = '' | ||
local | -- Keep track of how many columns are in this table | ||
for | local col_span = 1 | ||
for _, v in ipairs( args ) do | |||
-- ! indicates a new cell should be created | |||
if v:find('%S') and v ~= '!' then | if v:find('%S') and v ~= '!' then | ||
body_cells:wikitext( frame:preprocess('{{User '..v..'}}') ) | |||
-- Recycling body_cells for <td> | |||
elseif v and v == '!' then | elseif v and v == '!' then | ||
col_span = col_span + 1 | |||
body_cells:done() | |||
body_cells = row2:tag('td') | |||
end | end | ||
end | end | ||
row1:tag('th') | |||
:css({ ['background-color'] = color, | |||
['text-align'] = 'center' }) | |||
:attr('colspan',col_span) | |||
:wikitext( args.header or '[[Wikipedia:Babel]]' ) | |||
:done() | |||
row3:tag('td') | |||
:css({ ['background-color'] = color, | |||
['text-align'] = 'center' }) | |||
:attr('colspan',col_span) | |||
:wikitext( args.footer or '[[:Category:Wikipedians by language|Search user languages]]' ) | |||
:done() | |||
if args['special-boxes'] then | if args['special-boxes'] then | ||
body_cells:wikitext(args['special-boxes']) | |||
end | end | ||
body_cells:done() | |||
return tostring(ret) | |||
body_cells: | |||
return tostring( | |||
end | end | ||
return p | return p |
Revision as of 13:46, 8 January 2015
Documentation for this module may be created at Module:Babel/doc
local p = {}
local getArgs
function p.main(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
local args = getArgs(frame, {wrappers = 'Template:Babel'})
local ret = mw.html.create('table')
:addClass('userboxes')
:css( {
float = args.align or 'right',
['margin-left'] = (args.left or '1') .. 'em',
['margin-bottom'] = (args.bottom or '0') .. 'em',
width = (args.width or '248') .. 'px',
clear = args.align or 'right',
color = args.textcolor or '#000000',
border = (bordercolor or '#99B3FF') .. ' solid ' .. (args.solid or 1)..'px'
} )
if args.shadow and string.lower(args.shadow) == 'yes' then
ret:css({ ['box-shadow'] = '0 2px 4px rgb(0,0,0,0.2)',
['-mox-box-shadow'] = '0 2px 4px rgb(0,0,0,0.2)',
['-webkit-box-shadow'] = '0 2px 4px rgb(0,0,0,0.2)' })
end
ret:cssText( args['extra-css'] or '' )
local color = args.color or 'inherit'
local row1 = ret:tag('tr')
local row2 = ret:tag('tr')
local row3 = ret:tag('tr')
local body_cells = row2:tag('td')
:css('vertical-align', 'middle !important')
local userboxes
-- Special message for when first argument is blank; otherwise treat it as normal
if args[1] and args[1]:find('%S') then
userboxes = frame:preprocess('{{User '..args[1]..'}}')
else
userboxes = args.noboxestext or "''You haven't set up any languages. Please see [[Template:Babel/doc]] for help.''"
end
body_cells:wikitext(userboxes)
-- "remove" args[1] so it isn't looked at in the loop
-- table.remove(args,1) doesn't produce desired result
args[1] = ''
-- Keep track of how many columns are in this table
local col_span = 1
for _, v in ipairs( args ) do
-- ! indicates a new cell should be created
if v:find('%S') and v ~= '!' then
body_cells:wikitext( frame:preprocess('{{User '..v..'}}') )
-- Recycling body_cells for <td>
elseif v and v == '!' then
col_span = col_span + 1
body_cells:done()
body_cells = row2:tag('td')
end
end
row1:tag('th')
:css({ ['background-color'] = color,
['text-align'] = 'center' })
:attr('colspan',col_span)
:wikitext( args.header or '[[Wikipedia:Babel]]' )
:done()
row3:tag('td')
:css({ ['background-color'] = color,
['text-align'] = 'center' })
:attr('colspan',col_span)
:wikitext( args.footer or '[[:Category:Wikipedians by language|Search user languages]]' )
:done()
if args['special-boxes'] then
body_cells:wikitext(args['special-boxes'])
end
body_cells:done()
return tostring(ret)
end
return p