<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mcserio.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3ANavbox_with_collapsible_groups</id>
	<title>Moduł:Navbox with collapsible groups - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mcserio.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3ANavbox_with_collapsible_groups"/>
	<link rel="alternate" type="text/html" href="https://mcserio.pl/index.php?title=Modu%C5%82:Navbox_with_collapsible_groups&amp;action=history"/>
	<updated>2026-04-15T22:59:30Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://mcserio.pl/index.php?title=Modu%C5%82:Navbox_with_collapsible_groups&amp;diff=1005&amp;oldid=prev</id>
		<title>Domestos barbaricus: 1 wersja: remove first word</title>
		<link rel="alternate" type="text/html" href="https://mcserio.pl/index.php?title=Modu%C5%82:Navbox_with_collapsible_groups&amp;diff=1005&amp;oldid=prev"/>
		<updated>2024-12-28T15:30:21Z</updated>

		<summary type="html">&lt;p&gt;1 wersja: remove first word&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Wersja z 15:30, 28 gru 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;pl&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Brak różnic)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Domestos barbaricus</name></author>
	</entry>
	<entry>
		<id>https://mcserio.pl/index.php?title=Modu%C5%82:Navbox_with_collapsible_groups&amp;diff=1004&amp;oldid=prev</id>
		<title>Wikipedia&gt;Ahecht: pseudo-ternary operator doesn&#039;t work with &quot;and nil&quot;</title>
		<link rel="alternate" type="text/html" href="https://mcserio.pl/index.php?title=Modu%C5%82:Navbox_with_collapsible_groups&amp;diff=1004&amp;oldid=prev"/>
		<updated>2024-09-17T20:06:30Z</updated>

		<summary type="html">&lt;p&gt;pseudo-ternary operator doesn&amp;#039;t work with &amp;quot;and nil&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{Navbox with collapsible groups}}&lt;br /&gt;
