<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://ru.wiki-protopia.org/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ANavbox</id>
		<title>Модуль:Navbox - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://ru.wiki-protopia.org/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ANavbox"/>
		<link rel="alternate" type="text/html" href="https://ru.wiki-protopia.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox&amp;action=history"/>
		<updated>2026-05-05T21:42:32Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>https://ru.wiki-protopia.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox&amp;diff=1627&amp;oldid=prev</id>
		<title>DileSoft в 10:27, 28 августа 2017</title>
		<link rel="alternate" type="text/html" href="https://ru.wiki-protopia.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox&amp;diff=1627&amp;oldid=prev"/>
				<updated>2017-08-28T10:27:18Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://ru.wiki-protopia.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox&amp;amp;diff=1627&amp;amp;oldid=1620&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>DileSoft</name></author>	</entry>

	<entry>
		<id>https://ru.wiki-protopia.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox&amp;diff=1620&amp;oldid=prev</id>
		<title>Princenoire в 10:21, 28 августа 2017</title>
		<link rel="alternate" type="text/html" href="https://ru.wiki-protopia.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox&amp;diff=1620&amp;oldid=prev"/>
				<updated>2017-08-28T10:21:10Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://ru.wiki-protopia.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox&amp;amp;diff=1620&amp;amp;oldid=1617&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Princenoire</name></author>	</entry>

	<entry>
		<id>https://ru.wiki-protopia.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox&amp;diff=1617&amp;oldid=prev</id>
		<title>Princenoire: Новая страница: «-- -- Этот модуль реализует {{Навигационная таблица}}. -- Основной объём кода заимствован из…»</title>
		<link rel="alternate" type="text/html" href="https://ru.wiki-protopia.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Navbox&amp;diff=1617&amp;oldid=prev"/>
				<updated>2017-08-28T09:59:16Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «-- -- Этот модуль реализует {{Навигационная таблица}}. -- Основной объём кода заимствован из…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&lt;br /&gt;
