Difference between revisions of "Module:Message box"
Jump to navigation
Jump to search
more ambox stuff - still a little broken
>Mr. Stradivarius (initial code for ambox) |
>Mr. Stradivarius (more ambox stuff - still a little broken) |
||
Line 18: | Line 18: | ||
end | end | ||
return page or mw.title.getCurrentTitle() | return page or mw.title.getCurrentTitle() | ||
end | end | ||
Line 49: | Line 40: | ||
]] | ]] | ||
-- Process config data. | ------------------------ Process config data ---------------------------- | ||
-- Type data. | |||
local typeData = data.types[args.type] | local typeData = data.types[args.type] | ||
local invalidType = args.type and not typeData and true or false | local invalidType = args.type and not typeData and true or false | ||
typeData = typeData or data.types[data.default] | typeData = typeData or data.types[data.default] | ||
-- Process data for collapsible text fields | |||
local text, talk, fix, date, info | |||
if data.useCollapsibleTextFields then | |||
text = args.issue | |||
talk = args.talk | |||
fix = args.fix | |||
date = args.date | |||
info = args.info | |||
else | |||
text = args.text | |||
end | |||
-- Find whether we are using a small message box and process our data accordingly. | |||
local isSmall = data.allowSmall and (args.small == 'yes' or args.small == true) and true or false | local isSmall = data.allowSmall and (args.small == 'yes' or args.small == true) and true or false | ||
local smallClass, image, imageRight | local smallClass, image, imageRight, imageSize | ||
if isSmall then | if isSmall then | ||
smallClass = data.smallClass or 'mbox-small' | smallClass = data.smallClass or 'mbox-small' | ||
image = args.smallimage or args.image | image = args.smallimage or args.image | ||
imageRight = args.smallimageright or args.imageright | imageRight = args.smallimageright or args.imageright | ||
text = args.smalltext or | text = args.smalltext or text | ||
imageSize = data.imageSmallSize or '30x30px' | imageSize = data.imageSmallSize or '30x30px' | ||
else | else | ||
image = args.image | image = args.image | ||
imageRight = args.imageright | imageRight = args.imageright | ||
imageSize = '40x40px' | imageSize = '40x40px' | ||
end | end | ||
-- Get the box structure. | ------------------------ Get the box structure ---------------------------- | ||
local root | |||
local root = htmlBuilder.create() -- Includes error messages and categories added after the box. | |||
local substCheck = root.tag('b').addClass('error') | |||
local box = root.tag('table') | |||
local row = box.tag('tr') | |||
local imageLeftCell = row.tag('td').addClass('mbox-image') | |||
local textCell = row.tag('td').addClass('mbox-text') | |||
local imageRightCell = row.tag('td').addClass('mbox-imageright') | |||
------------------------ Build the box ---------------------------- | |||
-- Do the subst check. | -- Do the subst check. | ||
Line 104: | Line 118: | ||
local imageCheckBlank = data.imageCheckBlank | local imageCheckBlank = data.imageCheckBlank | ||
if image ~= 'none' and not imageCheckBlank or image ~= 'none' and imageCheckBlank and image ~= 'blank' then | if image ~= 'none' and not imageCheckBlank or image ~= 'none' and imageCheckBlank and image ~= 'blank' then | ||
if not isSmall and data.imageCellDiv then | if not isSmall and data.imageCellDiv then | ||
imageLeftCell = imageLeftCell.tag('div').css('width', '52px') -- If we are using a div, redefine imageLeftCell so that the image is inside it. | imageLeftCell = imageLeftCell.tag('div').css('width', '52px') -- If we are using a div, redefine imageLeftCell so that the image is inside it. | ||
Line 118: | Line 130: | ||
-- Add the text. | -- Add the text. | ||
if data.useCollapsibleTextFields then | |||
.addClass('mbox-text') | textCell | ||
.cssText(args.textstyle) | .cssText(args.textstyle) | ||
local textCellSpan = textCell.tag('span') | |||
textCellSpan | |||
.addClass('mbox-text-span') | |||
.wikitext(text) | |||
if not isSmall then | |||
textCellSpan | |||
.tag('span') | |||
.addClass('hide-when-compact') | |||
.wikitext(talk) | |||
.wikitext(fix) | |||
.done() | |||
end | |||
textCellSpan | |||
.wikitext(date and mw.ustring.format(" <small>''(%s)''</small>", date)) | |||
if not isSmall then | |||
textCellSpan | |||
.tag('span') | |||
.addClass('hide-when-compact') | |||
.wikitext(info and ' ' .. info) | |||
end | |||
else | |||
textCell | |||
.cssText(args.textstyle) | |||
.wikitext(text) | |||
end | |||
-- Add the right-hand image. | -- Add the right-hand image. | ||
if imageRight and not (data.imageRightNone and imageRight == 'none') then | if imageRight and not (data.imageRightNone and imageRight == 'none') then | ||
if not isSmall and data.imageCellDiv then | |||
imageRightCell = imageRightCell.tag('div').css('width', '52px') -- If we are using a div, redefine imageRightCell so that the image is inside it. | |||
end | |||
imageRightCell | |||
.wikitext(imageRight) | .wikitext(imageRight) | ||
end | end | ||
Line 140: | Line 178: | ||
end | end | ||
-- Add error messages and tracking | ------------------------ Add error messages and categories ---------------------------- | ||
-- Add error message and tracking category for invalid type parameters. | |||
if invalidType then | if invalidType then | ||
local catsort = (nsid == 0 and 'Main:' or '') .. title.prefixedText | local catsort = (nsid == 0 and 'Main:' or '') .. title.prefixedText | ||
Line 199: | Line 239: | ||
data.imageSmallSize = '20x20px' | data.imageSmallSize = '20x20px' | ||
data.imageCellDiv = true | data.imageCellDiv = true | ||
data. | data.useCollapsibleTextFields = true | ||
data.imageRightNone = true | |||
return p.build(data, args) | return p.build(data, args) | ||
end | end | ||
Line 414: | Line 455: | ||
v = mw.text.trim(v) | v = mw.text.trim(v) | ||
end | end | ||
if v ~= '' then | if v ~= '' or k == 'talk' or k == 'sect' or k == 'date' then | ||
args[k] = v | args[k] = v | ||
end | end |