11.314
suntingan
Tidak ada ringkasan suntingan Tag: Dikembalikan |
Tidak ada ringkasan suntingan Tag: Dikembalikan |
||
Baris 1: | Baris 1: | ||
require('strict') | require('strict') | ||
local getArgs | local getArgs | ||
local yesno = require('Module:Yesno') | local yesno = require('Module:Yesno') | ||
local lang = mw.language.getContentLanguage() | local lang = mw.language.getContentLanguage() | ||
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 = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
Baris 67: | Baris 59: | ||
args = args or {} | args = args or {} | ||
local obj = {} | local obj = {} | ||
-- Set the title object and the namespace. | -- Set the title object and the namespace. | ||
Baris 84: | Baris 74: | ||
-- use template from DEMOSPACES | -- use template from DEMOSPACES | ||
obj.cfg = cfg[DEMOSPACES[demospace]] | obj.cfg = cfg[DEMOSPACES[demospace]] | ||
elseif string.find( demospace, 'talk' ) then | elseif string.find( demospace, 'talk' ) then | ||
-- demo as a talk page | -- demo as a talk page | ||
obj.cfg = cfg.tmbox | obj.cfg = cfg.tmbox | ||
else | else | ||
-- default to ombox | -- default to ombox | ||
obj.cfg = cfg.ombox | obj.cfg = cfg.ombox | ||
end | end | ||
elseif ns == 0 then | elseif ns == 0 then | ||
obj.cfg = cfg.ambox -- main namespace | obj.cfg = cfg.ambox -- main namespace | ||
elseif ns == 6 then | elseif ns == 6 then | ||
obj.cfg = cfg.imbox -- file namespace | obj.cfg = cfg.imbox -- file namespace | ||
elseif ns == 14 then | elseif ns == 14 then | ||
obj.cfg = cfg.cmbox -- category namespace | obj.cfg = cfg.cmbox -- category namespace | ||
else | else | ||
local nsTable = mw.site.namespaces[ns] | local nsTable = mw.site.namespaces[ns] | ||
if nsTable and nsTable.isTalk then | if nsTable and nsTable.isTalk then | ||
obj.cfg = cfg.tmbox -- any talk namespace | obj.cfg = cfg.tmbox -- any talk namespace | ||
else | else | ||
obj.cfg = cfg.ombox -- other namespaces or invalid input | obj.cfg = cfg.ombox -- other namespaces or invalid input | ||
end | end | ||
end | end | ||
Baris 157: | Baris 139: | ||
return nil | return nil | ||
end | end | ||
table.insert(self.classes, class) | |||
end | end | ||
Baris 180: | Baris 155: | ||
self.typeClass = typeData.class | self.typeClass = typeData.class | ||
self.typeImage = typeData.image | self.typeImage = typeData.image | ||
self.typeImageNeedsLink = typeData.imageNeedsLink | |||
-- Find if the box has been wrongly substituted. | -- Find if the box has been wrongly substituted. | ||
Baris 193: | Baris 169: | ||
self.id = args.id | self.id = args.id | ||
self.name = args.name | self.name = args.name | ||
if self.name then | if self.name then | ||
self:addClass('box-' .. string.gsub(self.name,' ','_')) | self:addClass('box-' .. string.gsub(self.name,' ','_')) | ||
end | end | ||
if yesno(args.plainlinks) ~= false then | |||
self:addClass('plainlinks') | self:addClass('plainlinks') | ||
end | |||
self: | for _, class in ipairs(cfg.classes or {}) do | ||
self:addClass(class) | |||
end | end | ||
if self.isSmall then | if self.isSmall then | ||
Baris 289: | Baris 262: | ||
end | end | ||
if talkTitle and talkTitle.exists then | if talkTitle and talkTitle.exists then | ||
local talkText | |||
if self.isSmall then | |||
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) | |||
talkText = string.format('([[%s|talk]])', talkLink) | |||
else | |||
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 | |||
end | |||
self.talk = talkText | self.talk = talkText | ||
end | end | ||
Baris 318: | Baris 297: | ||
end | end | ||
if date then | if date then | ||
self.date = string.format(" < | self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) | ||
end | end | ||
self.info = args.info | self.info = args.info | ||
Baris 340: | Baris 319: | ||
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv | self.imageCellDiv = not self.isSmall and cfg.imageCellDiv | ||
self.imageEmptyCell = cfg.imageEmptyCell | self.imageEmptyCell = cfg.imageEmptyCell | ||
-- Left image settings. | -- Left image settings. | ||
Baris 354: | Baris 330: | ||
and (cfg.imageSmallSize or '30x30px') | and (cfg.imageSmallSize or '30x30px') | ||
or '40x40px' | or '40x40px' | ||
self.imageLeft = string.format('[[File:%s|%s | self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage | ||
or 'Information icon4.svg', imageSize) | or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" ) | ||
end | end | ||
end | end | ||
Baris 364: | Baris 340: | ||
self.imageRight = imageRight | self.imageRight = imageRight | ||
end | end | ||
-- set templatestyles | |||
self.base_templatestyles = cfg.templatestyles | |||
self.templatestyles = args.templatestyles | |||
end | end | ||
Baris 450: | Baris 430: | ||
function MessageBox:setAllNamespaceCategories() | function MessageBox:setAllNamespaceCategories() | ||
-- Set categories for all namespaces. | -- Set categories for all namespaces. | ||
if self.invalidTypeError then | |||
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText | |||
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) | |||
end | |||
if self.isSubstituted then | if self.isSubstituted then | ||
self:addCat('all', 'Pages with incorrectly substituted templates') | self:addCat('all', 'Pages with incorrectly substituted templates') | ||
Baris 495: | Baris 479: | ||
end | end | ||
local frame = mw.getCurrentFrame() | |||
root:wikitext( | root:wikitext(frame:extensionTag{ | ||
name = 'templatestyles', | name = 'templatestyles', | ||
args = { src = | 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 table. | -- Create the box table. | ||
local | local boxTable = root:tag('table') | ||
boxTable:attr('id', self.id or nil) | boxTable:attr('id', self.id or nil) | ||
for class | for i, class in ipairs(self.classes or {}) do | ||
boxTable:addClass(class or nil) | boxTable:addClass(class or nil) | ||
end | end | ||
Baris 535: | Baris 517: | ||
-- 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'): | imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') | ||
end | end | ||
imageLeftCell:wikitext(self.imageLeft or nil) | imageLeftCell:wikitext(self.imageLeft or nil) | ||
Baris 545: | Baris 527: | ||
row:tag('td') | row:tag('td') | ||
:addClass('mbox-empty-cell') | :addClass('mbox-empty-cell') | ||
end | end | ||
Baris 558: | Baris 539: | ||
:addClass('mbox-text-span') | :addClass('mbox-text-span') | ||
:wikitext(self.issue or nil) | :wikitext(self.issue or nil) | ||
if (self.talk or self.fix) | if (self.talk or self.fix) then | ||
textCellDiv:tag('span') | textCellDiv:tag('span') | ||
:addClass('hide-when-compact') | :addClass('hide-when-compact') | ||
Baris 572: | Baris 553: | ||
end | end | ||
if self.removalNotice then | if self.removalNotice then | ||
textCellDiv:tag(' | textCellDiv:tag('span') | ||
:addClass('hide-when-compact') | :addClass('hide-when-compact') | ||
:tag('i') | :tag('i') | ||
Baris 590: | Baris 571: | ||
-- 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'): | imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') | ||
end | end | ||
imageRightCell | imageRightCell | ||
Baris 609: | Baris 590: | ||
if self.invalidTypeError then | if self.invalidTypeError then | ||
root:tag('div') | root:tag('div') | ||
: | :addClass('mbox-invalid-type') | ||
: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.', |