-- Этот модуль реализует {{Навигационная таблица}}.&lt;br /&gt;
-- Основной объём кода заимствован из английского Module:Navbox.&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs -- lazily initialized&lt;br /&gt;
&lt;br /&gt;
local args&lt;br /&gt;
local border&lt;br /&gt;
local listnums = {}&lt;br /&gt;
local ODD_EVEN_MARKER = '\127_ODDEVEN_\127'&lt;br /&gt;
local RESTART_MARKER = '\127_ODDEVEN0_\127'&lt;br /&gt;
local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127'&lt;br /&gt;
&lt;br /&gt;
local maintitle&lt;br /&gt;
local name&lt;br /&gt;
local navbar&lt;br /&gt;
local above&lt;br /&gt;
local image&lt;br /&gt;
local below&lt;br /&gt;
&lt;br /&gt;
local titlestyle&lt;br /&gt;
local groupstyle&lt;br /&gt;
local bodystyle&lt;br /&gt;
local basestyle&lt;br /&gt;
local liststyle&lt;br /&gt;
local oddstyle&lt;br /&gt;
local evenstyle&lt;br /&gt;
local evenoddARG&lt;br /&gt;
local abovestyle&lt;br /&gt;
local belowstyle&lt;br /&gt;
local imageleft&lt;br /&gt;
local imageleftstyle&lt;br /&gt;
local style&lt;br /&gt;
&lt;br /&gt;
local groupwidth&lt;br /&gt;
local listpadding&lt;br /&gt;
&lt;br /&gt;
local bodyclass&lt;br /&gt;
local titleclass&lt;br /&gt;
local aboveclass&lt;br /&gt;
local belowclass&lt;br /&gt;
local groupclass&lt;br /&gt;
local listclass&lt;br /&gt;
local imageclass&lt;br /&gt;
&lt;br /&gt;
local function striped(wikitext)&lt;br /&gt;
	-- Return wikitext with markers replaced for odd/even striping.&lt;br /&gt;
	-- Child (subgroup) navboxes are flagged with a category that is removed&lt;br /&gt;
	-- by parent navboxes. The result is that the category shows all pages&lt;br /&gt;
	-- where a child navbox is not contained in a parent navbox.&lt;br /&gt;
	local orphanCat = '[[Категория:Навигационные шаблоны без родителя]]'&lt;br /&gt;
	if border == 'subgroup' and args.orphan ~= 'yes' then&lt;br /&gt;
		-- No change; striping occurs in outermost navbox.&lt;br /&gt;
		return wikitext .. orphanCat&lt;br /&gt;
	end&lt;br /&gt;
	local first, second = 'odd', 'even'&lt;br /&gt;
	if args.evenodd then&lt;br /&gt;
		if args.evenodd == 'swap' then&lt;br /&gt;
			first, second = second, first&lt;br /&gt;
		else&lt;br /&gt;
			first = args.evenodd&lt;br /&gt;
			second = first&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local changer&lt;br /&gt;
	if first == second then&lt;br /&gt;
		changer = first&lt;br /&gt;
	else&lt;br /&gt;
		local index = 0&lt;br /&gt;
		changer = function (code)&lt;br /&gt;
			if code == '0' then&lt;br /&gt;
				-- Current occurrence is for a group before a nested table.&lt;br /&gt;
				-- Set it to first as a valid although pointless class.&lt;br /&gt;
				-- The next occurrence will be the first row after a title&lt;br /&gt;
				-- in a subgroup and will also be first.&lt;br /&gt;
				index = 0&lt;br /&gt;
				return first&lt;br /&gt;
			end&lt;br /&gt;
			index = index + 1&lt;br /&gt;
			return index % 2 == 1 and first or second&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local regex = orphanCat:gsub('([%[%]])', '%%%1')&lt;br /&gt;
	return (wikitext:gsub(regex, ''):gsub(REGEX_MARKER, changer))  -- () omits gsub count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addNewline(s)&lt;br /&gt;
	if s:match('^[*:;#]') or s:match('^{|') then&lt;br /&gt;
		return '\n' .. s ..'\n'&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderNavBar(titleCell)&lt;br /&gt;
&lt;br /&gt;
	if navbar ~= 'off' and navbar ~= 'plain' and not (not name and mw.getCurrentFrame():getParent():getTitle():gsub('/песочница$', '') == 'Шаблон:Навигационная таблица') then&lt;br /&gt;
		&lt;br /&gt;
		-- Check color contrast of the gear icon&lt;br /&gt;
		local styleratio = require('Module:Color contrast')._styleratio&lt;br /&gt;
		local gearColor = ''&lt;br /&gt;
		local contrastStyle = titlestyle or basestyle&lt;br /&gt;
		local gearStyleBlack = (contrastStyle and mw.text.unstripNoWiki(contrastStyle) .. '; color:#666;' or '')&lt;br /&gt;
		local gearStyleWhite = (contrastStyle and mw.text.unstripNoWiki(contrastStyle) .. '; color:#fff;' or '')&lt;br /&gt;
		if styleratio{gearStyleBlack} &amp;lt; styleratio{gearStyleWhite} then&lt;br /&gt;
			gearColor = ' white'&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		--- Gear creation&lt;br /&gt;
		titleCell&lt;br /&gt;
			:tag('span')&lt;br /&gt;
				:css('float', 'left')&lt;br /&gt;
				:css('text-align', 'left')&lt;br /&gt;
				:css('width', '5em')&lt;br /&gt;
				:css('margin-right', '0.5em')&lt;br /&gt;
				:wikitext('[[Файл:Wikipedia interwiki section gear icon' .. gearColor .. '.svg|14px|Просмотр этого шаблона|link=Шаблон:' .. name .. '|alt=⛭]]')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Title row&lt;br /&gt;
--&lt;br /&gt;
local function renderTitleRow(tbl)&lt;br /&gt;
	if not maintitle then return end&lt;br /&gt;
