در حال ویرایش پودمان: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. | ||
local lang = mw.language.getContentLanguage() | local lang = mw.language.getContentLanguage() | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
خط ۷۶: | خط ۷۳: | ||
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('', cat, sort) | ||
else | else | ||
cat = | cat = string.format('', 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. | ||
if cfg.allowId then | |||
self.id = args.id | |||
if | |||
self | |||
end | end | ||
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) | ||
خط ۲۰۴: | خط ۱۸۳: | ||
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]].', | |||
talkText, | |||
talk, | |||
talkTitle.prefixedText | |||
) | |||
else | |||
talkText = string.format( | |||
'%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('F Y') | date = lang:formatDate('F Y') | ||
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 | ||
end | end | ||
خط ۳۴۲: | خط ۳۱۱: | ||
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 | ||
خط ۳۸۰: | خط ۳۴۵: | ||
or args['category' .. tostring(num)] | or args['category' .. tostring(num)] | ||
local allCat = args['all' .. tostring(num)] | local allCat = args['all' .. tostring(num)] | ||
mainCat = type(mainCat) == 'string' and mainCat | --mainCat = type(mainCat) == 'string' and mainCat | ||
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', mainCat) | ||
self:addCat(0, catTitle) | --self:addCat(0, catTitle) | ||
-- catTitle = getTitleObject('رده:' .. catTitle) | |||
if not catTitle or not catTitle.exists then | --if not catTitle or not catTitle.exists then | ||
self:addCat(0, 'مقالههای دارای پارامتر تاریخ نادرست در الگو') | --self:addCat(0, 'مقالههای دارای پارامتر تاریخ نادرست در الگو') | ||
end | --end | ||
elseif mainCat and (not date or date == '') then | --elseif mainCat and (not date or date == '') then | ||
self:addCat(0, mainCat) | --self:addCat(0, mainCat) | ||
end | --end | ||
if allCat then | if allCat then | ||
self:addCat(0, allCat) | self:addCat(0, allCat) | ||
خط ۴۳۳: | خط ۳۹۸: | ||
if self.categoryNums and #self.categoryNums > 0 then | if self.categoryNums and #self.categoryNums > 0 then | ||
templateCat = templateErrorCategory | templateCat = templateErrorCategory | ||
templateSort = ' | templateSort = 'C' | ||
end | end | ||
end | end | ||
خط ۴۶۱: | خط ۴۲۶: | ||
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 | 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 | ||
خط ۵۸۲: | خط ۵۲۲: | ||
-- 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( | ||
'این جعبه پیام از پارامتر | 'این جعبه پیام از پارامتر «نوع=%s» نامعتبر استفاده میکند و نیازمند اصلاح است.', | ||
self.type or '' | self.type or '' | ||
)) | )) | ||
خط ۶۲۸: | خط ۵۶۸: | ||
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() |