Editing Module:Message box

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
-- This is a meta-module for producing message box templates, including
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.
-- Load necessary modules.
require('Module:No globals')
require('Module:No globals')
local getArgs
local getArgs
local yesno = require('Module:Yesno')
local yesno = require('Module:Yesno')
local templatestyles = 'Module:Message box/styles.css'
styles = 'Module:Message box/styles.css'
-- Get a language object for formatDate and ucfirst.
local lang = mw.language.getContentLanguage()
local lang = mw.language.getContentLanguage()


-- Define constants
local CONFIG_MODULE = 'Module:Message box/configuration'
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
local DEMOSPACES = {user = 'tmbox', talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Line 261: Line 270:
end
end
if talkTitle and talkTitle.exists then
if talkTitle and talkTitle.exists then
                local talkText
local talkText = 'Relevant discussion may be found on'
                if self.isSmall then
if talkArgIsTalkPage then
                    local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format(
                    talkText = string.format('([[%s|talk]])', talkLink)
'%s [[%s|%s]].',
                else
talkText,
                    talkText = 'Relevant discussion may be found on'
talk,
                    if talkArgIsTalkPage then
talkTitle.prefixedText
                        talkText = string.format(
)
                            '%s [[%s|%s]].',
else
                            talkText,
talkText = string.format(
                            talk,
'%s the [[%s#%s|talk page]].',
                            talkTitle.prefixedText
talkText,
                        )
talkTitle.prefixedText,
                    else
talk
                        talkText = string.format(
)
                            '%s the [[%s#%s|talk page]].',
end
                            talkText,
                            talkTitle.prefixedText,
                            talk
                        )
                    end
                end
self.talk = talkText
self.talk = talkText
end
end
Line 296: Line 299:
end
end
if date then
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date)
end
end
self.info = args.info
self.info = args.info
Line 318: Line 321:
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
self.imageEmptyCell = cfg.imageEmptyCell
if cfg.imageEmptyCellStyle then
self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px'
end


-- Left image settings.
-- Left image settings.
Line 339: Line 345:
self.imageRight = imageRight
self.imageRight = imageRight
end
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
end


Line 476: Line 478:
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
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
end


Line 516: Line 503:
-- image width to 52px. If any images in a div are wider than that,
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')
end
end
imageLeftCell:wikitext(self.imageLeft or nil)
imageLeftCell:wikitext(self.imageLeft or nil)
Line 526: Line 513:
row:tag('td')
row:tag('td')
:addClass('mbox-empty-cell')
:addClass('mbox-empty-cell')
:cssText(self.imageEmptyCellStyle or nil)
end
end


Line 538: Line 526:
:addClass('mbox-text-span')
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
if (self.talk or self.fix) and not self.isSmall then
textCellDiv:tag('span')
textCellDiv:tag('span')
:addClass('hide-when-compact')
:addClass('hide-when-compact')
Line 552: Line 540:
end
end
if self.removalNotice then
if self.removalNotice then
textCellDiv:tag('span')
textCellDiv:tag('small')
:addClass('hide-when-compact')
:addClass('hide-when-compact')
:tag('i')
:tag('i')
Line 570: Line 558:
-- If we are using a div, redefine imageRightCell so that the image
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
-- is inside it.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
imageRightCell = imageRightCell:tag('div'):css('width', '52px')
end
end
imageRightCell
imageRightCell
Line 589: Line 577:
if self.invalidTypeError then
if self.invalidTypeError then
root:tag('div')
root:tag('div')
:addClass('mbox-invalid-type')
:css('text-align', 'center')
:wikitext(string.format(
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
'This message box is using an invalid "type=%s" parameter and needs fixing.',
Line 620: Line 608:
box:setCategories()
box:setCategories()
return box:export()
return box:export()
end
local function templatestyles(frame, src)
  return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
      .. 'CONFIG_MODULE'
end
end


Please note that all contributions to Meta Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Meta Wiki:Copyrights for details). Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)

Template used on this page: