<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox_Shop</id>
	<title>Module:Infobox Shop - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox_Shop"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Infobox_Shop&amp;action=history"/>
	<updated>2026-05-22T07:12:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Infobox_Shop&amp;diff=34179&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;-------------------------- -- Module for Template:Infobox Shop -------------------------- local p = {}  local onmain = require(&#039;Module:Mainonly&#039;).on_main local paramtest = require(&#039;Module:Paramtest&#039;) local infobox = require(&#039;Module:Infobox&#039;)  function p.main(frame) 	local args = frame:getParent().args 	local ret = infobox.new(args)  	ret:defineParams{ 		{ name = &#039;name&#039;, func = &#039;name&#039; }, 		{ name = &#039;image&#039;, func = &#039;has_content&#039; }, 		{ name = &#039;release&#039;, func = &#039;release...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Infobox_Shop&amp;diff=34179&amp;oldid=prev"/>
		<updated>2024-10-15T23:18:57Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-------------------------- -- Module for &lt;a href=&quot;/w/Template:Infobox_Shop&quot; title=&quot;Template:Infobox Shop&quot;&gt;Template:Infobox Shop&lt;/a&gt; -------------------------- local p = {}  local onmain = require(&amp;#039;Module:Mainonly&amp;#039;).on_main local paramtest = require(&amp;#039;Module:Paramtest&amp;#039;) local infobox = require(&amp;#039;Module:Infobox&amp;#039;)  function p.main(frame) 	local args = frame:getParent().args 	local ret = infobox.new(args)  	ret:defineParams{ 		{ name = &amp;#039;name&amp;#039;, func = &amp;#039;name&amp;#039; }, 		{ name = &amp;#039;image&amp;#039;, func = &amp;#039;has_content&amp;#039; }, 		{ name = &amp;#039;release&amp;#039;, func = &amp;#039;release...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--------------------------&lt;br /&gt;
-- Module for [[Template:Infobox Shop]]&lt;br /&gt;
--------------------------&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local onmain = require(&amp;#039;Module:Mainonly&amp;#039;).on_main&lt;br /&gt;
local paramtest = require(&amp;#039;Module:Paramtest&amp;#039;)&lt;br /&gt;
local infobox = require(&amp;#039;Module:Infobox&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local ret = infobox.new(args)&lt;br /&gt;
&lt;br /&gt;
	ret:defineParams{&lt;br /&gt;
		{ name = &amp;#039;name&amp;#039;, func = &amp;#039;name&amp;#039; },&lt;br /&gt;
		{ name = &amp;#039;image&amp;#039;, func = &amp;#039;has_content&amp;#039; },&lt;br /&gt;
		{ name = &amp;#039;release&amp;#039;, func = &amp;#039;release&amp;#039; },&lt;br /&gt;
		{ name = &amp;#039;removal&amp;#039;, func = &amp;#039;removal&amp;#039; },&lt;br /&gt;
		{ name = &amp;#039;members&amp;#039;, func = &amp;#039;has_content&amp;#039; },&lt;br /&gt;
		{ name = &amp;#039;icon&amp;#039;, func = iconarg },&lt;br /&gt;
		{ name = &amp;#039;location&amp;#039;, func = &amp;#039;has_content&amp;#039; },&lt;br /&gt;
		{ name = &amp;#039;owner&amp;#039;, func = &amp;#039;has_content&amp;#039; },&lt;br /&gt;
		{ name = &amp;#039;special&amp;#039;, func = &amp;#039;has_content&amp;#039; },&lt;br /&gt;
		{ name = &amp;#039;map&amp;#039;, func = maparg },&lt;br /&gt;
		{ name = &amp;#039;shopversion&amp;#039;, func = &amp;#039;has_content&amp;#039; },&lt;br /&gt;
        { name = &amp;#039;usesinfobox&amp;#039;, func = { name = tostring, params = { &amp;#039;Shop&amp;#039; }, flag = &amp;#039;r&amp;#039; } },&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	ret:defineLinks({ hide = true })&lt;br /&gt;
&lt;br /&gt;
	ret:useSMWSubobject({&lt;br /&gt;
		members = &amp;#039;Store Is members only&amp;#039;,&lt;br /&gt;
		location = &amp;#039;Store location&amp;#039;,&lt;br /&gt;
		special = &amp;#039;Store specialty&amp;#039;,&lt;br /&gt;
		usesinfobox = &amp;#039;Uses infobox&amp;#039;,&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	ret:create()&lt;br /&gt;
	ret:cleanParams()&lt;br /&gt;
&lt;br /&gt;
	ret:customButtonPlacement(true)&lt;br /&gt;
	ret:addButtonsCaption()&lt;br /&gt;
&lt;br /&gt;
	ret:defineName(&amp;#039;Infobox Shop&amp;#039;)&lt;br /&gt;
	ret:addClass(&amp;#039;infobox-shop&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	ret:addRow{&lt;br /&gt;
		{ tag = &amp;#039;argh&amp;#039;, content = &amp;#039;name&amp;#039;, class=&amp;#039;infobox-header&amp;#039;, colspan = &amp;#039;20&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	:addRow{&lt;br /&gt;
		{ tag = &amp;#039;argd&amp;#039;, content = &amp;#039;image&amp;#039;, colspan = &amp;#039;20&amp;#039;, class = &amp;#039;infobox-full-width-content infobox-image&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	:pad(20)&lt;br /&gt;
&lt;br /&gt;
	:addRow{&lt;br /&gt;
		{ tag = &amp;#039;th&amp;#039;, content = &amp;#039;Released&amp;#039;, colspan = &amp;#039;8&amp;#039; },&lt;br /&gt;
		{ tag = &amp;#039;argd&amp;#039;, content = &amp;#039;release&amp;#039;, colspan = &amp;#039;12&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ret:paramDefined(&amp;#039;removal&amp;#039;) then&lt;br /&gt;
		ret:addRow{&lt;br /&gt;
			{ tag = &amp;#039;th&amp;#039;, content = &amp;#039;Removed&amp;#039;, colspan = &amp;#039;8&amp;#039; },&lt;br /&gt;
			{ tag = &amp;#039;argd&amp;#039;, content = &amp;#039;removal&amp;#039;, colspan = &amp;#039;12&amp;#039; }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	ret:addRow{&lt;br /&gt;
		{ tag = &amp;#039;th&amp;#039;, content = &amp;#039;[[Members]]&amp;#039;, colspan = &amp;#039;8&amp;#039; },&lt;br /&gt;
		{ tag = &amp;#039;argd&amp;#039;, content = &amp;#039;members&amp;#039;, colspan = &amp;#039;12&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local icon_defined = ret:paramGrep(&amp;#039;icon&amp;#039;, function(x) return string.lower(x or &amp;#039;n/a&amp;#039;) ~= &amp;#039;n/a&amp;#039; end)&lt;br /&gt;
	if icon_defined then&lt;br /&gt;
		ret:addRow{&lt;br /&gt;
			{ tag = &amp;#039;th&amp;#039;, content = &amp;#039;[[Icon|Minimap icon]]&amp;#039;, colspan = &amp;#039;8&amp;#039; },&lt;br /&gt;
			{ tag = &amp;#039;argd&amp;#039;, content = &amp;#039;icon&amp;#039;, colspan = &amp;#039;12&amp;#039; }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	ret:addRow{&lt;br /&gt;
		{ tag = &amp;#039;th&amp;#039;, content = &amp;#039;Location&amp;#039;, colspan = &amp;#039;8&amp;#039; },&lt;br /&gt;
		{ tag = &amp;#039;argd&amp;#039;, content = &amp;#039;location&amp;#039;, colspan = &amp;#039;12&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	:addRow{&lt;br /&gt;
		{ tag = &amp;#039;th&amp;#039;, content = &amp;#039;Owner&amp;#039;, colspan = &amp;#039;8&amp;#039; },&lt;br /&gt;
		{ tag = &amp;#039;argd&amp;#039;, content = &amp;#039;owner&amp;#039;, colspan = &amp;#039;12&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	:addRow{&lt;br /&gt;
		{ tag = &amp;#039;th&amp;#039;, content = &amp;#039;Specialty&amp;#039;, colspan = &amp;#039;8&amp;#039; },&lt;br /&gt;
		{ tag = &amp;#039;argd&amp;#039;, content = &amp;#039;special&amp;#039;, colspan = &amp;#039;12&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	:pad(20)&lt;br /&gt;
&lt;br /&gt;
	local map_defined = ret:paramGrep(&amp;#039;map&amp;#039;, function(x) return string.lower(x or &amp;#039;n/a&amp;#039;) ~= &amp;#039;n/a&amp;#039; end)&lt;br /&gt;
	if map_defined then&lt;br /&gt;
		ret:addRow{&lt;br /&gt;
			{ tag = &amp;#039;th&amp;#039;, content = &amp;#039;Location&amp;#039;, class = &amp;#039;infobox-subheader&amp;#039;, colspan = &amp;#039;20&amp;#039; }&lt;br /&gt;
		}&lt;br /&gt;
		:addRow{&lt;br /&gt;
			{ tag = &amp;#039;argd&amp;#039;, content = &amp;#039;map&amp;#039;, colspan = &amp;#039;20&amp;#039;, class = &amp;#039;infobox-full-width-content infobox-image&amp;#039; }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	ret:addVersionBasedVars(&amp;#039;ShopInfo_members&amp;#039;, &amp;#039;shopversion&amp;#039;, &amp;#039;members&amp;#039;)&lt;br /&gt;
	ret:addVersionBasedVars(&amp;#039;ShopInfo_location&amp;#039;, &amp;#039;shopversion&amp;#039;, &amp;#039;location&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if onmain() then&lt;br /&gt;
		local a1 = ret:param(&amp;#039;all&amp;#039;)&lt;br /&gt;
		local a2 = ret:categoryData()&lt;br /&gt;
		ret:wikitext(addcategories(a1, a2))&lt;br /&gt;
	end&lt;br /&gt;
	return ret:tostring()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function iconarg(arg)&lt;br /&gt;
	if not infobox.isDefined(arg) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if string.lower(arg) == &amp;#039;no&amp;#039; then&lt;br /&gt;
		return &amp;#039;N/A&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return arg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function maparg(arg)&lt;br /&gt;
	if not infobox.isDefined(arg) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if string.lower(arg) == &amp;#039;no&amp;#039; then&lt;br /&gt;
		return &amp;#039;N/A&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return arg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function addcategories(args, catargs)&lt;br /&gt;
	local ret = { &amp;#039;Shops&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
	-- Add the associated category if the parameter doesn&amp;#039;t have content&lt;br /&gt;
	local notdefined_args = {&lt;br /&gt;
		image = &amp;#039;Needs image&amp;#039;,&lt;br /&gt;
		release = &amp;#039;Needs release date&amp;#039;,&lt;br /&gt;
		members = &amp;#039;Needs members status&amp;#039;,&lt;br /&gt;
		map = &amp;#039;Needs map&amp;#039;,&lt;br /&gt;
	}&lt;br /&gt;
	for n, v in pairs(notdefined_args) do&lt;br /&gt;
		if catargs[n] and catargs[n].all_defined == false then&lt;br /&gt;
			table.insert(ret, v)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if string.lower(args[&amp;#039;special&amp;#039;].d or &amp;#039;&amp;#039;) == &amp;#039;general store&amp;#039; then&lt;br /&gt;
		table.insert(ret, &amp;#039;General stores&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local cat_map = {&lt;br /&gt;
		-- Parameters that have text&lt;br /&gt;
		-- map a category to a value&lt;br /&gt;
		matches = {&lt;br /&gt;
			members = { yes = &amp;#039;Members\&amp;#039; shops&amp;#039;, no = &amp;#039;Free-to-play shops&amp;#039; },&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	-- searches&lt;br /&gt;
	for n, v in pairs(cat_map.matches) do&lt;br /&gt;
		for m, w in pairs(v) do&lt;br /&gt;
			if args[n] then&lt;br /&gt;
				if string.lower(tostring(args[n].d) or &amp;#039;&amp;#039;) == m then&lt;br /&gt;
					table.insert(ret, w)&lt;br /&gt;
				end&lt;br /&gt;
				if args[n].switches then&lt;br /&gt;
					for _, x in ipairs(args[n].switches) do&lt;br /&gt;
						if string.lower(tostring(x)) == m then&lt;br /&gt;
							table.insert(ret, w)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- combine table and format category wikicode&lt;br /&gt;
	for i, v in ipairs(ret) do&lt;br /&gt;
		if (v ~= &amp;#039;&amp;#039;) then&lt;br /&gt;
			ret[i] = string.format(&amp;#039;[[Category:%s]]&amp;#039;, v)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(ret, &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>