Модуль:ArticleCandidatesNavigation: відмінності між версіями
Перейти до навігації
Перейти до пошуку
[перевірена версія] | [перевірена версія] |
Вилучено вміст Додано вміст
AtUkr (обговорення | внесок) Немає опису редагування |
AtUkr (обговорення | внесок) Немає опису редагування |
||
Рядок 24: | Рядок 24: | ||
local adjust |
local adjust |
||
for i = 1, days do |
for i = 1, days do |
||
if i |
if math.fmod(i, 7) == 1 then |
||
tbl:node(row) |
tbl:node(row) |
||
row = mw.html.create('tr') |
row = mw.html.create('tr') |
||
Рядок 119: | Рядок 119: | ||
:tag('td') |
:tag('td') |
||
:css('text-align', 'center') |
:css('text-align', 'center') |
||
:node(p.daysTable(args.pagename, args.linkText, args.days, args.dateFormat)) |
:node(p.daysTable(args.pagename, args.linkText, tonumber(args.days), args.dateFormat)) |
||
:done() |
:done() |
||
:tag('td') |
:tag('td') |
||
Рядок 134: | Рядок 134: | ||
:tag('td') |
:tag('td') |
||
:attr('colspan', '3') |
:attr('colspan', '3') |
||
:css('text-align', 'center') |
|||
:wikitext(args.seeAlso) |
:wikitext(args.seeAlso) |
||
:done() |
:done() |
Версія за 02:44, 27 березня 2021
Документація модуля[перегляд] [редагувати] [історія] [очистити кеш]
Модуль для шаблонів навігації на підсторінках ВП:ВИЛ {{ВПВИЛ-навігація}}, ВП:ПОЛ {{ВППОЛ-навігація}} тощо.
Використання
{{#invoke:ArticleCandidatesNavigation|navigation |pagename=Вікіпедія:Статті-кандидати на вилучення |linkText=На вилучення |seeAlso= ;Також : [[Вікіпедія:Статті-кандидати на вилучення|усі кандидати на вилучення]] |reminder=Пам'ятайте, що статті вилучаються за підсумками обговорення, а не голосування. Неаргументовані голоси не враховуються! }}
Результат
;Також |
Функції
Напівжирним позначено обов'язкові параметри.
navigation
Основна функція. Генерує шаблон з навігацією по підсторінках. Параметри:
|pagename=
- Повна назва кореневої сторінки.
|linkText=
- Текст посилання, яке відображається зліва від календаря підсторінок.
|days=
- Кількість днів, які відображаються в календарі підсторінок (включно з поточним). За замовчуванням 7.
|seeAlso=
- Додаткова інформація. Відображається меншим шрифтом, списки горизонтальні.
|reminder=
- Окреме нагадування. Відкоремлюється від тіла шаблону горизонтальною лінією.
|closed=
- Закриття обговорення. Будь-який вміст параметру підставляє шаблон {{closed}}.
|opencat=
- Категорія для сторінок з відкритими обговореннями.
|closedcat=
- Категорія для сторінок із закритими обговореннями.
|nocat=
- Відключення категоризації шаблоном. Будь-який вміст параметру запобігає включенню сторінки у категорії, вказані в
opencat
іclosedcat
.
- Відключення категоризації шаблоном. Будь-який вміст параметру запобігає включенню сторінки у категорії, вказані в
|dateFormat=
- Формат дати у назвах підсторінок. Див. довідку. За замовчуванням
j xg Y
.
- Формат дати у назвах підсторінок. Див. довідку. За замовчуванням
|color=
- Колір рамки і горизонтальної лінії-відокремлювача. За замовчуванням
#6cbed0
- Колір рамки і горизонтальної лінії-відокремлювача. За замовчуванням
dayLink
Генерує посилання на підсторінку, якщо підсторінки не існує - повертає текст сірого кольору. Параметри:
|pagename=
|dateFormat=
- Аналогічні відповідним параметрам функції navigation.
|targetDay=
- День, на підсторінку якого потрібне посилання. Формат дати повинен підтримуватися функцією парсеру #time. За замовчуванням поточний день.
daysTable
Генерує таблицю-календар підсторінок. Параметри:
|pagename=
|linkText=
|days=
|dateFormat=
- Аналогічні відповідним параметрам функції navigation.
Документація вище включена з Модуль:ArticleCandidatesNavigation/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
local p = {}
function p.dayLink(pagename, shift, dateFormat)
local frame = mw.getCurrentFrame()
local targetDay = frame:callParserFunction('#time', dateFormat, shift .. 'days')
local linkText = frame:callParserFunction('#time', 'j xg', shift .. 'days')
local exists = frame:callParserFunction('#ifexist', pagename .. '/' .. targetDay, 1, 0)
local link
if exists == 1 then
link = '[[' .. pagename .. '/' .. targetDay .. '|' .. linkText .. ']]'
else
link = '<span style="color: gray;">' .. linkText .. '</span>'
end
return link
end
function p.daysTable(pagename, linkText, days, dateFormat)
local tbl = mw.html.create('table')
tbl
:addClass('center')
:css('width', 'auto')
:css('margin', '0 auto')
local row
local adjust
for i = 1, days do
if math.fmod(i, 7) == 1 then
tbl:node(row)
row = mw.html.create('tr')
if i == 1 then
row:tag('td')
:attr('rowspan', math.ceil(days, 7))
:css('font-weight', 'bold')
:wikitext('[[' .. pagename .. '|' .. linkText .. ':]]')
end
if i / 7 > 1 then
row:css('font-size', 'small')
end
adjust = 2 * i + 5
end
row:tag('td'):wikitext(p.dayLink(pagename, i - adjust, dateFormat))
end
return tbl
end
local function findClosest(pagename, day, sign, dateFormat)
local frame = mw.getCurrentFrame()
local targetDay
local exists
for i = 1, 28 do
targetDay = frame:callParserFunction('#time', dateFormat, sign .. i .. 'days')
exists = frame:callParserFunction('#ifexist', pagename .. '/' .. targetDay, 1, 0)
if exists == 1 then
return targetDay
end
end
return nil
end
local function PrevNext(pagename, dateFormat)
local frame = mw.getCurrentFrame()
local pageDay = frame:expandTemplate{ title = 'Date Converter', args = { '{{SUBPAGENAME}}' } }
local prv = findClosest(pagename, pageDay, '-', dateFormat)
local nxt = findClosest(pagename, pageDay, '+', dateFormat)
local res = ''
if prv then
res = res .. '[[' .. pagename .. '/' .. prv .. '|' .. '<<]]'
end
if prv and nxt then
res = res .. ' | '
end
if nxt then
res = res .. '[[' .. pagename .. '/' .. nxt .. '|' .. '>>]]'
end
return res
end
function p.navigation(frame)
local args = frame.args
if not args.days then
args.days = 7
end
if not args.dateFormat then
args.dateFormat = 'j xg Y'
end
if not args.color then
args.color = '#6cbed0'
end
local res = ''
if args.closed == 1 then
res = res .. '{{closed}}'
elseif args.opencat then
res = res .. '[[Категорія:' .. args.opencat .. ']]'
end
local nav = mw.html.create('div')
if args.id then
nav:attr('id', args.id)
end
if args.class then
nav:addClass(args.class)
end
nav
:css('background', '#fff')
:css('border', '1px solid' .. args.color)
:css('margin-bottom', '1em')
:css('padding', '.5em .25em .25em')
:css('text-align', 'center')
:tag('table')
:tag('tr')
:tag('td')
:css('width', '75px')
:wikitext(' ')
:done()
:tag('td')
:css('text-align', 'center')
:node(p.daysTable(args.pagename, args.linkText, tonumber(args.days), args.dateFormat))
:done()
:tag('td')
:css('width', '75px')
:css('text-align', 'right')
:css('font-size', '120%')
:css('font-weight', 'bold')
:wikitext(PrevNext(args.pagename, args.dateFormat))
:done()
:done()
:tag('tr')
:addClass('hlist')
:css('font-size', 'small')
:tag('td')
:attr('colspan', '3')
:css('text-align', 'center')
:wikitext(args.seeAlso)
:done()
:done()
:done()
res = res .. tostring(nav)
return res
end
return p