Difference between revisions of "Module:Navbar"
From Creation History Wiki
(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 (1 revision imported) |
||
(18 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(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(']') | ||
+ | :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 |
Latest revision as of 14:58, 5 July 2016
Documentation for this module may be created at Module:Navbar/doc
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; 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(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(']') :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 function p.navbar(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._navbar(getArgs(frame)) end return p