Модул:Navbar
Зоҳир
![]() |
This template is used on 4,000+ pages. To avoid large-scale disruption and unnecessary server load, any changes to this template should first be tested in its /sandbox or /testcases subpages, or in your own user space. The tested changes can then be added to this page in one single edit. Please consider discussing any changes on the talk page before implementing them. |
This is a Lua implementation of {{Navbar}}. It is used in Module:Navbox.
local p = {}
local hlist = 'Template:Flatlist/styles.css'
local templatestyles = 'Module:Navbar/styles.css'
local getArgs
function p._ruwikiNavbar( args )
local titleText = args[ 1 ] 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 whiteColorDefs = {
['#fff'] = true,
['#ffffff'] = true,
['white'] = true,
}
local fontColor = args.fontcolor and args.fontcolor:lower()
local isWhite = fontColor and whiteColorDefs[ fontColor ] == true
local fontStyle = args.fontstyle and mw.text.unstripNoWiki( args.fontstyle:lower() )
if not isWhite and fontStyle then
local styleratio = require( 'Module:Color contrast' )._styleratio
isWhite = styleratio( {
fontStyle .. '; color:#666;',
'',
'#666'
} ) < 3.66
end
local isTemplate = title.namespace == 10
local altText = string.format(
'Перейти %s «%s»',
isTemplate and 'ба шаблон' or 'дар саҳифа',
mw.text.split( isTemplate and title.text or title.fullText, '#' )[ 1 ]
)
return string.format(
'[[Акс:Wikipedia interwiki section gear icon%s.svg|14px|class=noprint%s|link=%s|%s]]',
isWhite and ' white' or '',
isWhite and '' or ' skin-invert-image',
tostring( title ),
altText
)
end
function p.ruwikiNavbar(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._ruwikiNavbar(getArgs(frame))
end
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; white-space:nowrap;'
end
if args[titleArg] == 'off' then
return
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 tag
if args.nodiv then
tag = 'span'
else
tag = 'div'
end
local div = mw.html.create():tag(tag)
div
:addClass('navbar hlist plainlinks noprint')
:attr('data-navboxnavigation-link', '0')
:cssText(args.style)
if args.mini then div:addClass('navbar-mini') end
if not (args.mini or args.plain) then
div
:tag('span')
:addClass('navbar-boxtext')
:cssText(args.fontstyle)
:wikitext(args.text or 'Шаблон:')
:wikitext(' ')
end
local ul = div:tag('ul');
if args.brackets then
ul:addClass('navbar-brackets')
end
ul
:tag('li')
:addClass('nv-view')
:wikitext('[[' .. title.fullText .. '|')
:tag(args.mini and 'abbr' or 'span')
:addClass(args.mini and 'navbar-mini-abbr')
:attr('title', 'Дидани шаблон')
:cssText(args.fontstyle)
:wikitext(args.mini and 'д' or 'дидан')
:done()
:wikitext(']]')
:done()
:tag('li')
:addClass('nv-talk')
:wikitext('[[' .. talkpage .. '|')
:tag(args.mini and 'abbr' or 'span')
:attr('title', 'Баҳси шаблон')
:cssText(args.fontstyle)
:wikitext(args.mini and 'б' or 'баҳс')
:done()
:wikitext(']]');
if not args.noedit then
ul
:tag('li')
:addClass('nv-edit')
:wikitext('[[Special:EditPage/' .. title.fullText .. '|')
:tag(args.mini and 'abbr' or 'span')
:attr('title', 'Вироиши шаблон')
:cssText(args.fontstyle)
:wikitext(args.mini and 'в' or 'вироиш')
:done()
:wikitext(']]');
end
if args.collapsible then
div:done()
:tag('span')
:addClass( args.mini and 'navbar-ct-mini' or 'navbar-ct-full' )
:cssText(args.fontstyle)
:wikitext(args[1])
end
local frame = mw.getCurrentFrame()
return frame:extensionTag{
name = 'templatestyles', args = { src = hlist }
} .. frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
} .. 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