در حال ویرایش پودمان:Message box
این ویرایش را میتوان خنثی کرد. لطفاً تفاوت زیر را بررسی کنید تا تأیید کنید که این چیزی است که میخواهید انجام دهید، سپس تغییرات زیر را ذخیره کنید تا خنثیسازی ویرایش را به پایان ببرید.
نسخهٔ فعلی | متن شما | ||
خط ۱: | خط ۱: | ||
-- برای فارسیسازی بهتر، بعضی قسمتهای این پودمان تغییر یافتهاست که در همانجا اشاره شدهاست. لطفاً هنگام بهروزرسانی بهدقت پودمان را تغییر دهید. | |||
-- This is a meta-module for producing message box templates, including | -- This is a meta-module for producing message box templates, including | ||
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. | -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. | ||
-- Load necessary modules. | -- Load necessary modules. | ||
require(' | 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. | ||
خط ۱۳: | خط ۱۴: | ||
-- Define constants | -- Define constants | ||
local CONFIG_MODULE = 'Module:Message box/configuration' | local CONFIG_MODULE = 'Module:Message box/configuration' | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
خط ۷۶: | خط ۷۶: | ||
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 | ||
خط ۱۲۳: | خط ۱۱۰: | ||
obj.categories = {} | obj.categories = {} | ||
obj.classes = {} | obj.classes = {} | ||
return setmetatable(obj, MessageBox) | return setmetatable(obj, MessageBox) | ||
خط ۱۳۴: | خط ۱۱۹: | ||
end | end | ||
if sort then | if sort then | ||
cat = | cat = string.format('[[رده:%s|%s]]', cat, sort) | ||
else | else | ||
cat = | cat = string.format('[[رده:%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) | ||
خط ۱۷۵: | خط ۱۵۹: | ||
-- Add attributes, classes and styles. | -- Add attributes, classes and styles. | ||
self.id = args.id | self.id = args.id | ||
if yesno(args.plainlinks) ~= false then | if yesno(args.plainlinks) ~= false then | ||
self:addClass('plainlinks') | self:addClass('plainlinks') | ||
خط ۲۰۴: | خط ۱۸۴: | ||
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( | ||
خط ۲۱۵: | خط ۱۹۶: | ||
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}}. | ||
خط ۲۶۹: | خط ۲۵۰: | ||
end | end | ||
if talkTitle and talkTitle.exists then | if talkTitle and talkTitle.exists then | ||
local talkText = 'گفتگوی مربوطه ممکن است در' | |||
if talkArgIsTalkPage then | |||
talkText = string.format( | |||
'%s [[%s|%s]] %s.', | |||
talkText, | |||
talk, | |||
talkTitle.prefixedText, | |||
'یافت شود' | |||
) | |||
else | |||
talkText = string.format( | |||
'%s [[%s#%s|صفحهٔ بحث]] %s.', | |||
talkText, | |||
talkTitle.prefixedText, | |||
talk, | |||
'یافت شود' | |||
) | |||
end | |||
self.talk = talkText | self.talk = talkText | ||
end | end | ||
خط ۳۰۳: | خط ۲۷۸: | ||
date = args.date | date = args.date | ||
elseif args.date == '' and self.isTemplatePage then | elseif args.date == '' and self.isTemplatePage then | ||
date = lang:formatDate(' | date = lang:formatDate('xiF xiY') | ||
end | end | ||
if date then | if date then | ||
self.date = | self.date = string.format(" <small>''(%s)''</small>", date) | ||
end | end | ||
self.info = args.info | self.info = args.info | ||
خط ۳۴۲: | خط ۳۱۷: | ||
and (cfg.imageSmallSize or '30x30px') | and (cfg.imageSmallSize or '30x30px') | ||
or '40x40px' | or '40x40px' | ||
self.imageLeft = | self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage | ||
or 'Imbox notice.png', imageSize) | or 'Imbox notice.png', imageSize) | ||
end | end | ||
خط ۳۵۲: | خط ۳۲۷: | ||
self.imageRight = imageRight | self.imageRight = imageRight | ||
end | end | ||
end | end | ||
خط ۳۸۳: | خط ۳۵۴: | ||
allCat = type(allCat) == 'string' and allCat | allCat = type(allCat) == 'string' and allCat | ||
if mainCat and date and date ~= '' then | if mainCat and date and date ~= '' then | ||
local catTitle = | local catTitle = string.format('%s %s %s', mainCat, preposition, date) | ||
self:addCat(0, catTitle) | self:addCat(0, catTitle) | ||
catTitle = getTitleObject('رده:' .. catTitle) | catTitle = getTitleObject('رده:' .. catTitle) | ||
خط ۴۶۱: | خط ۴۳۲: | ||
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 {}), | ||
خط ۴۸۵: | خط ۴۵۰: | ||
root:tag('b') | root:tag('b') | ||
:addClass('error') | :addClass('error') | ||
:wikitext( | :wikitext(string.format( | ||
'الگوی <code>%s[[الگو:%s|%s]]%s</code> اشتباه جانشین شدهاست.', | 'الگوی <code>%s[[الگو:%s|%s]]%s</code> اشتباه جانشین شدهاست.', | ||
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') | mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') | ||
)) | )) | ||
end | end | ||
خط ۵۲۸: | خط ۴۷۹: | ||
-- 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) | ||
خط ۵۳۸: | خط ۴۸۹: | ||
row:tag('td') | row:tag('td') | ||
:addClass('mbox-empty-cell') | :addClass('mbox-empty-cell') | ||
:cssText(self.imageEmptyCellStyle or nil) | |||
end | end | ||
خط ۵۴۶: | خط ۴۹۸: | ||
-- 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 (self.talk or self.fix) then | if (self.talk or self.fix) and 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 self.info and not self.isSmall then | if self.info and not self.isSmall then | ||
textCellSpan | |||
:tag('span') | :tag('span') | ||
:addClass('hide-when-compact') | :addClass('hide-when-compact') | ||
خط ۵۶۴: | خط ۵۱۶: | ||
end | end | ||
if self.removalNotice then | if self.removalNotice then | ||
textCellSpan:tag('small') | |||
:addClass('hide-when-compact') | :addClass('hide-when-compact') | ||
:tag('i') | :tag('i') | ||
:wikitext( | :wikitext(string.format(" (%s)", self.removalNotice)) | ||
end | end | ||
else | else | ||
خط ۵۸۲: | خط ۵۳۴: | ||
-- 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 | ||
خط ۶۰۱: | خط ۵۵۳: | ||
if self.invalidTypeError then | if self.invalidTypeError then | ||
root:tag('div') | root:tag('div') | ||
: | :css('text-align', 'center') | ||
:wikitext( | :wikitext(string.format( | ||
'این جعبه پیام از پارامتر نامعتبر «type=%s» استفاده میکند و نیازمند اصلاح است.', | 'این جعبه پیام از پارامتر نامعتبر «type=%s» استفاده میکند و نیازمند اصلاح است.', | ||
self.type or '' | self.type or '' | ||
)) | )) | ||
end | end | ||
-- Add categories. | -- Add categories. | ||
root:wikitext(self:renderCategories() or nil) | root:wikitext(self:renderCategories() or nil) |