Changes
some refactoring + templatestyles
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local getArgsfunction get_title_arg(is_collapsible, template) local ultitle_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_argend
local function pchoose_links(template, args) -- The show table indicates the default displayed items.addItem (mini -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, fullhist = 4, linkmove = 5, descripwatch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, urlfont_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
end
ul:tag('li')
:addClass('nv-'.. link_description.full) :wikitext(l[1] .. link_description. link .. l[2]) :tag(args.mini is_mini and 'abbr' or 'span') :attr('title', descriplink_description..' this template'html_title) :cssText(args.fontstylefont_style) :wikitext(argsis_mini and link_description.mini and mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function p.brackets make_list(positiontitle_text, has_brackets, displayed_links, cis_mini, argsfont_style) local title = mw.title.new(mw.text.trim(title_text), divcfg.title_namespace) if argsnot title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.brackets thenfullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = title:fullUrl('action=edit'), ['url'] = true }, div{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = title:tagfullUrl('spanaction=history'), ['url'] = true }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):cssfullUrl('margin-target='..positiontitle.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'-0] = true } } local ul = mw.html.125emcreate('ul') if has_brackets then ul:cssTextaddClass(argscfg.classes.fontstylebrackets) :wikitextcssText(cfont_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style)end
end
return ul:done()
end
function p._navbar(args)
local collapsible_class = nil if args.template is_collapsible then titleArg collapsible_class = 'template'cfg.classes.collapsible show if not is_plain then is_mini = {true, false, false, false, false, false}1 end local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch if font_color then font_style = 6} for k,v in ipairs(require (font_style or '') .. 'Module; color:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end. font_color .. ';'
end
end
local div = mw.html.create():tag('div')
div
:addClass('cfg.classes.navbar) :addClass(cfg.classes.plainlinks') :addClass('hlist'cfg.classes.horizontal_list) :addClass('navbar'collapsible_class)-- we made the determination earlier :cssText(args.stylenavbar_style)
if args.mini is_mini then div:addClass('cfg.classes.mini') end
div
:tag('span')
:cssaddClass('word-spacing', 0cfg.classes.box_text) :cssText(args.fontstyle) :wikitext(args.text or 'This box:'font_style) :wikitext(' 'box_text)
end
:wikitext(args[1])
end
return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done())
end
function p.navbar(frame)
end
return p