&lt;br /&gt;
require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
local parentCfg = mw.loadData(&amp;#039;Module:Navbox/configuration&amp;#039;)&lt;br /&gt;
local thisCfg = mw.loadData(&amp;#039;Module:Navbox with collapsible groups/configuration&amp;#039;)&lt;br /&gt;
local cfg = {}&lt;br /&gt;
for k, v in pairs(thisCfg) do&lt;br /&gt;
	if type(v) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		cfg[k] = {}&lt;br /&gt;
		if type(parentCfg[k]) == &amp;#039;table&amp;#039; then&lt;br /&gt;
			for kk, vv in pairs(parentCfg[k]) do cfg[k][kk] = vv end&lt;br /&gt;
		end&lt;br /&gt;
		for kk, vv in pairs(v) do cfg[k][kk] = vv end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
local inArray = require(&amp;quot;Module:TableTools&amp;quot;).inArray&lt;br /&gt;
local getArgs -- lazily initialized&lt;br /&gt;
&lt;br /&gt;
-- helper functions&lt;br /&gt;
local andnum = function(s, n) return string.format(cfg.arg[s..&amp;#039;_and_num&amp;#039;], n) end&lt;br /&gt;
	&lt;br /&gt;
local isblank = function(v) return (v or &amp;#039;&amp;#039;) == &amp;#039;&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
local function concatstrings(s)&lt;br /&gt;
	local r = table.concat(s, &amp;#039;&amp;#039;)&lt;br /&gt;
	if r:match(&amp;#039;^%s*$&amp;#039;) then return nil end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
local function concatstyles(s)&lt;br /&gt;
	local r = &amp;#039;&amp;#039;&lt;br /&gt;
	for _, v in ipairs(s) do&lt;br /&gt;
		v = mw.text.trim(v, &amp;quot;%s;&amp;quot;)&lt;br /&gt;
		if not isblank(v) then r = r .. v .. &amp;#039;;&amp;#039; end&lt;br /&gt;
	end&lt;br /&gt;
	if isblank(r) then return nil end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
local function getSubgroup(args, listnum, listText)&lt;br /&gt;
	local subArgs = {&lt;br /&gt;
		[cfg.arg.border] = cfg.keyword.border_subgroup,&lt;br /&gt;
		[cfg.arg.navbar] = cfg.keyword.navbar_plain&lt;br /&gt;
	}&lt;br /&gt;
	local hasSubArgs = false&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		k = tostring(k)&lt;br /&gt;
		for _, w in ipairs(cfg.keyword.subgroups) do&lt;br /&gt;
			w = w .. listnum .. &amp;quot;_&amp;quot;&lt;br /&gt;
			if (#k &amp;gt; #w) and (k:sub(1, #w) == w) then&lt;br /&gt;
				subArgs[k:sub(#w + 1)] = v&lt;br /&gt;
				hasSubArgs = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return hasSubArgs and p._navbox(subArgs) or listText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Main functions&lt;br /&gt;
p._navbox = require(&amp;#039;Module:Navbox&amp;#039;)._navbox&lt;br /&gt;
&lt;br /&gt;
function p._withCollapsibleGroups(pargs)&lt;br /&gt;
	-- table for args passed to navbox&lt;br /&gt;
	local targs = {}&lt;br /&gt;
&lt;br /&gt;
	-- process args&lt;br /&gt;
	local passthrough = {&lt;br /&gt;
		[cfg.arg.above]=true,[cfg.arg.aboveclass]=true,[cfg.arg.abovestyle]=true,&lt;br /&gt;
		[cfg.arg.basestyle]=true,&lt;br /&gt;
		[cfg.arg.below]=true,[cfg.arg.belowclass]=true,[cfg.arg.belowstyle]=true,&lt;br /&gt;
		[cfg.arg.bodyclass]=true,[cfg.arg.bodystyle]=true,&lt;br /&gt;
		[cfg.arg.border]=true,&lt;br /&gt;
		[cfg.arg.groupclass]=true,&lt;br /&gt;
		[cfg.arg.image]=true,[cfg.arg.imageclass]=true,[cfg.arg.imagestyle]=true,&lt;br /&gt;
		[cfg.arg.imageleft]=true,[cfg.arg.imageleftstyle]=true,&lt;br /&gt;
		[cfg.arg.listclass]=true,&lt;br /&gt;
		[cfg.arg.name]=true,&lt;br /&gt;
		[cfg.arg.navbar]=true,&lt;br /&gt;
		[cfg.arg.state]=true,&lt;br /&gt;
		[cfg.arg.style]=true,&lt;br /&gt;
		[cfg.arg.title]=true,[cfg.arg.titleclass]=true,[cfg.arg.titlestyle]=true&lt;br /&gt;
	}&lt;br /&gt;
	for k,v in pairs(pargs) do&lt;br /&gt;
		if k and type(k) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			if passthrough[k] then&lt;br /&gt;
				targs[k] = v&lt;br /&gt;
			elseif (k:match(cfg.pattern.num)) then&lt;br /&gt;
				local n = k:match(cfg.pattern.num)&lt;br /&gt;
				local list_and_num = andnum(&amp;#039;list&amp;#039;, n)&lt;br /&gt;
				if ((k:match(cfg.pattern.listnum) or k:match(cfg.pattern.contentnum))&lt;br /&gt;
						and targs[list_and_num] == nil&lt;br /&gt;
						and pargs[andnum(&amp;#039;group&amp;#039;, n)] == nil&lt;br /&gt;
						and pargs[andnum(&amp;#039;sect&amp;#039;, n)] == nil&lt;br /&gt;
						and pargs[andnum(&amp;#039;section&amp;#039;, n)] == nil) then&lt;br /&gt;
					targs[list_and_num] = concatstrings({&lt;br /&gt;
						pargs[list_and_num] or &amp;#039;&amp;#039;,&lt;br /&gt;
						pargs[andnum(&amp;#039;content&amp;#039;, n)] or &amp;#039;&amp;#039;&lt;br /&gt;
					})&lt;br /&gt;
					if (targs[list_and_num] and inArray(cfg.keyword.subgroups, targs[list_and_num])) then&lt;br /&gt;
						targs[list_and_num] = getSubgroup(pargs, n, targs[list_and_num])&lt;br /&gt;
					end&lt;br /&gt;
				elseif ((k:match(cfg.pattern.groupnum) or k:match(cfg.pattern.sectnum) or k:match(cfg.pattern.sectionnum))&lt;br /&gt;
						and targs[list_and_num] == nil) then&lt;br /&gt;
					local titlestyle = concatstyles({&lt;br /&gt;
						pargs[cfg.arg.groupstyle] or &amp;#039;&amp;#039;,&lt;br /&gt;
						pargs[cfg.arg.secttitlestyle] or &amp;#039;&amp;#039;, &lt;br /&gt;
						pargs[andnum(&amp;#039;groupstyle&amp;#039;, n)] or &amp;#039;&amp;#039;, &lt;br /&gt;
						pargs[andnum(&amp;#039;sectiontitlestyle&amp;#039;, n)] or &amp;#039;&amp;#039;&lt;br /&gt;
					})&lt;br /&gt;
					local liststyle = concatstyles({&lt;br /&gt;
						pargs[cfg.arg.liststyle] or &amp;#039;&amp;#039;,&lt;br /&gt;
						pargs[cfg.arg.contentstyle] or &amp;#039;&amp;#039;, &lt;br /&gt;
						pargs[andnum(&amp;#039;liststyle&amp;#039;, n)] or &amp;#039;&amp;#039;, &lt;br /&gt;
						pargs[andnum(&amp;#039;contentstyle&amp;#039;, n)] or &amp;#039;&amp;#039;&lt;br /&gt;
					})&lt;br /&gt;
					local title = concatstrings({&lt;br /&gt;
						pargs[andnum(&amp;#039;group&amp;#039;, n)] or &amp;#039;&amp;#039;,&lt;br /&gt;
						pargs[andnum(&amp;#039;sect&amp;#039;, n)] or &amp;#039;&amp;#039;,&lt;br /&gt;
						pargs[andnum(&amp;#039;section&amp;#039;, n)] or &amp;#039;&amp;#039;&lt;br /&gt;
					})&lt;br /&gt;
					local list = concatstrings({&lt;br /&gt;
						pargs[list_and_num] or &amp;#039;&amp;#039;, &lt;br /&gt;
						pargs[andnum(&amp;#039;content&amp;#039;, n)] or &amp;#039;&amp;#039;&lt;br /&gt;
					})&lt;br /&gt;
					if list and inArray(cfg.keyword.subgroups, list) then&lt;br /&gt;
						list = getSubgroup(pargs, n, list)&lt;br /&gt;
					end&lt;br /&gt;
					local abbr_and_num = andnum(&amp;#039;abbr&amp;#039;, n)&lt;br /&gt;
					local state = (pargs[abbr_and_num] and pargs[abbr_and_num] == pargs[cfg.arg.selected]) &lt;br /&gt;
						and cfg.keyword.state_uncollapsed&lt;br /&gt;
						or (pargs[andnum(&amp;#039;state&amp;#039;, n)] or cfg.keyword.state_collapsed)&lt;br /&gt;
					&lt;br /&gt;
					targs[list_and_num] =p._navbox({&lt;br /&gt;
						cfg.keyword.border_child,&lt;br /&gt;
						[cfg.arg.navbar] = cfg.keyword.navbar_plain,&lt;br /&gt;
						[cfg.arg.state] = state,&lt;br /&gt;
						[cfg.arg.basestyle] = pargs[cfg.arg.basestyle],&lt;br /&gt;
						[cfg.arg.title] = title,&lt;br /&gt;
						[cfg.arg.titlestyle] = titlestyle,&lt;br /&gt;
						[andnum(&amp;#039;list&amp;#039;, 1)] = list,&lt;br /&gt;
						[cfg.arg.liststyle] = liststyle,&lt;br /&gt;
						[cfg.arg.listclass] = pargs[andnum(&amp;#039;listclass&amp;#039;, n)],&lt;br /&gt;
						[cfg.arg.image] = pargs[andnum(&amp;#039;image&amp;#039;, n)],&lt;br /&gt;
						[cfg.arg.imageleft] = pargs[andnum(&amp;#039;imageleft&amp;#039;, n)],&lt;br /&gt;
						[cfg.arg.listpadding] = pargs[cfg.arg.listpadding]&lt;br /&gt;
					})&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- ordering of style and bodystyle&lt;br /&gt;
	targs[cfg.arg.style] = concatstyles({targs[cfg.arg.style] or &amp;#039;&amp;#039;, targs[cfg.arg.bodystyle] or &amp;#039;&amp;#039;})&lt;br /&gt;
	targs[cfg.arg.bodystyle] = nil&lt;br /&gt;
	&lt;br /&gt;
	-- child or subgroup&lt;br /&gt;
	if targs[cfg.arg.border] == nil then targs[cfg.arg.border] = pargs[1] end&lt;br /&gt;
&lt;br /&gt;
	return p._navbox(targs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Template entry points&lt;br /&gt;
function p.navbox (frame, boxtype)&lt;br /&gt;
	local function readArgs(args, prefix)&lt;br /&gt;
		-- Read the arguments in the order they&amp;#039;ll be output in, to make references&lt;br /&gt;
		-- number in the right order.&lt;br /&gt;
		local _&lt;br /&gt;
		_ = args[prefix .. cfg.arg.title]&lt;br /&gt;
		_ = args[prefix .. cfg.arg.above]&lt;br /&gt;
		-- Limit this to 20 as covering &amp;#039;most&amp;#039; cases (that&amp;#039;s a SWAG) and because&lt;br /&gt;
		-- iterator approach won&amp;#039;t work here&lt;br /&gt;
		for i = 1, 20 do&lt;br /&gt;
			_ = args[prefix .. andnum(&amp;#039;group&amp;#039;, i)]&lt;br /&gt;
			if inArray(cfg.keyword.subgroups, args[prefix .. andnum(&amp;#039;list&amp;#039;, i)]) then&lt;br /&gt;
				for _, v in ipairs(cfg.keyword.subgroups) do&lt;br /&gt;
					readArgs(args, prefix .. v .. i .. &amp;quot;_&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		_ = args[prefix .. cfg.arg.below]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	end&lt;br /&gt;
	local args = getArgs(frame, {wrappers = {cfg.pattern[boxtype or &amp;#039;navbox&amp;#039;]}})&lt;br /&gt;
	readArgs(args, &amp;quot;&amp;quot;)&lt;br /&gt;
	return p[&amp;#039;_&amp;#039;..(boxtype or &amp;#039;navbox&amp;#039;)](args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[&amp;#039;with collapsible groups&amp;#039;] = function (frame)&lt;br /&gt;
	return p.navbox(frame, &amp;#039;withCollapsibleGroups&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local q = {}&lt;br /&gt;
q._navbox = p._withCollapsibleGroups&lt;br /&gt;
q.navbox = p[&amp;#039;with collapsible groups&amp;#039;]&lt;br /&gt;
return q&lt;/div&gt;</summary>
		<author><name>Wikipedia&gt;Ahecht</name></author>
	</entry>
</feed>