Difference between revisions of "Module:Navbar"
From MINR.ORG WIKI
(inherit line height on the ul to override the 1.6 default, so that it doesn't take up 2 lines and cause off-centeredness in navboxes like Template:Grand Armee Corps) |
Rickyboy320 (talk | contribs) m (25 revisions imported: Import Template Tlx and subtemplates) |
||
(11 intermediate revisions by 7 users not shown) | |||
Line 2: | Line 2: | ||
local getArgs | local getArgs | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
function p._navbar(args) | function p._navbar(args) | ||
− | |||
local titleArg = 1 | local titleArg = 1 | ||
− | + | ||
if args.collapsible then | if args.collapsible then | ||
titleArg = 2 | titleArg = 2 | ||
Line 51: | Line 14: | ||
args.fontstyle = 'color:' .. args.fontcolor .. ';' | args.fontstyle = 'color:' .. args.fontcolor .. ';' | ||
end | end | ||
− | args.style = 'float:left; text-align:left | + | args.style = 'float:left; text-align:left' |
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
+ | |||
+ | local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) | ||
+ | local title = mw.title.new(mw.text.trim(titleText), 'Template'); | ||
if not title then | if not title then | ||
− | + | error('Invalid title ' .. titleText) | |
end | end | ||
− | local | + | local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''; |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | local div = | + | local div = mw.html.create():tag('div') |
div | div | ||
− | + | :addClass('plainlinks') | |
− | + | :addClass('hlist') | |
− | + | :addClass('navbar') | |
− | + | :cssText(args.style) | |
− | if args.mini then div | + | if args.mini then div:addClass('mini') end |
if not (args.mini or args.plain) then | if not (args.mini or args.plain) then | ||
div | div | ||
− | + | :tag('span') | |
− | + | :css('word-spacing', 0) | |
− | + | :cssText(args.fontstyle) | |
− | + | :wikitext(args.text or 'This box:') | |
− | + | :wikitext(' ') | |
end | end | ||
if args.brackets then | if args.brackets then | ||
div | div | ||
− | + | :tag('span') | |
− | + | :css('margin-right', '-0.125em') | |
− | + | :cssText(args.fontstyle) | |
− | + | :wikitext('[ ') | |
− | |||
end | end | ||
− | local ul = div | + | local ul = div:tag('ul'); |
− | |||
ul | ul | ||
− | + | :tag('li') | |
− | + | :addClass('nv-view') | |
− | + | :wikitext('[[' .. title.fullText .. '|') | |
− | + | :tag(args.mini and 'abbr' or 'span') | |
− | + | :attr('title', 'View this template') | |
− | + | :cssText(args.fontstyle) | |
− | + | :wikitext(args.mini and 'v' or 'view') | |
− | + | :done() | |
− | + | :wikitext(']]') | |
− | + | :done() | |
− | + | :tag('li') | |
− | + | :addClass('nv-talk') | |
− | + | :wikitext('[[' .. talkpage .. '|') | |
− | + | :tag(args.mini and 'abbr' or 'span') | |
− | + | :attr('title', 'Discuss this template') | |
− | + | :cssText(args.fontstyle) | |
− | + | :wikitext(args.mini and 't' or 'talk') | |
− | + | :done() | |
− | + | :wikitext(']]'); | |
if not args.noedit then | if not args.noedit then | ||
ul | ul | ||
− | + | :tag('li') | |
− | + | :addClass('nv-edit') | |
− | + | :wikitext('[' .. title:fullUrl('action=edit') .. ' ') | |
− | + | :tag(args.mini and 'abbr' or 'span') | |
− | + | :attr('title', 'Edit this template') | |
− | + | :cssText(args.fontstyle) | |
− | + | :wikitext(args.mini and 'e' or 'edit') | |
− | + | :done() | |
− | + | :wikitext(']'); | |
end | end | ||
if args.brackets then | if args.brackets then | ||
div | div | ||
− | + | :tag('span') | |
− | + | :css('margin-left', '-0.125em') | |
− | + | :cssText(args.fontstyle) | |
− | + | :wikitext(' ]') | |
− | |||
end | end | ||
− | + | ||
if args.collapsible then | if args.collapsible then | ||
div | div | ||
− | + | :done() | |
− | + | :tag('div') | |
− | + | :css('font-size', '114%') | |
− | + | :css('margin', args.mini and '0 4em' or '0 7em') | |
− | .wikitext(args[1]) | + | :cssText(args.fontstyle) |
+ | :wikitext(args[1]) | ||
end | end | ||
− | return tostring(div | + | return tostring(div:done()) |
end | end | ||
Latest revision as of 19:29, 11 August 2017
This Lua module is used on 11,200,000+ pages. To avoid large-scale disruption and unnecessary server load, any changes to this module should first be tested in its /sandbox or /testcases subpages. The tested changes can then be added to this page in a single edit. Please consider discussing any changes on the talk page before implementing them. |
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
This is a Lua implementation of {{Navbar}}. It is used in Module:Navbox.
local p = {} local getArgs function p._navbar(args) local titleArg = 1 if args.collapsible then titleArg = 2 if not args.plain then args.mini = 1 end if args.fontcolor then args.fontstyle = 'color:' .. args.fontcolor .. ';' end args.style = 'float:left; text-align:left' end local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local title = mw.title.new(mw.text.trim(titleText), 'Template'); if not title then error('Invalid title ' .. titleText) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''; local div = mw.html.create():tag('div') div :addClass('plainlinks') :addClass('hlist') :addClass('navbar') :cssText(args.style) if args.mini then div:addClass('mini') end if not (args.mini or args.plain) then div :tag('span') :css('word-spacing', 0) :cssText(args.fontstyle) :wikitext(args.text or 'This box:') :wikitext(' ') end if args.brackets then div :tag('span') :css('margin-right', '-0.125em') :cssText(args.fontstyle) :wikitext('[ ') end local ul = div:tag('ul'); ul :tag('li') :addClass('nv-view') :wikitext('[[' .. title.fullText .. '|') :tag(args.mini and 'abbr' or 'span') :attr('title', 'View this template') :cssText(args.fontstyle) :wikitext(args.mini and 'v' or 'view') :done() :wikitext(']]') :done() :tag('li') :addClass('nv-talk') :wikitext('[[' .. talkpage .. '|') :tag(args.mini and 'abbr' or 'span') :attr('title', 'Discuss this template') :cssText(args.fontstyle) :wikitext(args.mini and 't' or 'talk') :done() :wikitext(']]'); if not args.noedit then ul :tag('li') :addClass('nv-edit') :wikitext('[' .. title:fullUrl('action=edit') .. ' ') :tag(args.mini and 'abbr' or 'span') :attr('title', 'Edit this template') :cssText(args.fontstyle) :wikitext(args.mini and 'e' or 'edit') :done() :wikitext(']'); end if args.brackets then div :tag('span') :css('margin-left', '-0.125em') :cssText(args.fontstyle) :wikitext(' ]') end if args.collapsible then div :done() :tag('div') :css('font-size', '114%') :css('margin', args.mini and '0 4em' or '0 7em') :cssText(args.fontstyle) :wikitext(args[1]) end return tostring(div:done()) end function p.navbar(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._navbar(getArgs(frame)) end return p