Editing Module:Navbox with collapsible groups

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. Read the Privacy Policy to learn what information we collect about you and how we use it.

If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
-- This module implements {{Navbox with collapsible groups}}
-- This module implements {{Navbox with collapsible groups}}
local q = {}
local p = {}
 
local Navbox = require('Module:Navbox')
local Navbox = require('Module:Navbox')
local getArgs -- lazily initialized


-- helper functions
-- helper functions
Line 19: Line 21:
end
end


function q._navbox(pargs)
function p._navbox(args)
local tracking = ''
-- table for args passed to navbox
-- table for args passed to navbox
local targs = {}
local targs = {}
Line 34: Line 38:
['imageleft']=true,['imageleftstyle']=true
['imageleft']=true,['imageleftstyle']=true
}
}
for k,v in pairs(pargs) do
for k,v in pairs(args) do
if k and type(k) == 'string' then
if k and type(k) == 'string' then
if passthrough[k] then
if passthrough[k] then
Line 41: Line 45:
or k:match('^content[0-9][0-9]*$') ) then
or k:match('^content[0-9][0-9]*$') ) then
local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1')
local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1')
if (targs['list' .. n] == nil and pargs['group' .. n] == nil
if (targs['list' .. n] == nil and args['group' .. n] == nil
and pargs['sect' .. n] == nil and pargs['section' .. n] == nil) then
and args['sect' .. n] == nil and args['section' .. n] == nil) then
targs['list' .. n] = concatstrings(
targs['list' .. n] = concatstrings(args['list' .. n] or '', args['content' .. n] or '')
{pargs['list' .. n] or '', pargs['content' .. n] or ''})
end
end
elseif (k:match('^group[0-9][0-9]*$')  
elseif (k:match('^group[0-9][0-9]*$')  
Line 52: Line 55:
if targs['list' .. n] == nil then
if targs['list' .. n] == nil then
local titlestyle = concatstyles(
local titlestyle = concatstyles(
{pargs['groupstyle'] or '',pargs['secttitlestyle'] or '',  
{args['groupstyle'] or '',args['secttitlestyle'] or '',  
pargs['group' .. n .. 'style'] or '',  
args['group' .. n .. 'style'] or '',  
pargs['section' .. n ..'titlestyle'] or ''})
args['section' .. n ..'titlestyle'] or ''})
local liststyle = concatstyles(
local liststyle = concatstyles(
{pargs['liststyle'] or '', pargs['contentstyle'] or '',  
{args['liststyle'] or '', args['contentstyle'] or '',  
pargs['list' .. n .. 'style'] or '',  
args['list' .. n .. 'style'] or '',  
pargs['content' .. n .. 'style'] or ''})
args['content' .. n .. 'style'] or ''})
local title = concatstrings(
local title = concatstrings(
{pargs['group' .. n] or '',  
{args['group' .. n] or '',  
pargs['sect' .. n] or '',
args['sect' .. n] or '',
pargs['section' .. n] or ''})
args['section' .. n] or ''})
local list = concatstrings(
local list = concatstrings(
{pargs['list' .. n] or '',  
{args['list' .. n] or '',  
pargs['content' .. n] or ''})
args['content' .. n] or ''})
local state = (pargs['abbr' .. n] and pargs['abbr' .. n] == pargs['selected'])  
local state = (args['abbr' .. n] and args['abbr' .. n] == args['selected'])  
and 'uncollapsed' or pargs['state' .. n] or 'collapsed'
and 'uncollapsed' or args['state' .. n] or 'collapsed'
local sargs = {'child', navbar = 'plain', state = state,
targs['list' .. n] = Navbox._navbox(
basestyle = args['basestyle'],
{'child', navbar = 'plain', state = state,
basestyle = pargs['basestyle'],
title = title, titlestyle = titlestyle,
title = title, titlestyle = titlestyle,
list1 = list, liststyle = liststyle,
list1 = list, liststyle = liststyle,
listclass = pargs['list' .. n .. 'class'],
listclass = args['list' .. n .. 'class'],
image = pargs['image' .. n],
image = args['image' .. n],
imageleft = pargs['imageleft' .. n],
imageleft = args['imageleft' .. n],
listpadding = pargs['listpadding']})
listpadding = args['listpadding']}
targs['list' .. n] = Navbox._navbox(sargs)
tracking = tracking .. '<hr /><center><b>k = ' .. k .. ', n = ' .. n .. '</b></center><hr />\n'
for ks,vs in pairs(sargs) do
tracking = tracking .. ks .. ' = ' .. vs .. '<br>\n'
end
tracking = tracking .. '\n<hr />\n'
end
end
end
end
end
end
end
end
-- ordering of style and bodystyle
 
targs['style'] = concatstyles({targs['style'] or '', targs['bodystyle'] or ''})
-- child or subgroup
targs['bodystyle'] = nil
if targs['border'] == nil then targs['border'] = args[1] end
-- child or subgroup
-- debug
if targs['border'] == nil then targs['border'] = pargs[1] end
tracking = tracking .. '<hr /><center><b>targs</b></center><hr />\n'
for k,v in pairs(targs) do
tracking = tracking .. k .. ' = ' .. v .. '<br>\n'
end
tracking = tracking .. '\n<hr />\n'


return Navbox._navbox(targs)
return Navbox._navbox(targs) .. tracking
end
end


function q.navbox(frame)
function p.navbox(frame)
local pargs = require('Module:Arguments').getArgs(frame, {wrappers = {'Template:Navbox with collapsible groups'}})
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
local args = getArgs(frame, {wrappers = {'Template:Navbox with collapsible groups'}})


-- Read the arguments in the order they'll be output in, to make references number in the right order.
-- Read the arguments in the order they'll be output in, to make references number in the right order.
local _
local _
_ = pargs.title
_ = args.title
_ = pargs.above
_ = args.above
for i = 1, 20 do
for i = 1, 20 do
_ = pargs["group" .. tostring(i)]
_ = args["group" .. tostring(i)]
_ = pargs["list" .. tostring(i)]
_ = args["list" .. tostring(i)]
end
end
_ = pargs.below
_ = args.below


return q._navbox(pargs)
return p._navbox(args)
end
end


return q
return p
Please note that all contributions to Nonbinary Wiki are considered to be released under the Creative Commons Attribution-ShareAlike (see Nonbinary Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)

Template used on this page: