Модуль:Message box: различия между версиями

997 байт добавлено ,  2 года назад
нет описания правки
Нет описания правки
Нет описания правки
 
Строка 3: Строка 3:


-- Load necessary modules.
-- Load necessary modules.
--require('Module:No globals')
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()
local dates = require('Module:Dates')


-- 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
if dates.Yyyymmdd(args.date) == nil then
local status, result = pcall(formatDate, args.date)
date = args.date
if status then
else
date = string.format("(<span class='date'>%s</span>)", result)
local y, m, d = dates.Yyyymmdd(args.date)
else  
    date = string.format('%4i-%02i-%02i', y, m, d)
date = string.format("<span class='error'>(Строка «%s» не является верной датой, пожалуйста, укажите дату в формате <code>ГГГГ-ММ-ДД</code>)</span>", args.date)
    end
end  
elseif args.date == '' and self.isTemplatePage then
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('d xg Y')
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(" ''(%s)''", lang:formatDate('d xg Y', date))
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 date = args.date
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
if dates.Yyyymmdd(args.date) == nil then
local catTitle = string.format('%s %s %s %s', mainCat, preposition, date, suffix)
date = args.date
else
local y, m, d = dates.Yyyymmdd(args.date)
date = string.format('%4i-%02i-%02i', y, m, d)
end
local catTitle = string.format('%s %s %s %s', mainCat, preposition, lang:formatDate('xg Y', date), suffix)
self:addCat(0, catTitle)
self:addCat(0, catTitle)
catTitle = getTitleObject('Категория:' .. catTitle)
catTitle = getTitleObject('Категория:' .. catTitle)
if not catTitle or not catTitle.exists then
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