3675
правок
Mansur700 (обсуждение | вклад) Нет описания правки |
Mansur700 (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
-- Load necessary modules. | -- Load necessary modules. | ||
require('Module:No globals') | |||
local getArgs | local getArgs | ||
local categoryHandler = require('Module:Category handler')._main | local categoryHandler = require('Module:Category handler')._main | ||
local yesno = require('Module:Yesno') | local yesno = require('Module:Yesno') | ||
local boxDate = require('Module:Calendar').bxDate; | |||
-- 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 | -- Define constants | ||
Строка 55: | Строка 55: | ||
table.sort(nums) | table.sort(nums) | ||
return nums | return nums | ||
end | |||
-- локальная обёртка, игнорирует таблицу с номерами дня, месяца и года | |||
local function formatDate(txtDateIn, strFormat, params) | |||
local txtDateOut, date, status = boxDate(txtDateIn, strFormat, params) | |||
if status.brk then | |||
return error(status.errorText) | |||
else | |||
return txtDateOut | |||
end | |||
end | end | ||
Строка 284: | Строка 294: | ||
local date | local date | ||
if args.date and args.date ~= '' then | if args.date and args.date ~= '' then | ||
local status, result = pcall(formatDate, args.date) | |||
date = | if status then | ||
else | date = string.format("(<span class='date'>%s</span>)", result) | ||
else | |||
date = string.format("<span class='error'>(Строка «%s» не является верной датой, пожалуйста, укажите дату в формате <code>ГГГГ-ММ-ДД</code>)</span>", args.date) | |||
end | |||
elseif args.date == '' and self.isTemplatePage then | elseif args.date == '' and self.isTemplatePage then | ||
date = lang:formatDate('d | date = string.format("(<span class='date'>%s</span>)", formatDate( lang:formatDate('Y-m-d') ) ) -- тут возникновения ошибки, связанной с пользовательским вводом, не будет | ||
end | end | ||
if date then | if date then | ||
self.date = string.format(" '' | self.date = string.format(" <span class='mbox-date'>''%s''</span>", date) | ||
end | end | ||
self.info = args.info | self.info = args.info | ||
if yesno(args.removalnotice) then | if yesno(args.removalnotice) then | ||
self.removalNotice = cfg.removalNotice | self.removalNotice = cfg.removalNotice | ||
end | |||
if args.shortFix then | |||
self.shortFix = args.shortFix | |||
end | end | ||
end | end | ||
Строка 347: | Строка 360: | ||
local args = self.args | local args = self.args | ||
local cfg = self.cfg | local cfg = self.cfg | ||
local date = nil | |||
if not cfg.allowMainspaceCategories then | if not cfg.allowMainspaceCategories then | ||
Строка 359: | Строка 373: | ||
-- The following is roughly equivalent to the old {{Ambox/category}}. | -- The following is roughly equivalent to the old {{Ambox/category}}. | ||
local | local status, result = pcall(formatDate, args.date, 'xg Y') | ||
if status then | |||
date = result | |||
end | |||
date = type(date) == 'string' and date | date = type(date) == 'string' and date | ||
local preposition = 'с' | local preposition = 'с' | ||
Строка 370: | Строка 387: | ||
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 = string.format('%s %s %s %s', mainCat, preposition, date, suffix) | |||
local catTitle = string.format('%s %s %s %s', mainCat, preposition | |||
self:addCat(0, catTitle) | self:addCat(0, catTitle) | ||
catTitle = getTitleObject('Категория:' .. catTitle) | catTitle = getTitleObject('Категория:' .. catTitle) | ||
if not | local status, result = pcall(formatDate, args.date) | ||
self:addCat(0, 'Тептар:Статьи с недопустимым параметром даты в шаблоне') | if not status then | ||
end | self:addCat(0, 'Тептар:Статьи с недопустимым параметром даты в шаблоне-сообщении') | ||
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) | ||
Строка 557: | Строка 569: | ||
:tag('i') | :tag('i') | ||
:wikitext(string.format(" (%s)", self.removalNotice)) | :wikitext(string.format(" (%s)", self.removalNotice)) | ||
end | |||
if self.shortFix then | |||
textCell:tag('div') | |||
:addClass('mbox-multiply') | |||
:tag('span') | |||
:wikitext(string.format("%s", self.shortFix)) | |||
:tag('span') | |||
:wikitext(self.date and (' ' .. self.date) or nil) | |||
end | end | ||
else | else |