Module:Navigation header: Difference between revisions
Appearance
Content deleted Content added
apply some conventions |
|||
Line 1: | Line 1: | ||
local p = {} |
local p = {} |
||
-- Import the standard icons and shortcut modules |
|||
local standardIcons = require('Module:Standard icons') |
local standardIcons = require('Module:Standard icons') |
||
local shortcut = require('Module:Shortcut') |
local shortcut = require('Module:Shortcut') |
||
function |
local function getIcon(key) |
||
local iconTable = standardIcons.getIconTable() |
|||
return iconTable[key] or key |
|||
end |
end |
||
function p. |
function p._main(args) |
||
local icon = {} |
|||
local label = {} |
|||
local itemType = {} |
|||
local itemType = {} |
|||
do |
|||
local i = 1 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
local theme = args["theme"] or "blue-theme" |
|||
if theme ~= "gray-theme" and theme ~= "blue-theme" then |
|||
theme = "blue-theme" |
|||
end |
|||
local output = {} |
|||
output[#output + 1] = string.format('<div class="navigation-header %s"><div role="navigation" class="navigation-header-tabs">', theme) |
|||
local shortcutParam = args["shortcut"] |
|||
-- Add shortcut box if shortcut parameter is provided |
|||
if shortcutParam then |
|||
local shortcutBox = shortcut._main({shortcutParam}) |
|||
⚫ | |||
local shortcutBox = shortcut._main({shortcutParam}) |
|||
end |
|||
⚫ | |||
⚫ | |||
output[#output + 1] = '<ul>' |
|||
-- Add leadtab if leadtab-label is defined |
|||
local leadtabLabel = args["leadtab-label"] |
|||
if leadtabLabel then |
|||
local leadtabIcon = args["leadtab-icon"] |
|||
if leadtabIcon then |
|||
output[#output + 1] = string.format( |
|||
'<li id="leadtab"><div class="navigation-header-icon">[[File:%s|x18px|link=]]</div> %s</li>', |
|||
leadtabIcon, |
|||
leadtabLabel |
|||
) |
|||
) |
|||
else |
|||
output[#output + 1] = string.format( |
|||
'<li id="leadtab">%s</li>', |
|||
leadtabLabel |
|||
) |
|||
) |
|||
end |
|||
end |
|||
for j = 1, #icon do |
|||
output[#output + 1] = string.format( |
|||
'<li id="%s"><div class="navigation-header-icon">[[File:%s|x18px|link=]]</div> %s</li>', |
|||
itemType[j], |
|||
icon[j], |
|||
label[j] |
|||
) |
|||
) |
|||
end |
|||
output[#output + 1] = '</ul>' |
|||
output[#output + 1] = '</div></div>' |
|||
return mw.getCurrentFrame():extensionTag{ |
|||
⚫ | |||
name = 'templatestyles', args = { src = 'Module:Navigation header/styles.css' } |
|||
⚫ | |||
end |
|||
function p.main(frame) |
|||
return p._main(frame:getParent().args) |
|||
end |
end |
||
Revision as of 20:21, 24 September 2023
![]() | This module depends on the following other modules: |
![]() | This module uses TemplateStyles: |
Implements Template:Navigation header.
Functions
main
main(frame: table) -> string
Takes a frame object containing the template's arguments and generates a navigation header.
frame: A table containing the arguments passed to the module.
Returns: A string representing the generated HTML for the navigation header.
_main
_main(args: table) -> string
Takes an args object containing another module's arguments into this module and does the same as above.
local p = {}
local standardIcons = require('Module:Standard icons')
local shortcut = require('Module:Shortcut')
local function getIcon(key)
local iconTable = standardIcons.getIconTable()
return iconTable[key] or key
end
function p._main(args)
local icon = {}
local label = {}
local itemType = {}
do
local i = 1
while args["icon" .. i] or args["type" .. i] or args["label" .. i] do
icon[i] = args["icon" .. i] or p.getIcon(args["type" .. i])
label[i] = args["label" .. i] or ""
itemType[i] = args["type" .. i] or ""
i = i + 1
end
end
local theme = args["theme"] or "blue-theme"
if theme ~= "gray-theme" and theme ~= "blue-theme" then
theme = "blue-theme"
end
local output = {}
output[#output + 1] = string.format('<div class="navigation-header %s"><div role="navigation" class="navigation-header-tabs">', theme)
local shortcutParam = args["shortcut"]
if shortcutParam then
local shortcutBox = shortcut._main({shortcutParam})
output[#output + 1] = string.format('<div class="navigation-header-shortcut">%s</div>', shortcutBox)
end
output[#output + 1] = '<ul>'
-- Add leadtab if leadtab-label is defined
local leadtabLabel = args["leadtab-label"]
if leadtabLabel then
local leadtabIcon = args["leadtab-icon"]
if leadtabIcon then
output[#output + 1] = string.format(
'<li id="leadtab"><div class="navigation-header-icon">[[File:%s|x18px|link=]]</div> %s</li>',
leadtabIcon,
leadtabLabel
)
else
output[#output + 1] = string.format(
'<li id="leadtab">%s</li>',
leadtabLabel
)
end
end
for j = 1, #icon do
output[#output + 1] = string.format(
'<li id="%s"><div class="navigation-header-icon">[[File:%s|x18px|link=]]</div> %s</li>',
itemType[j],
icon[j],
label[j]
)
end
output[#output + 1] = '</ul>'
output[#output + 1] = '</div></div>'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Navigation header/styles.css' }
} .. table.concat(output, '\n')
end
function p.main(frame)
return p._main(frame:getParent().args)
end
return p