Module:Navbar: Difference between revisions
From Neodyland Wiki
More actions
If the documentation is accurate, this will use the namespace part of pageName first and fallback to Template if one isn't present, which is what we want. |
m Changed protection level for "Module:Navbar": downgraded protection level per consensus ([Move=Allow only template editors and administrators] (indefinite) [Edit=Allow only template editors and administrators] (indefinite)) |
||
| (24 intermediate revisions by 10 users not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local | local getArgs | ||
function trim( | function p._navbar(args) | ||
local titleArg = 1 | |||
end | |||
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; width:6em;' | |||
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('[') | |||
:newline(); | |||
end | |||
local ul = div:tag('ul'); | |||
ul | |||
:tag('li') | |||
:addClass('nv-view') | |||
:wikitext('[[' .. title.fullText .. '|') | |||
:tag('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('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('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(']') | |||
:newline(); | |||
end | |||
if args.collapsible then | |||
div | |||
:done() | |||
:tag('span') | |||
:css('font-size', '110%') | |||
:cssText(args.fontstyle) | |||
:wikitext(args[1]) | |||
end | |||
return tostring(div:done()) | |||
end | end | ||
function p.navbar(frame) | function p.navbar(frame) | ||
if not getArgs then | |||
getArgs = require('Module:Arguments').getArgs | |||
end | |||
return p._navbar(getArgs(frame)) | |||
end | end | ||
return p | return p | ||