Changes

Jump to navigation Jump to search
3,877 bytes added ,  18:19, 19 October 2025
below in div mbox
Line 166: Line 166:  
)
 
)
    +
-- Set the below row.
 +
self.below = cfg.below and args.below
 +
 
-- Add attributes, classes and styles.
 
-- Add attributes, classes and styles.
 
self.id = args.id
 
self.id = args.id
Line 174: Line 177:  
if yesno(args.plainlinks) ~= false then
 
if yesno(args.plainlinks) ~= false then
 
self:addClass('plainlinks')
 
self:addClass('plainlinks')
 +
end
 +
if self.below then
 +
self:addClass('mbox-with-below')
 
end
 
end
 
for _, class in ipairs(cfg.classes or {}) do
 
for _, class in ipairs(cfg.classes or {}) do
Line 188: Line 194:  
-- Set text style.
 
-- Set text style.
 
self.textstyle = args.textstyle
 
self.textstyle = args.textstyle
+
 
 
-- Set image classes.
 
-- Set image classes.
 
self.imageRightClass = args.imagerightclass or args.imageclass
 
self.imageRightClass = args.imagerightclass or args.imageclass
Line 316: Line 322:  
self.text = args.text
 
self.text = args.text
 
end
 
end
  −
-- Set the below row.
  −
self.below = cfg.below and args.below
      
-- General image settings.
 
-- General image settings.
Line 468: Line 471:  
page = self.args.page
 
page = self.args.page
 
}
 
}
 +
end
 +
 +
function MessageBox:exportDiv()
 +
local root = mw.html.create()
 +
 +
-- Add the subst check error.
 +
if self.isSubstituted and self.name then
 +
root:tag('b')
 +
:addClass('error')
 +
:wikitext(string.format(
 +
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
 +
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
 +
))
 +
end
 +
 +
local frame = mw.getCurrentFrame()
 +
root:wikitext(frame:extensionTag{
 +
name = 'templatestyles',
 +
args = { src = self.base_templatestyles },
 +
})
 +
-- Add support for a single custom templatestyles sheet. Undocumented as
 +
-- need should be limited and many templates using mbox are substed; we
 +
-- don't want to spread templatestyles sheets around to arbitrary places
 +
if self.templatestyles then
 +
root:wikitext(frame:extensionTag{
 +
name = 'templatestyles',
 +
args = { src = self.templatestyles },
 +
})
 +
end
 +
 +
-- Create the box.
 +
local mbox = root:tag('div')
 +
mbox:attr('id', self.id or nil)
 +
for i, class in ipairs(self.classes or {}) do
 +
mbox:addClass(class or nil)
 +
end
 +
mbox
 +
:cssText(self.style or nil)
 +
 +
if self.attrs then
 +
mbox:attr(self.attrs)
 +
end
 +
 +
local flex_container
 +
if self.below then
 +
-- we need to wrap the flex components (`image(right)` and `text`) in their
 +
-- own container div to support the `below` parameter
 +
flex_container = mw.html.create('div')
 +
flex_container:addClass('mbox-flex')
 +
else
 +
-- the mbox itself is the parent, so we need no HTML flex_container
 +
flex_container = mw.html.create()
 +
end
 +
 +
-- Add the left-hand image.
 +
if self.imageLeft then
 +
local imageLeftCell = flex_container:tag('div'):addClass('mbox-image')
 +
imageLeftCell
 +
:addClass(self.imageLeftClass)
 +
:wikitext(self.imageLeft or nil)
 +
end
 +
 +
-- Add the text.
 +
local textCell = flex_container:tag('div'):addClass('mbox-text')
 +
if self.useCollapsibleTextFields then
 +
-- The message box uses advanced text parameters that allow things to be
 +
-- collapsible. At the moment, only ambox uses this.
 +
textCell:cssText(self.textstyle or nil)
 +
local textCellDiv = textCell:tag('div')
 +
textCellDiv
 +
:addClass('mbox-text-span')
 +
:wikitext(self.issue or nil)
 +
if (self.talk or self.fix) then
 +
textCellDiv:tag('span')
 +
:addClass('hide-when-compact')
 +
:wikitext(self.talk and (' ' .. self.talk) or nil)
 +
:wikitext(self.fix and (' ' .. self.fix) or nil)
 +
end
 +
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
 +
if self.info and not self.isSmall then
 +
textCellDiv
 +
:tag('span')
 +
:addClass('hide-when-compact')
 +
:wikitext(self.info and (' ' .. self.info) or nil)
 +
end
 +
if self.removalNotice then
 +
textCellDiv:tag('span')
 +
:addClass('hide-when-compact')
 +
:tag('i')
 +
:wikitext(string.format(" (%s)", self.removalNotice))
 +
end
 +
else
 +
-- Default text formatting - anything goes.
 +
textCell
 +
:cssText(self.textstyle or nil)
 +
:wikitext(self.text or nil)
 +
end
 +
 +
-- Add the right-hand image.
 +
if self.imageRight then
 +
local imageRightCell = flex_container:tag('div'):addClass('mbox-imageright')
 +
imageRightCell
 +
:addClass(self.imageRightClass)
 +
:wikitext(self.imageRight or nil)
 +
end
 +
 +
mbox:node(flex_container)
 +
 +
-- Add the below row.
 +
if self.below then
 +
mbox:tag('div')
 +
:addClass('mbox-text mbox-below')
 +
:cssText(self.textstyle or nil)
 +
:wikitext(self.below or nil)
 +
end
 +
 +
-- Add error message for invalid type parameters.
 +
if self.invalidTypeError then
 +
root:tag('div')
 +
:addClass('mbox-invalid-type')
 +
:wikitext(string.format(
 +
'This message box is using an invalid "type=%s" parameter and needs fixing.',
 +
self.type or ''
 +
))
 +
end
 +
 +
-- Add categories.
 +
root:wikitext(self:renderCategories() or nil)
 +
 +
return tostring(root)
 
end
 
end
    
function MessageBox:export()
 
function MessageBox:export()
 +
 
local root = mw.html.create()
 
local root = mw.html.create()
   Line 627: Line 761:  
box:setParameters()
 
box:setParameters()
 
box:setCategories()
 
box:setCategories()
 +
-- DIV MIGRATION CONDITIONAL
 +
if box.cfg.div_structure then
 +
return box:exportDiv()
 +
end
 +
-- END DIV MIGRATION CONDITIONAL
 
return box:export()
 
return box:export()
 
end
 
end
Anonymous user

Navigation menu