<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.cultopedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3APortal_bar</id>
	<title>Module:Portal bar - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.cultopedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3APortal_bar"/>
	<link rel="alternate" type="text/html" href="https://www.cultopedia.org/index.php?title=Module:Portal_bar&amp;action=history"/>
	<updated>2026-04-05T22:39:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://www.cultopedia.org/index.php?title=Module:Portal_bar&amp;diff=687&amp;oldid=prev</id>
		<title>imported&gt;Hike395: Restored revision 1279441757 by Hike395 (talk): Rv: doesn&#039;t handle tab groups correctly</title>
		<link rel="alternate" type="text/html" href="https://www.cultopedia.org/index.php?title=Module:Portal_bar&amp;diff=687&amp;oldid=prev"/>
		<updated>2026-03-16T14:32:43Z</updated>

		<summary type="html">&lt;p&gt;Restored revision 1279441757 by &lt;a href=&quot;/index.php/Special:Contributions/Hike395&quot; title=&quot;Special:Contributions/Hike395&quot;&gt;Hike395&lt;/a&gt; (&lt;a href=&quot;/index.php?title=User_talk:Hike395&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User talk:Hike395 (page does not exist)&quot;&gt;talk&lt;/a&gt;): Rv: doesn&amp;#039;t handle tab groups correctly&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{portal bar}}.&lt;br /&gt;
&lt;br /&gt;
require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- determine whether we&amp;#039;re being called from a sandbox&lt;br /&gt;
local isSandbox = mw.getCurrentFrame():getTitle():find(&amp;#039;sandbox&amp;#039;, 1, true)&lt;br /&gt;
local sandbox = isSandbox and &amp;#039;/sandbox&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local portalModule = require(&amp;#039;Module:Portal&amp;#039;..sandbox)&lt;br /&gt;
local getImageName = portalModule._image&lt;br /&gt;
local checkPortals = portalModule._checkPortals&lt;br /&gt;
local processPortalArgs = portalModule._processPortalArgs&lt;br /&gt;
local yesno = require( &amp;#039;Module:Yesno&amp;#039; )&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function sandboxVersion(s)&lt;br /&gt;
	return isSandbox and s..&amp;quot;-sand&amp;quot; or s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Builds the portal bar used by {{portal bar}}.&lt;br /&gt;
function p._main( portals, args )&lt;br /&gt;
	&lt;br /&gt;
	-- check for sensible args&lt;br /&gt;
	args = type(args) == &amp;quot;table&amp;quot; and args or {}&lt;br /&gt;
	&lt;br /&gt;
	-- Normalize arguments&lt;br /&gt;
	for key, default in pairs({border=true,redlinks=false,tracking=true}) do&lt;br /&gt;
		if args[key] == nil then args[key] = default end&lt;br /&gt;
		args[key] = yesno(args[key], default)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local nav = mw.html.create( &amp;#039;div&amp;#039; )&lt;br /&gt;
		:addClass(sandboxVersion(&amp;#039;portal-bar&amp;#039;))&lt;br /&gt;
		:addClass( &amp;#039;noprint metadata noviewer&amp;#039; )&lt;br /&gt;
		:attr( &amp;#039;role&amp;#039;, &amp;#039;navigation&amp;#039; )&lt;br /&gt;
		:attr( &amp;#039;aria-label&amp;#039; , &amp;#039;Portals&amp;#039; )&lt;br /&gt;
		:addClass(sandboxVersion(args.border and &amp;#039;portal-bar-bordered&amp;#039; or &amp;#039;portal-bar-unbordered&amp;#039;))&lt;br /&gt;
	&lt;br /&gt;
	local trackingCat = &amp;#039;&amp;#039;&lt;br /&gt;
	-- Allow any number of portals&lt;br /&gt;
	args.minPortals = 0&lt;br /&gt;
	args.maxPortals = -1&lt;br /&gt;
	-- Check to see whether there are redlinks, filter out unless args.redlink is true&lt;br /&gt;
	portals, trackingCat = checkPortals(portals, args)&lt;br /&gt;
	nav:wikitext(trackingCat)&lt;br /&gt;
	if #portals == 0 then&lt;br /&gt;
		return trackingCat&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local related = yesno(args.related)&lt;br /&gt;
	if related then&lt;br /&gt;
		nav:addClass(sandboxVersion(&amp;#039;portal-bar-related&amp;#039;))&lt;br /&gt;
	else&lt;br /&gt;
		local header = nav:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
		header:addClass(sandboxVersion(&amp;#039;portal-bar-header&amp;#039;))&lt;br /&gt;
		header:wikitext(&amp;#039;[[Wikipedia:Contents/Portals|Portal]]&amp;#039;)&lt;br /&gt;
		if #portals &amp;gt; 1 then&lt;br /&gt;
			header:wikitext(&amp;#039;s&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		header:wikitext(&amp;#039;:&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local container = nav:tag(&amp;#039;ul&amp;#039;)&lt;br /&gt;
	container:addClass(sandboxVersion(&amp;#039;portal-bar-content&amp;#039;))&lt;br /&gt;
	if related then&lt;br /&gt;
		container:addClass(sandboxVersion(&amp;#039;portal-bar-content-related&amp;#039;))&lt;br /&gt;
	end&lt;br /&gt;
	local size = related and &amp;#039;28x24px&amp;#039; or &amp;#039;21x19px&amp;#039;&lt;br /&gt;
	for _, portal in ipairs( portals ) do&lt;br /&gt;
		container&lt;br /&gt;
			:tag( &amp;#039;li&amp;#039; )&lt;br /&gt;
			:addClass(sandboxVersion(&amp;#039;portal-bar-item&amp;#039;))&lt;br /&gt;
			:wikitext( string.format(&amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;[[File:%s|%s]] &amp;lt;/span&amp;gt;[[Portal:%s|%s]]&amp;#039;,&lt;br /&gt;
					getImageName(portal,true), size, portal, portal))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local styleFile = &amp;#039;Module:Portal bar&amp;#039;..sandbox..&amp;#039;/styles.css&amp;#039;&lt;br /&gt;
	return mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;, args = { src = styleFile }&lt;br /&gt;
	} .. tostring( nav ) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Processes external arguments and sends them to the other functions.&lt;br /&gt;
function p.main( frame )&lt;br /&gt;
	local origArgs = getArgs(frame)&lt;br /&gt;
	local portals, args = processPortalArgs(origArgs)&lt;br /&gt;
	return p._main( portals, args )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Hike395</name></author>
	</entry>
</feed>