Module:Navbox: Difference between revisions

Ganaram inukshuk (talk | contribs)
m fixed reversed logic for navbox title
Ganaram inukshuk (talk | contribs)
implement navbox nesting; some cleanup
Line 5: Line 5:


-- Navbox row
-- Navbox row
-- The <td> cell has a div that sets padding for row content; this is omitted if
-- the row content is a child navbox.
function p.navbox_row(row_content, is_row_child_navbox)
function p.navbox_row(row_content, is_row_child_navbox)
local row_content = row_content or { "Header", "Content" }
local row_content = row_content or { "Header", "Content" }
Line 12: Line 14:
if #row_content == 1 then
if #row_content == 1 then
-- Headerless row
-- Headerless row
row = row
if is_row_child_navbox then
.. '<td style="width:5%; text-align:center; background-color:#eaecf0; white-space:nowrap; padding:0em; border:1px solid white" colspan="2">\n'
-- Row data is a child navbox
        .. '<div style="padding:0.25em 0.5em">' .. row_content[1] .. '</div>\n'
row = row
    .. '</td>\n'
.. '<td style="width:5%; text-align:center; background-color:#eaecf0; white-space:nowrap; padding:0em; border:1px solid white" colspan="2">\n'
        .. row_content[1]
    .. '</td>\n'
else
-- Row data is normal data
row = row
.. '<td style="width:5%; text-align:center; background-color:#eaecf0; white-space:nowrap; padding:0em; border:1px solid white" colspan="2">\n'
        .. '<div style="padding:0.25em 0.5em">' .. row_content[1] .. '</div>\n'
    .. '</td>\n'
    end
elseif #row_content == 2 then
elseif #row_content == 2 then
-- Simple row with header and data
-- Simple row with header and data
row = row
if is_row_child_navbox then
row = row
.. '<th style="width:5%; text-align:right; background-color:#eaecf0; white-space:nowrap; padding:0.25em 0.5em; border:1px solid white">' .. row_content[1] .. '</th>\n'
.. '<th style="width:5%; text-align:right; background-color:#eaecf0; white-space:nowrap; padding:0.25em 0.5em; border:1px solid white">' .. row_content[1] .. '</th>\n'
.. '<td style="padding:0em">\n'
.. '<td style="padding:0em">\n'
.. '<div style="padding:0.25em 0.5em">' .. row_content[2] .. '</div>\n'
.. row_content[2]
.. '</td>\n'
.. '</td>\n'
else
row = row
.. '<th style="width:5%; text-align:right; background-color:#eaecf0; white-space:nowrap; padding:0.25em 0.5em; border:1px solid white">' .. row_content[1] .. '</th>\n'
.. '<td style="padding:0em">\n'
.. '<div style="padding:0.25em 0.5em">' .. row_content[2] .. '</div>\n'
.. '</td>\n'
end
end
end
local row = row .. '</tr>\n'
local row = row .. '</tr>\n'
Line 30: Line 49:


-- Navbox title
-- Navbox title
function p.navbox_title(title, is_collapsible, is_collapsed, is_child_navbox)
-- A title is added if it's provided.
local title = title or "Example Navbox"
-- Child navboxes used for subcategories don't need a title or collapse options.
function p.navbox_title(title, is_collapsible, is_collapsed)
local is_collapsible = is_collapsible or true -- Not implemented
local is_collapsible = is_collapsible or true -- Not implemented
local is_collapsed = is_collapsed or true -- Not working?
local is_collapsed = is_collapsed or true -- Not working?
local is_child_navbox = is_child_navbox or false
local navbox_title = ''
local navbox_title = ''
if is_child_navbox then
if title == nil then
navbox_title = '<table style="width:100%; border-spacing:0px">\n'
navbox_title = '<table style="width:100%; border-spacing:0px">\n'
else
else
Line 75: Line 94:


-- Navbox to be #invoke'd
-- Navbox to be #invoke'd
-- Wrapper function for template-based navboxes
function p.navbox(frame)
function p.navbox(frame)
local args = getArgs(frame)
local args = getArgs(frame)
-- Check if navbox is a child navbox
-- Default is navbox is the root navbox
args["Is Child Navbox"] = (args["Is Child Navbox"] == nil and true or args["Is Child Navbox"])
-- Preprocess individual entries for, headers, data, and is-row-child into
-- Preprocess individual entries for, headers, data, and is-row-child into