&lt;br /&gt;
	local titleRow = tbl:tag('tr')&lt;br /&gt;
&lt;br /&gt;
	if args.titlegroup then&lt;br /&gt;
		titleRow&lt;br /&gt;
			:tag('th')&lt;br /&gt;
				:attr('scope', 'row')&lt;br /&gt;
				:addClass('navbox-group')&lt;br /&gt;
				:addClass(args.titlegroupclass)&lt;br /&gt;
				:cssText(basestyle)&lt;br /&gt;
				:cssText(groupstyle)&lt;br /&gt;
				:cssText(args.titlegroupstyle)&lt;br /&gt;
				:wikitext(args.titlegroup)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleCell = titleRow:tag('th'):attr('scope', 'col')&lt;br /&gt;
&lt;br /&gt;
	if args.titlegroup then&lt;br /&gt;
		titleCell&lt;br /&gt;
			:css('border-left', '2px solid #fdfdfd')&lt;br /&gt;
			:css('width', '100%')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleColspan = 2&lt;br /&gt;
	if imageleft then titleColspan = titleColspan + 1 end&lt;br /&gt;
	if image then titleColspan = titleColspan + 1 end&lt;br /&gt;
	if args.titlegroup then titleColspan = titleColspan - 1 end&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:cssText(basestyle)&lt;br /&gt;
		:cssText(titlestyle)&lt;br /&gt;
		:addClass('navbox-title')&lt;br /&gt;
		:attr('colspan', titleColspan)&lt;br /&gt;
