Módulo:Navbar
Este módulo pode ter sua documentação deficiente. Por favor, documente-o ou melhore suas explicações caso o saiba usar ou tenha conhecimentos para tal. |
Este módulo é usado em aproximadamente 752 378 páginas. (Ver Wikipedia:Predefinições em alto risco) Para evitar sobrecargas desnecessárias ao servidor e outros transtornos, quaisquer mudanças devem ser previamente testadas, seja na subpágina de testes deste módulo, na subpágina de testes de módulos (ou ainda em sua subpágina de testes). Por favor, sempre considere expor eventuais mudanças na página de discussão, antes de implementá-las. |
Este módulo implementa a predefinição Navbar.
local p = {}
local getArgs
local ul
function p.addItem (mini, full, link, descrip, args, url)
local l
if url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-'..full)
:wikitext(l[1] .. link .. l[2])
:tag(args.mini and 'abbr' or 'span')
:attr('title', descrip..' esta predefinição')
:cssText(args.fontstyle or args['fonteestilo'])
:wikitext(args.mini and mini or full)
:done()
:wikitext(l[3])
end
function p.brackets (position, c, args, div)
if args.brackets or args['parênteses retos'] or args['colchetes'] then
div
:tag('span')
:css('margin-'..position, '-0.125em')
:cssText(args.fontstyle or args['fonteestilo'])
:wikitext(c)
end
end
function p._navbar(args)
local show = {true, true, true, false, false, false}
local titleArg = 1
if args.collapsible or args['flexível'] then
titleArg = 2
if not args.plain or not args.simples then args.mini = 1 end
if args.fontcolor then
if args.fontstyle then
args.fontstyle = 'color:' .. args.fontcolor .. ';'
else
args['fonteestilo'] = 'color:' .. args['fontecor'] .. ';'
end
elseif args['fontecor'] then
if args.fontstyle then
args.fontstyle = 'color:' .. args['fontecor'] .. ';'
else
args['fonteestilo'] = 'color:' .. args['fontecor'] .. ';'
end
end
if args.style then
args.style = 'float:left; text-align:left'
else
args.estilo = 'float:left; text-align:left'
end
end
if args.template then
titleArg = 'template'
show = {true, false, false, false, false, false}
local index = {d = 2, e = 3, h = 4, m = 5, vi = 6, discutir = 2, editar = 3, hist = 4, mover = 5, vigiar = 6}
for k, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
elseif args['predefinição'] then
titleArg = 'predefinição'
show = {true, false, false, false, false, false}
local index = {d = 2, e = 3, h = 4, m = 5, vi = 6, discutir = 2, editar = 3, hist = 4, mover = 5, vigiar = 6}
for k, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
if args.noedit then show[3] = false end
if args['nãoeditar'] then show[3] = false end
local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local title = mw.title.new(mw.text.trim(titleText), 'Predefinição')
if not title then
error('Título inválido ' .. 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 or args.estilo)
if args.mini then div:addClass('mini') end
if not (args.mini or args.plain or args.simples) then
div
:tag('span')
:css('word-spacing', 0)
:cssText(args.fontstyle or args['fonteestilo'])
:wikitext(args.text or args.texto or 'Esta caixa:')
:wikitext(' ')
end
p.brackets('right', '[ ', args, div)
ul = div:tag('ul')
if show[1] then p.addItem('v', 'ver', title.fullText, 'Ver', args) end
if show[2] then p.addItem('d', 'discutir', talkpage, 'Discutir', args) end
if show[3] then p.addItem('e', 'editar', title:fullUrl('action=edit'), 'Editar', args, true) end
if show[4] then p.addItem('h', 'hist', title:fullUrl('action=history'), 'Histórico de', args, true) end
if show[5] then
local move = mw.title.new ('Special:Movepage')
p.addItem('m', 'mover', move:fullUrl('target='..title.fullText), 'Mover', args, true) end
if show[6] then p.addItem('vi', 'vigiar', title:fullUrl('action=watch'), 'Vigiar', args, true) end
p.brackets('left', ' ]', args, div)
if args.collapsible or args['flexível'] then
div
:done()
:tag('div')
:css('font-size', '114%')
:css('margin', args.mini and '0 4em' or '0 7em')
:cssText(args.fontstyle or args['fonteestilo'])
: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