Changes

Jump to navigation Jump to search

Module:Navbar

1,257 bytes removed, 01:34, 10 September 2019
m
29 revisions imported
local p = {}
local HtmlBuilder = require('Module:HtmlBuilder')getArgslocal ul
function p.addItem (mini, full, link, descrip, args, url) local function triml if url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass(s'nv-'..full) return mw :wikitext(l[1] .ustring.matchlink .. l[2]) :tag( sargs.mini and 'abbr' or 'span') :attr('title', "^%s*descrip..' this template') :cssText(args.fontstyle) :wikitext(args.-mini and mini or full) :done()%s*$" :wikitext(l[3])
end
local function htmlErrorp.brackets (sposition, c, args, div) local span = HtmlBuilder if args.createbrackets then div :tag('span') :css('margin-'..position, '-0.125em') :cssText(args.fontstyle) :wikitext(c) endend
spanfunction p._navbar(args) local show = {true, true, true, false, false, false} 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' end if args.addClasstemplate then titleArg = 'template' show = {true, false, false, false, false, false} local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} for k,v in ipairs(require ('errorModule:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end if args.cssnoedit then show[3] = false end local titleText = args[titleArg] or ('float:'.. mw.getCurrentFrame():getParent():getTitle()) local title = mw.title.new(mw.text.trim(titleText), 'leftTemplate') if not title then error('Invalid title ' ..csstitleText) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' local div = mw.html.create():tag('white-spacediv', ) div :addClass('nowrapplainlinks') .wikitext :addClass('Errorhlist') : addClass(' navbar') :cssText(args.. sstyle)
return tostring if args.mini then div:addClass(span'mini')end
local function getTitle if not ( pageName args.mini or args.plain)then div pageName = trim :tag( pageName 'span'); local page_title :css('word-spacing', talk_page_title;0) :cssText(args.fontstyle) if mw :wikitext(args.ustringtext or 'This box:') :wikitext(' ') end p.subbrackets(pageName'right', '[ ', 1args, 1div) ul == div:tag(':ul' ) if show[1] then page_title = mwp.addItem('v', 'view', title.newfullText, 'View', args) end if show[2] then p.addItem( mw't', 'talk', talkpage, 'Discuss', args) end if show[3] then p.ustringaddItem('e', 'edit', title:fullUrl('action=edit'), 'Edit', args, true) end if show[4] then p.subaddItem(pageName'h', 'hist', 2title:fullUrl('action=history') , 'History of', args, true);end else if show[5] then page_title local move = mw.title.new( pageName'Special:Movepage') p.addItem('m', 'move', move:fullUrl('target='..title.fullText), 'TemplateMove' , args, true); end if page_title show[6] then p.addItem('w', 'watch', title:fullUrl('action=watch'), 'Watch', args, true) end talk_page_title = page_title p.talkPageTitlebrackets('left', ' ]', args, div) if args.collapsible then else div talk_page_title = nil; :done() end :tag('div') :css('font-size', '114%') return page_title :css('margin', talk_page_title; args.mini and '0 4em' or '0 7em') :cssText(args.fontstyle) :wikitext(args[1]) end
local function _navbar( args ) if not args[1] then return htmlErrortostring('No name provided') end local good, title, talk_title; good, title, talk_title = pcall( getTitle, args[1] ); if not good then return htmlError(title); end   if not title then return htmlError('Page does not exist') end local mainpage = title.fullText; local talkpage = talk_title and talk_title.fullText or '' local editurl = title:fullUrl( 'action=edit' ); local viewLink, talkLink, editLink = 'view', 'talk', 'edit' if args.mini then viewLink, talkLink, editLink = 'v', 't', 'e' end local div = HtmlBuilder.create( '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( '[[' .. mainpage .. '|' ) .tag( 'span ' ) .attr( 'title', 'View this template' ) .cssText( args.fontstyle or '' ) .wikitext( viewLink ) .done() .wikitext( ']]' ) .done() .tag( 'li' ) .addClass( 'nv-talk' ) .wikitext( '[[' .. talkpage .. '|' ) .tag( 'span ' ) .attr( 'title', 'Discuss this template' ) .cssText( args.fontstyle or '' ) .wikitext( talkLink ) .done() .wikitext( ']]' ); if not args.noedit then ul .tag( 'li' ) .addClass( 'nv-edit' ) .wikitext( '[' .. editurl .. ' ' ) .tag( 'span ' ) .attr( 'title', 'Edit this template' ) .cssText( args.fontstyle or '' ) .wikitext( editLink ) .done() .wikitext( ']' ); end if args.brackets then div .tag('span') .css('margin-left', '-0.125em') .cssText( args.fontstyle or '' ) .wikitext( ']' ) .newline(); end return tostring(div)
end
function p.navbar(frame)
local origArgs -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. if frame == mw.getCurrentFrame() not getArgs then origArgs getArgs = framerequire('Module:getParent(Arguments').args else origArgs = framegetArgs end -- ParserFunctions considers the empty string to be false, so to preserve the previous -- behavior of {{navbar}}, change any empty arguments to nil, so Lua will consider -- them false too return p. local args = {} for k, v in pairs_navbar(getArgs(origArgsframe) do if v ~= '' then args[k] = v end end return _navbar(args)
end
return p

Navigation menu