Editing Module:Message box

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 save the changes below to finish undoing the edit.

Latest revision Your text
Line 5: Line 5:
 
require('Module:No globals')
 
require('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()
 
-- Define constants
 
local CONFIG_MODULE = 'Module:Message box/configuration'
 
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
 
  
 
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
Line 75: Line 72:
 
local ns = obj.title.namespace
 
local ns = obj.title.namespace
 
-- boxType is "mbox" or invalid input
 
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
+
if ns == 0 then
-- implement demospace parameter of mbox
 
local demospace = string.lower(args.demospace)
 
if DEMOSPACES[demospace] then
 
-- use template from DEMOSPACES
 
obj.cfg = cfg[DEMOSPACES[demospace]]
 
elseif string.find( demospace, 'talk' ) then
 
-- demo as a talk page
 
obj.cfg = cfg.tmbox
 
else
 
-- default to ombox
 
obj.cfg = cfg.ombox
 
end
 
elseif 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 106:
 
obj.categories = {}
 
obj.categories = {}
 
obj.classes = {}
 
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
 
obj.hasCategories = false
 
  
 
return setmetatable(obj, MessageBox)
 
return setmetatable(obj, MessageBox)
Line 137: Line 119:
 
cat = string.format('[[Category:%s]]', cat)
 
cat = string.format('[[Category:%s]]', cat)
 
end
 
end
self.hasCategories = true
 
 
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 155:
 
-- Add attributes, classes and styles.
 
-- Add attributes, classes and styles.
 
self.id = args.id
 
self.id = args.id
self.name = args.name
+
self:addClass(
if self.name then
+
cfg.usePlainlinksParam and yesno(args.plainlinks or true) and 'plainlinks'
self:addClass('box-' .. string.gsub(self.name,' ','_'))
+
)
end
 
if yesno(args.plainlinks) ~= false then
 
self:addClass('plainlinks')
 
end
 
 
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 180:
 
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 192:
 
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 297: Line 275:
 
end
 
end
 
if date then
 
if date then
self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date)
+
self.date = string.format(" <small>''(%s)''</small>", date)
 
end
 
end
 
self.info = args.info
 
self.info = args.info
if yesno(args.removalnotice) then
 
self.removalNotice = cfg.removalNotice
 
end
 
 
end
 
end
  
Line 448: Line 423:
  
 
function MessageBox:renderCategories()
 
function MessageBox:renderCategories()
if not self.hasCategories then
 
-- No categories added, no need to pass them to Category handler so,
 
-- if it was invoked, it would return the empty string.
 
-- So we shortcut and return the empty string.
 
return ""
 
end
 
 
-- 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 require('Module:Category handler')._main{
+
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 520: Line 489:
 
-- 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 textCellDiv = textCell:tag('div')
+
local textCellSpan = textCell:tag('span')
textCellDiv
+
textCellSpan
 
:addClass('mbox-text-span')
 
:addClass('mbox-text-span')
 
:wikitext(self.issue or nil)
 
:wikitext(self.issue or nil)
if (self.talk or self.fix) and not self.isSmall then
+
if not self.isSmall then
textCellDiv:tag('span')
+
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
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
+
textCellSpan:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
+
if not self.isSmall then
textCellDiv
+
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
 
if self.removalNotice then
 
textCellDiv:tag('small')
 
:addClass('hide-when-compact')
 
:tag('i')
 
:wikitext(string.format(" (%s)", self.removalNotice))
 
 
end
 
end
 
else
 
else
Line 602: Line 565:
  
 
function p.main(boxType, args, cfgTables)
 
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
+
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData('Module:Message box/configuration'))
 
box:setParameters()
 
box:setParameters()
 
box:setCategories()
 
box:setCategories()

Please note that all contributions to Guild of Archivists 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 GoArch:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)

Template used on this page: