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 isnotblank(s)
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
if (pargs['style'] or '') == 'wide' then
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']
if (pargs['border'] or '') == 'child' or  
local border = fargs['border'] or pargs['border'] or ''
(pargs['border'] or '') == 'subgroup' then
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'] = isnotblank(pargs['odd_color'])
args['oddstyle'] = ifnotblank((fargs['odd_color'] or pargs['odd_color']),'background:',nil)
and ('background:' .. pargs['odd_color']) or nil
args['evenstyle'] = ifnotblank((fargs['even_color'] or pargs['even_color']),'background:',nil)
sargs['oddstyle'] = 1
sargs['oddstyle'] = 1
args['evenstyle'] = isnotblank(pargs['even_color'])
and ('background:' .. pargs['even_color']) or nil
sargs['evenstyle'] = 1
sargs['evenstyle'] = 1
-- process name and rawname
-- process name and rawname
args['name'] = (isnotblank(pargs['name']) and pargs['name']) or pargs['rawname']
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 (pargs['style'] or '') ~= 'wide' then
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 (pargs['style'] or '') ~= 'wide' then
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