| Latest revision |
Your text |
| 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 177: |
Line 174: |
| 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 194: |
Line 188: |
| -- 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 274: |
Line 268: |
| local talkText | | local talkText |
| if self.isSmall then | | if self.isSmall then |
| local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. (talk == '#' and '' or '#') .. talk) | | local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) |
| talkText = string.format('([[%s|talk]])', talkLink) | | talkText = string.format('([[%s|talk]])', talkLink) |
| else | | else |
| Line 287: |
Line 281: |
| else | | else |
| talkText = string.format( | | talkText = string.format( |
| '%s the [[%s' .. (talk == '#' and '' or '#') .. '%s|talk page]].', | | '%s the [[%s#%s|talk page]].', |
| talkText, | | talkText, |
| talkTitle.prefixedText, | | talkTitle.prefixedText, |
| Line 322: |
Line 316: |
| 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 471: |
Line 468: |
| 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 761: |
Line 627: |
| 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 |