Editing Module:Message box
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 2: | Line 2: | ||
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. | -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. | ||
-- | --dre('Module:No globals') | ||
local getArgs | local getArgs | ||
local categoryHandler = require('Module:Category handler')._main | |||
local yesno = require('Module:Yesno') | local yesno = require('Module:Yesno') | ||
-- Get a language object for formatDate and ucfirst. | -- Get a language object for formatDate and ucfirst. | ||
local lang = mw.language.getContentLanguage() | local lang = mw.language.getContentLanguage() | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
Line 75: | Line 71: | ||
local ns = obj.title.namespace | local ns = obj.title.namespace | ||
-- boxType is "mbox" or invalid input | -- boxType is "mbox" or invalid input | ||
if | if ns == 0 then | ||
obj.cfg = cfg.ambox -- main namespace | obj.cfg = cfg.ambox -- main namespace | ||
elseif ns == 6 then | elseif ns == 6 then | ||
Line 122: | Line 105: | ||
obj.categories = {} | obj.categories = {} | ||
obj.classes = {} | obj.classes = {} | ||
return setmetatable(obj, MessageBox) | return setmetatable(obj, MessageBox) | ||
Line 137: | Line 118: | ||
cat = string.format('[[Category:%s]]', cat) | cat = string.format('[[Category:%s]]', cat) | ||
end | end | ||
self.categories[ns] = self.categories[ns] or {} | self.categories[ns] = self.categories[ns] or {} | ||
table.insert(self.categories[ns], cat) | table.insert(self.categories[ns], cat) | ||
Line 174: | Line 154: | ||
-- Add attributes, classes and styles. | -- Add attributes, classes and styles. | ||
self.id = args.id | self.id = args.id | ||
self:addClass( | |||
cfg.usePlainlinksParam and yesno(args.plainlinks or true) and 'plainlinks' | |||
) | |||
for _, class in ipairs(cfg.classes or {}) do | for _, class in ipairs(cfg.classes or {}) do | ||
self:addClass(class) | self:addClass(class) | ||
Line 203: | Line 179: | ||
and cfg.templateCategoryRequireName | and cfg.templateCategoryRequireName | ||
then | then | ||
self.name = args.name | |||
if self.name then | if self.name then | ||
local templateName = mw.ustring.match( | local templateName = mw.ustring.match( | ||
Line 214: | Line 191: | ||
and mw.title.equals(self.title, self.templateTitle) | and mw.title.equals(self.title, self.templateTitle) | ||
end | end | ||
-- Process data for collapsible text fields. At the moment these are only | -- Process data for collapsible text fields. At the moment these are only | ||
-- used in {{ambox}}. | -- used in {{ambox}}. | ||
Line 268: | Line 245: | ||
end | end | ||
if talkTitle and talkTitle.exists then | if talkTitle and talkTitle.exists then | ||
local talkText = 'Relevant discussion may be found on' | |||
if talkArgIsTalkPage then | |||
talkText = string.format( | |||
'%s [[%s|%s]].', | |||
talkText, | |||
talk, | |||
talkTitle.prefixedText | |||
) | |||
else | |||
talkText = string.format( | |||
'%s the [[%s#%s|talk page]].', | |||
talkText, | |||
talkTitle.prefixedText, | |||
talk | |||
) | |||
end | |||
self.talk = talkText | self.talk = talkText | ||
end | end | ||
Line 303: | Line 274: | ||
end | end | ||
if date then | if date then | ||
self.date = string.format(" <small | self.date = string.format(" <small>''(%s)''</small>", date) | ||
end | end | ||
self.info = args.info | self.info = args.info | ||
end | end | ||
Line 454: | Line 422: | ||
function MessageBox:renderCategories() | function MessageBox:renderCategories() | ||
-- Convert category tables to strings and pass them through | -- Convert category tables to strings and pass them through | ||
-- [[Module:Category handler]]. | -- [[Module:Category handler]]. | ||
return | return categoryHandler{ | ||
main = table.concat(self.categories[0] or {}), | main = table.concat(self.categories[0] or {}), | ||
template = table.concat(self.categories[10] or {}), | template = table.concat(self.categories[10] or {}), | ||
Line 526: | Line 488: | ||
-- collapsible. At the moment, only ambox uses this. | -- collapsible. At the moment, only ambox uses this. | ||
textCell:cssText(self.textstyle or nil) | textCell:cssText(self.textstyle or nil) | ||
local | local textCellSpan = textCell:tag('span') | ||
textCellSpan | |||
:addClass('mbox-text-span') | :addClass('mbox-text-span') | ||
:wikitext(self.issue or nil) | :wikitext(self.issue or nil) | ||
if | if not self.isSmall then | ||
textCellSpan:tag('span') | |||
:addClass('hide-when-compact') | :addClass('hide-when-compact') | ||
:wikitext(self.talk and (' ' .. self.talk) or nil) | :wikitext(self.talk and (' ' .. self.talk) or nil) | ||
:wikitext(self.fix and (' ' .. self.fix) or nil) | :wikitext(self.fix and (' ' .. self.fix) or nil) | ||
end | end | ||
textCellSpan:wikitext(self.date and (' ' .. self.date) or nil) | |||
if | if not self.isSmall then | ||
textCellSpan | |||
:tag('span') | :tag('span') | ||
:addClass('hide-when-compact') | :addClass('hide-when-compact') | ||
:wikitext(self.info and (' ' .. self.info) or nil) | :wikitext(self.info and (' ' .. self.info) or nil) | ||
end | end | ||
else | else | ||
Line 608: | Line 564: | ||
function p.main(boxType, args, cfgTables) | function p.main(boxType, args, cfgTables) | ||
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData( | local box = MessageBox.new(boxType, args, cfgTables or mw.loadData('Module:Message box/configuration')) | ||
box:setParameters() | box:setParameters() | ||
box:setCategories() | box:setCategories() |