&lt;br /&gt;
	renderNavBar(titleCell)&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:tag('div')&lt;br /&gt;
			:attr('id', mw.uri.anchorEncode(maintitle))&lt;br /&gt;
			:addClass(titleclass)&lt;br /&gt;
			:css('font-size', '114%')&lt;br /&gt;
			:css('margin', '0 5em')&lt;br /&gt;
			:wikitext(addNewline(maintitle))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Above/Below rows&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local function getAboveBelowColspan()&lt;br /&gt;
	local ret = 2&lt;br /&gt;
	if imageleft then ret = ret + 1 end&lt;br /&gt;
	if image then ret = ret + 1 end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow(tbl)&lt;br /&gt;
	if not above then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag('tr')&lt;br /&gt;
		:tag('td')&lt;br /&gt;
			:addClass('navbox-abovebelow')&lt;br /&gt;
			:addClass(aboveclass)&lt;br /&gt;
			:cssText(basestyle)&lt;br /&gt;
			:cssText(abovestyle)&lt;br /&gt;
			:attr('colspan', getAboveBelowColspan())&lt;br /&gt;
			:tag('div')&lt;br /&gt;
				:wikitext(addNewline(above))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow(tbl)&lt;br /&gt;
	if not below then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag('tr')&lt;br /&gt;
		:tag('td')&lt;br /&gt;
			:addClass('navbox-abovebelow')&lt;br /&gt;
			:addClass(belowclass)&lt;br /&gt;
			:cssText(basestyle)&lt;br /&gt;
			:cssText(belowstyle)&lt;br /&gt;
			:attr('colspan', getAboveBelowColspan())&lt;br /&gt;
			:tag('div')&lt;br /&gt;
				:wikitext(addNewline(below))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   List rows&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local function haveSubgroups()&lt;br /&gt;
	for i = 1, 23 do&lt;br /&gt;
		if (args['group' .. i] or args['заголовок' .. i] or args['группа' .. i]) and (args['list' .. i] or args['список' .. i]) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderListRow(tbl, index, listnum)&lt;br /&gt;
	local row = tbl:tag('tr')&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and imageleft then&lt;br /&gt;
		row&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:addClass('navbox-image')&lt;br /&gt;
				:addClass(imageclass)&lt;br /&gt;
				:css('width', '1px')&lt;br /&gt;
				:css('padding', '0px 7px 0px 0px')&lt;br /&gt;
				:cssText(imageleftstyle)&lt;br /&gt;
				:attr('rowspan', #listnums)&lt;br /&gt;
				:tag('div')&lt;br /&gt;
					:wikitext(addNewline(imageleft))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (args['group' .. listnum] or args['заголовок' .. listnum] or args['группа' .. listnum]) then&lt;br /&gt;
		local groupCell = row:tag('th')&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:attr('scope', 'row')&lt;br /&gt;
			:addClass('navbox-group')&lt;br /&gt;
			:addClass(groupclass)&lt;br /&gt;
			:cssText(basestyle)&lt;br /&gt;
			:css('width', args.groupwidth or '1px') -- If groupwidth not specified, minimize width&lt;br /&gt;
			&lt;br /&gt;
		-- заголовки без списков - для обратной совместимости, только в нашем разделе&lt;br /&gt;
		if not (args['list' .. listnum] or args['список' .. listnum]) then&lt;br /&gt;
			groupCell&lt;br /&gt;
				:css('text-align', 'center')&lt;br /&gt;
				if haveSubgroups() then&lt;br /&gt;
			groupCell:attr('colspan', 2)&lt;br /&gt;
				end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:cssText(groupstyle)&lt;br /&gt;
			:cssText(args['group' .. listnum .. 'style'] or args['стиль_группы' .. listnum] or args['стиль_заголовка' .. listnum])&lt;br /&gt;
			:wikitext(args['group' .. listnum] or args['заголовок' .. listnum] or args['группа' .. listnum])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args['list' .. listnum] or args['список' .. listnum] then -- проверка на наличие списков, иначе временный наш  безсписочный функционал не поддерживается&lt;br /&gt;
		local listCell = row:tag('td')&lt;br /&gt;
	&lt;br /&gt;
		if (args['group' .. listnum] or args['заголовок' .. listnum] or args['группа' .. listnum]) then&lt;br /&gt;
			listCell&lt;br /&gt;
				:css('text-align', 'left')&lt;br /&gt;
				:css('border-left-width', '2px')&lt;br /&gt;
				:css('border-left-style', 'solid')&lt;br /&gt;
		else&lt;br /&gt;
			if haveSubgroups() then&lt;br /&gt;
				listCell&lt;br /&gt;
					:attr('colspan', 2)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if not groupwidth then&lt;br /&gt;
			listCell:css('width', '100%')&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local rowstyle  -- usually nil so cssText(rowstyle) usually adds nothing&lt;br /&gt;
		if index % 2 == 1 then&lt;br /&gt;
			rowstyle = oddstyle&lt;br /&gt;
		else&lt;br /&gt;
			rowstyle = evenstyle&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local listText = args['list' .. listnum] or args['список' .. listnum]&lt;br /&gt;
		local oddEven = ODD_EVEN_MARKER&lt;br /&gt;
		if listText:sub(1, 12) == '&amp;lt;/div&amp;gt;&amp;lt;table' then&lt;br /&gt;
			-- Assume list text is for a subgroup navbox so no automatic striping for this row.&lt;br /&gt;
			oddEven = listText:find('&amp;lt;th[^&amp;gt;]*&amp;quot;navbox%-title&amp;quot;') and RESTART_MARKER or 'odd'&lt;br /&gt;
		end&lt;br /&gt;
		listCell&lt;br /&gt;
			:css('padding', '0px')&lt;br /&gt;
			:cssText(liststyle)&lt;br /&gt;
			:cssText(rowstyle)&lt;br /&gt;
			:cssText(args['list' .. listnum .. 'style'] or args['стиль_списка' .. listnum])&lt;br /&gt;
			:addClass('navbox-list')&lt;br /&gt;
			:addClass('navbox-' .. oddEven)&lt;br /&gt;
			:addClass(listclass)&lt;br /&gt;
			:tag('div')&lt;br /&gt;
				:css('padding', (index == 1 and args.list1padding) or listpadding or '0em 0.25em')&lt;br /&gt;
				:wikitext(addNewline(listText))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and image then&lt;br /&gt;
		row&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:addClass('navbox-image')&lt;br /&gt;
				:addClass(imageclass)&lt;br /&gt;
				:css('width', '1px')&lt;br /&gt;
				:css('padding', '0px 0px 0px 7px')&lt;br /&gt;
				:cssText(imagestyle)&lt;br /&gt;
				:attr('rowspan', #listnums)&lt;br /&gt;
				:tag('div')&lt;br /&gt;
					:wikitext(addNewline(image))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Tracking categories&lt;br /&gt;
--&lt;br /&gt;
local function needsChangetoSubgroups()&lt;br /&gt;
	for i = 1, 23 do&lt;br /&gt;
		if (args['group' .. i] or args['заголовок' .. i] or args['группа' .. i]) and not (args['list' .. i] or args['список' .. i]) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function needsHorizontalLists()&lt;br /&gt;
	if border == 'subgroup' or args.tracking == 'no' then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local listClasses = {&lt;br /&gt;
		['plainlist'] = true, ['hlist'] = true, ['hlist hnum'] = true,&lt;br /&gt;
		['hlist hwrap'] = true, ['hlist vcard'] = true, ['vcard hlist'] = true,&lt;br /&gt;
		['hlist vevent'] = true, ['hlist hlist-items-nowrap'] = true, ['hlist-items-nowrap'] = true,&lt;br /&gt;
	}&lt;br /&gt;
	return not (listClasses[listclass] or listClasses[bodyclass])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- local function hasBackgroundColors()&lt;br /&gt;
--	return mw.ustring.match(titlestyle or '','background') or mw.ustring.match(groupstyle or '','background') or mw.ustring.match(basestyle or '','background')&lt;br /&gt;
-- end&lt;br /&gt;
&lt;br /&gt;
local function isIllegible()&lt;br /&gt;
	local styleratio = require('Module:Color contrast')._styleratio&lt;br /&gt;
&lt;br /&gt;
	for key, style in pairs(args) do&lt;br /&gt;
		if tostring(key):match(&amp;quot;style$&amp;quot;) or tostring(key):match(&amp;quot;^стиль&amp;quot;) then&lt;br /&gt;
			if styleratio{mw.text.unstripNoWiki(style)} &amp;lt; 4.5 then&lt;br /&gt;
				return true &lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTrackingCategories()&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	if needsChangetoSubgroups() then table.insert(cats, 'Навигационные шаблоны с ошибочным использованием заголовков') end&lt;br /&gt;
	if needsHorizontalLists() then table.insert(cats, 'Навигационные шаблоны без горизонтальных списков') end&lt;br /&gt;
	if isIllegible() then table.insert(cats, 'Потенциально нечитаемые навигационные шаблоны') end&lt;br /&gt;
	return cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTrackingCategories(builder)&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	if title.namespace ~= 10 then return end -- not in template space&lt;br /&gt;
	local subpage = title.subpageText&lt;br /&gt;
	if subpage == 'doc' or subpage == 'песочница' or subpage == 'тесты' then return end&lt;br /&gt;
&lt;br /&gt;
	for i, cat in ipairs(getTrackingCategories()) do&lt;br /&gt;
		builder:wikitext('[[Категория:' .. cat .. ']]')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Main navbox tables&lt;br /&gt;
--&lt;br /&gt;
local function renderMainTable()&lt;br /&gt;
	local tbl = mw.html.create('table')&lt;br /&gt;
		:addClass('nowraplinks')&lt;br /&gt;
		:addClass(bodyclass)&lt;br /&gt;
&lt;br /&gt;
	if maintitle and (args.state ~= 'plain' and args.state ~= 'off') then&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass('collapsible')&lt;br /&gt;
			:addClass(args.state or 'autocollapse')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	tbl:css('border-spacing', 0)&lt;br /&gt;
	if border == 'subgroup' or border == 'none' then&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass('navbox-subgroup')&lt;br /&gt;
			:cssText(bodystyle)&lt;br /&gt;
			:cssText(style)&lt;br /&gt;
	else -- regular navbox - bodystyle and style will be applied to the wrapper table&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass('navbox-inner')&lt;br /&gt;
			:css('background', 'transparent')&lt;br /&gt;
			:css('color', 'inherit')&lt;br /&gt;
	end&lt;br /&gt;
	tbl:cssText(args.innerstyle)&lt;br /&gt;
&lt;br /&gt;
	renderTitleRow(tbl)&lt;br /&gt;
	renderAboveRow(tbl)&lt;br /&gt;
	for i, listnum in ipairs(listnums) do&lt;br /&gt;
		renderListRow(tbl, i, listnum)&lt;br /&gt;
	end&lt;br /&gt;
	renderBelowRow(tbl)&lt;br /&gt;
&lt;br /&gt;
	return tbl&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbox(navboxArgs)&lt;br /&gt;
	args = navboxArgs&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local listnum = ('' .. k):match('^list(%d+)$') or ('' .. k):match('^список(%d+)$')&lt;br /&gt;
		if listnum then table.insert(listnums, tonumber(listnum)) end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- заголовки без списков - для обратной совместимости, только в нашем разделе&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local double = false&lt;br /&gt;
		local groupnum = ('' .. k):match('^заголовок(%d+)$') --group не нужен, так как в английском шаблоне эта фукнциональность не поддерживается&lt;br /&gt;
		if groupnum then&lt;br /&gt;
			for k2, v2 in pairs(listnums) do&lt;br /&gt;
				if tonumber(groupnum) == v2 then&lt;br /&gt;
					double = true&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if not double then table.insert(listnums, tonumber(groupnum)) end --добавляем только номера заголовков, для которых нет списков&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.sort(listnums)&lt;br /&gt;
&lt;br /&gt;
	border = mw.text.trim(args.border or args[1] or '')&lt;br /&gt;
	if border == 'child' then&lt;br /&gt;
		border = 'subgroup'&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	maintitle = args.title or args['заголовок']&lt;br /&gt;
	navbar = args.navbar or args['ссылка_на_просмотр']&lt;br /&gt;
	name = args.name or args['имя']&lt;br /&gt;
	above = args.above or args['вверху']&lt;br /&gt;
	image = args.image or args['изображение']&lt;br /&gt;
	imagestyle = args.imagestyle or args['стиль_изображения']&lt;br /&gt;
	imageleft = args.imageleft or args['изображение2'] or args['изображение_слева']&lt;br /&gt;
	imageleftstyle = args.imageleftstyle or args.imagestyle2 or args['стиль_изображения_слева']&lt;br /&gt;
	below = args.below or args['внизу']&lt;br /&gt;
	titlestyle = args.titlestyle or args['стиль_основного_заголовка'] or args['стиль_заголовка']&lt;br /&gt;
	groupstyle = args.groupstyle or args['стиль_заголовков'] or args['стиль_групп']&lt;br /&gt;
	bodystyle = args.bodystyle or args['стиль_тела']&lt;br /&gt;
	basestyle = args.basestyle or args['стиль_базовый'] or args['стиль']&lt;br /&gt;
	style = args.style&lt;br /&gt;
	liststyle = args.liststyle or args['стиль_списков']&lt;br /&gt;
	oddstyle = args.oddstyle or args['стиль_нечётных'] or args['стиль_нечетных']&lt;br /&gt;
	evenstyle = args.evenstyle or args['стиль_чётных'] or args['стиль_четных']&lt;br /&gt;
	abovestyle = args.abovestyle or args['стиль_вверху']&lt;br /&gt;
	belowstyle = args.belowstyle or args['стиль_внизу']&lt;br /&gt;
	evenoddARG = args.evenodd or args['чётные_нечётные'] or args['четные_нечетные']&lt;br /&gt;
	&lt;br /&gt;
	groupwidth = args.groupwidth or args['ширина_групп']&lt;br /&gt;
	listpadding = args.listpadding or args['отступ_списков']&lt;br /&gt;
	&lt;br /&gt;
	bodyclass = args.bodyclass or args['класс_тела']&lt;br /&gt;
	titleclass = args.titleclass or args['класс_заголовка']&lt;br /&gt;
	aboveclass =args.aboveclass or args['класс_вверху']&lt;br /&gt;
	belowclass = args.belowclass or args['класс_внизу']&lt;br /&gt;
	groupclass = args.groupclass or args['класс_групп']&lt;br /&gt;
	listclass = args.listclass or args['класс_списков']&lt;br /&gt;
	imageclass = args.imageclass or args['класс_изображения']&lt;br /&gt;
	&lt;br /&gt;
	-- render the main body of the navbox&lt;br /&gt;
	local tbl = renderMainTable()&lt;br /&gt;
&lt;br /&gt;
	-- render the appropriate wrapper around the navbox, depending on the border param&lt;br /&gt;
	local res = mw.html.create()&lt;br /&gt;
	if border == 'none' then&lt;br /&gt;
		local nav = res:tag('div')&lt;br /&gt;
			:attr('role', 'navigation')&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		if maintitle then&lt;br /&gt;
			nav:attr('aria-labelledby', mw.uri.anchorEncode(maintitle))&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr('aria-label', 'Навигационный шаблон')&lt;br /&gt;
		end&lt;br /&gt;
	elseif border == 'subgroup' then&lt;br /&gt;
		-- We assume that this navbox is being rendered in a list cell of a parent navbox, and is&lt;br /&gt;
		-- therefore inside a div with padding:0em 0.25em. We start with a &amp;lt;/div&amp;gt; to avoid the&lt;br /&gt;
		-- padding being applied, and at the end add a &amp;lt;div&amp;gt; to balance out the parent's &amp;lt;/div&amp;gt;&lt;br /&gt;
		res&lt;br /&gt;
			:wikitext('&amp;lt;/div&amp;gt;') -- XXX: hack due to lack of unclosed support in mw.html.&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
			:wikitext('&amp;lt;div&amp;gt;') -- XXX: hack due to lack of unclosed support in mw.html.&lt;br /&gt;
	else&lt;br /&gt;
		local nav = res:tag('div')&lt;br /&gt;
			:attr('role', 'navigation')&lt;br /&gt;
			:addClass('navbox')&lt;br /&gt;
			:cssText(bodystyle)&lt;br /&gt;
			:cssText(style)&lt;br /&gt;
			:css('padding', '3px')&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		if maintitle then&lt;br /&gt;
			nav:attr('aria-labelledby', mw.uri.anchorEncode(maintitle))&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr('aria-label', 'Навигационный шаблон')&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderTrackingCategories(res)&lt;br /&gt;
&lt;br /&gt;
	return striped(tostring(res))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
	end&lt;br /&gt;
	args = getArgs(frame, {wrappers = {'Шаблон:Навигационная таблица', 'Шаблон:Навигационная таблица/песочница'}})&lt;br /&gt;
&lt;br /&gt;
	-- Read the arguments in the order they'll be output in, to make references number in the right order.&lt;br /&gt;
	local _&lt;br /&gt;
	_ = maintitle&lt;br /&gt;
	_ = above&lt;br /&gt;
	for i = 1, 23 do&lt;br /&gt;
		_ = args[&amp;quot;group&amp;quot; .. tostring(i)] and args[&amp;quot;заголовок&amp;quot; .. tostring(i)] and args[&amp;quot;группа&amp;quot; .. tostring(i)]&lt;br /&gt;
		_ = args[&amp;quot;list&amp;quot; .. tostring(i)] and args[&amp;quot;список&amp;quot; .. tostring(i)]&lt;br /&gt;
	end&lt;br /&gt;
	_ = below&lt;br /&gt;
&lt;br /&gt;
	return p._navbox(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Princenoire</name></author>	</entry>

	</feed>