Module:Military navigation: Difference between revisions
en>Frietjes No edit summary |
m 1 revision imported |
||
| (2 intermediate revisions by 2 users not shown) | |||
| Line 7: | Line 7: | ||
return (not s) or s == '' | return (not s) or s == '' | ||
end | end | ||
local function | local function ifnotblank(s,p,t) | ||
return s and s ~= '' | return (s and s ~= '') and (p..s) or t | ||
end | end | ||
| Line 14: | Line 14: | ||
local args = { } | local args = { } | ||
local pargs = frame:getParent().args | local pargs = frame:getParent().args | ||
local fargs = frame.args | |||
local sargs = {} | local sargs = {} | ||
local tcats = '' | local tcats = '' | ||
-- process bodystyle and titlestyle | -- process bodystyle and titlestyle | ||
local style = fargs['style'] or pargs['style'] or '' | |||
if style == 'wide' then | |||
args['titlestyle'] = Styles['nav_box_wide_header'] | args['titlestyle'] = Styles['nav_box_wide_header'] | ||
args['bodystyle'] = Styles['nav_box_wide'] | args['bodystyle'] = Styles['nav_box_wide'] | ||
else | else | ||
args['titlestyle'] = Styles['nav_box_header'] | args['titlestyle'] = Styles['nav_box_header'] | ||
local border = fargs['border'] or pargs['border'] or '' | |||
if border == 'child' or border == 'subgroup' then | |||
args['bodystyle'] = Styles['nav_box_child'] | args['bodystyle'] = Styles['nav_box_child'] | ||
tcats = tcats .. '[[Category:Pages using military navigation subgroups without wide style]]' | tcats = tcats .. '[[Category:Pages using military navigation subgroups without wide style]]' | ||
| Line 35: | Line 37: | ||
-- process groupstyle, abovestyle, belowstyle | -- process groupstyle, abovestyle, belowstyle | ||
args['groupstyle'] = Styles['nav_box_label'] .. (pargs['groupstyle'] or '') | args['groupstyle'] = Styles['nav_box_label'] .. (fargs['groupstyle'] or pargs['groupstyle'] or '') | ||
sargs['groupstyle'] = 1 | sargs['groupstyle'] = 1 | ||
args['abovestyle'] = Styles['nav_box_label'] .. (pargs['abovestyle'] or '') | args['abovestyle'] = Styles['nav_box_label'] .. (fargs['abovestyle'] or pargs['abovestyle'] or '') | ||
sargs['abovestyle'] = 1 | sargs['abovestyle'] = 1 | ||
args['belowstyle'] = Styles['nav_box_label'] .. (pargs['belowstyle'] or '') | args['belowstyle'] = Styles['nav_box_label'] .. (fargs['belowstyle'] or pargs['belowstyle'] or '') | ||
sargs['belowstyle'] = 1 | sargs['belowstyle'] = 1 | ||
-- process oddstyle, evenstyle | -- process oddstyle, evenstyle | ||
args['oddstyle'] = | args['oddstyle'] = ifnotblank((fargs['odd_color'] or pargs['odd_color']),'background:',nil) | ||
args['evenstyle'] = ifnotblank((fargs['even_color'] or pargs['even_color']),'background:',nil) | |||
sargs['oddstyle'] = 1 | sargs['oddstyle'] = 1 | ||
sargs['evenstyle'] = 1 | sargs['evenstyle'] = 1 | ||
-- process name and rawname | -- process name and rawname | ||
args['name'] = ( | args['name'] = ifnotblank((fargs['name'] or pargs['name']),'',(fargs['rawname'] or pargs['rawname'])) | ||
if isblank(args['name']) then args['navbar'] = 'plain' end | if isblank(args['name']) then args['navbar'] = 'plain' end | ||
sargs['name'] = 1 | sargs['name'] = 1 | ||
sargs['rawname'] = 1 | sargs['rawname'] = 1 | ||
-- copy the remaining args | -- copy the remaining args, with frame args overriding parent args | ||
for k, v in pairs(pargs) do | for k, v in pairs(pargs) do | ||
if v and v ~= '' and sargs[k] == nil then | |||
args[k] = v | |||
end | |||
end | |||
for k, v in pairs(fargs) do | |||
if v and v ~= '' and sargs[k] == nil then | if v and v ~= '' and sargs[k] == nil then | ||
args[k] = v | args[k] = v | ||
| Line 61: | Line 66: | ||
end | end | ||
-- add allow wrap | -- add allow wrap | ||
if args['title'] and | if args['title'] and style ~= 'wide' then | ||
if not mw.ustring.match(args['title'], '<span class="wrap">') then | if not mw.ustring.match(args['title'], '<span class="wrap">') then | ||
-- probably a more efficient way to match 15 or more characters | -- probably a more efficient way to match 15 or more characters | ||
| Line 76: | Line 81: | ||
-- add navbox-vertical for non-wide format | -- add navbox-vertical for non-wide format | ||
if | if style ~= 'wide' then | ||
args['bodyclass'] = 'navbox-vertical' .. (args['bodyclass'] and (' ' .. args['bodyclass']) or '') | args['bodyclass'] = 'navbox-vertical' .. (args['bodyclass'] and (' ' .. args['bodyclass']) or '') | ||
end | end | ||