Модуль:Message box: відмінності між версіями
Вилучено вміст Додано вміст
Replace Module:No globals with require( "strict" ) |
require strict per TPER |
||
Рядок 1: | Рядок 1: | ||
-- This is a meta-module for producing message box templates, including |
|||
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. |
|||
-- Load necessary modules. |
|||
require('strict') |
require('strict') |
||
local getArgs |
local getArgs |
||
local yesno = require('Module:Yesno') |
local yesno = require('Module:Yesno') |
||
-- 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 = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} |
||
Рядок 183: | Рядок 190: | ||
self:addClass(args.class) |
self:addClass(args.class) |
||
self.style = args.style |
self.style = args.style |
||
self.lang = args.lang |
|||
self.dir = args.dir or (args.lang and 'auto' or nil) |
|||
self.attrs = args.attrs |
self.attrs = args.attrs |
||
Рядок 261: | Рядок 270: | ||
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) |
|||
'%s [[%s|%s]].', |
|||
talkText = string.format('([[%s|talk]])', talkLink) |
|||
talkText, |
|||
else |
|||
talk, |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
else |
|||
'%s [[%s|%s]].', |
|||
⚫ | |||
talkText, |
|||
⚫ | |||
talk, |
|||
talkText, |
|||
⚫ | |||
⚫ | |||
) |
|||
talk |
|||
else |
|||
) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
talkText, |
|||
⚫ | |||
talk |
|||
) |
|||
end |
|||
end |
|||
self.talk = talkText |
self.talk = talkText |
||
end |
end |
||
Рядок 296: | Рядок 299: | ||
end |
end |
||
if date then |
if date then |
||
self.date = string.format(" < |
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 |
||
Рядок 318: | Рядок 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. |
||
Рядок 339: | Рядок 345: | ||
self.imageRight = imageRight |
self.imageRight = imageRight |
||
end |
end |
||
-- set templatestyles |
|||
self.base_templatestyles = cfg.templatestyles |
|||
self.templatestyles = args.templatestyles |
|||
end |
end |
||
Рядок 476: | Рядок 478: | ||
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') |
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') |
||
)) |
)) |
||
⚫ | |||
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 |
|||
⚫ | |||
root:wikitext(frame:extensionTag{ |
|||
name = 'templatestyles', |
|||
args = { src = self.templatestyles }, |
|||
⚫ | |||
end |
end |
||
Рядок 503: | Рядок 490: | ||
:attr('role', 'presentation') |
:attr('role', 'presentation') |
||
⚫ | |||
boxTable:attr('lang', self.lang) |
|||
end |
|||
if self.dir then |
|||
boxTable:attr('dir', self.dir) |
|||
end |
|||
if self.attrs then |
if self.attrs then |
||
boxTable:attr(self.attrs) |
boxTable:attr(self.attrs) |
||
Рядок 516: | Рядок 509: | ||
-- 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'):css('width', '52px') |
||
end |
end |
||
imageLeftCell:wikitext(self.imageLeft or nil) |
imageLeftCell:wikitext(self.imageLeft or nil) |
||
Рядок 526: | Рядок 519: | ||
row:tag('td') |
row:tag('td') |
||
:addClass('mbox-empty-cell') |
:addClass('mbox-empty-cell') |
||
:cssText(self.imageEmptyCellStyle or nil) |
|||
end |
end |
||
Рядок 538: | Рядок 532: | ||
: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') |
||
Рядок 552: | Рядок 546: | ||
end |
end |
||
if self.removalNotice then |
if self.removalNotice then |
||
textCellDiv:tag(' |
textCellDiv:tag('small') |
||
:addClass('hide-when-compact') |
:addClass('hide-when-compact') |
||
:tag('i') |
:tag('i') |
||
Рядок 570: | Рядок 564: | ||
-- 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'):css('width', '52px') |
||
end |
end |
||
imageRightCell |
imageRightCell |
||
Рядок 589: | Рядок 583: | ||
if self.invalidTypeError then |
if self.invalidTypeError then |
||
root:tag('div') |
root:tag('div') |
||
: |
: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.', |