Difference between revisions of "Module:Navbar"
From Creation History Wiki
(Let's not assume the error is because of the expensive function limit, it could be something else. Especially for people who import this module into MW 1.21 installations.) |
m (1 revision imported) |
||
(11 intermediate revisions by 7 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 | |
− | end | + | 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 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | 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