Модуль:RequestTable
Эта страница требует существенной переработки. |
Файл:Padlock-silver.svg | Этот модуль относится к критическим. У него очень много включений или он используется с подстановкой. Из-за опасности вандализма или ошибочного редактирования он был защищён. |
Файл:OOjs UI icon notice-warning.svg | Прежде чем вносить какие-либо изменения в данный модуль, просьба оттестировать их в /песочнице и проверить результат на странице с /контрольными примерами. Изменения могут быть внесены после этого в данный модуль всего одной правкой. |
Модуль предназначен для формирования таблицы ссылок на страницы обсуждения на ВП:КУ, ВП:КПМ, ВП:КУЛ, ВП:КО, ВП:КР, ВП:ВУС.
Функции
Формирование таблицы по датам
{{#invoke:RequestTable|TableByDate|<дата>|<список>|<дата>|<список>|...|<дата>|<список>|link=<путь>|header=<заголовок колонки>}}
Параметры
link
— путь к странице (по умолчанию 'РуСказки:К переименованию')header
— заголовок колонки (по умолчанию 'Статьи, вынесенные на переименование')days
— количество дней, после которых обсуждения считаются просроченными- Остальные параметры неименованные и должны следовать парами: дата, список.
Пример
{{#invoke:RequestTable|TableByDate|link=РуСказки:К удалению|header=Статьи, вынесенные на удаление |2017-5-17|<s>[[Гиаферон]]</s> • [[Мацестинская чайная фабрика]] • <s>[[Стенковой Владимир Ильич]]</s> |2017-5-16|[[Роуз Коэн]] • <s>[[Я вам не негр]]</s> • <s>[[Розы (картина Крёйера)]]</s> }}
Результат
Дата | Статьи, вынесенные на удаление |
---|---|
17 мая 2017 | |
16 мая 2017 | Роуз Коэн • |
---- Этот модуль формирует таблицу по списку local p = {} local function buildTable(head, rows) local tabl = mw.html.create( 'table' ) :addClass('standard'); tabl:tag('tr') :tag('th'):wikitext(head[1]):done() :tag('th'):wikitext(head[2]); for i, r in ipairs(rows) do if r[2] == nil then tabl:tag('tr') :tag('td') :attr('colspan', '2') :css('text-align', 'center') :css('color', 'white') :css('background', 'gray') :wikitext(r[1]); else tabl:tag('tr') :tag('td'):wikitext(r[1]):done() :tag('td'):wikitext(r[2]); end end return tostring(tabl); end function p.TableByDate(frame) local new_args = frame.args; if new_args[1] == nil then local parent = frame:getParent(); new_args = parent.args; end local headertext = new_args['header'] or 'Статьи, вынесенные на переименование'; local link = new_args['link'] or 'РуСказки:К переименованию'; local head = {'Дата', headertext }; local daysEarlier = (new_args['days'] and tonumber(new_args['days'])) or 0; if daysEarlier <= 0 then daysEarlier = 8 -- количество дней для просроченных обсуждений по-умолчанию end; local i=1; local j=1; local rows = {}; local divided = false; local lang = mw.language.new('ru'); while new_args[i] ~= nil do local y, m, d = mw.ustring.match(new_args[i], '^(%d+)%-(%d+)%-(%d+)$'); if y ~= nil then local datestr = lang:formatDate('j xg Y', new_args[i], false); -- mw.logObject(datestr, 'datestr'); if datestr ~= nil then local col1 = '<b>[[' .. link .. '/' .. datestr .. "|" .. datestr .. ']]</b> '; local rowTime = tonumber(lang:formatDate('Ymd', new_args[i], false)); local eightDaysEarlier = tonumber(lang:formatDate('Ymd', '-' .. daysEarlier .. 'days', false)); if rowTime > eightDaysEarlier then datestr = lang:formatDate('j" "xg', new_args[i] .. '+' .. daysEarlier-1 .. ' days'); col1 = col1 .. '<small>до ' .. datestr .. '</small>'; else if not divided then if j > 1 then rows[j] = { '<b>Просроченные обсуждения, в которых нужно подвести итог</b>', nil} j = j+1; end divided = true; end end rows[j] = { col1, ''} end else if rows[j][1] ~= nil then rows[j][2]= new_args[i]; j = j+1; end end i = i+1; end return buildTable(head, rows); end return p;