Revision as of 05:53, 2 April 2013 view sourceDragons flight (talk | contribs)Edit filter managers, Extended confirmed users, Rollbackers, Template editors25,792 edits also trap talk title← Previous edit | Revision as of 13:47, 3 September 2013 view source Anomie (talk | contribs)Edit filter managers, Autopatrolled, Administrators33,947 edits 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.Next edit → | ||
Line 46: | Line 46: | ||
good, title, talk_title = pcall( getTitle, args ); | good, title, talk_title = pcall( getTitle, args ); | ||
if not good then | if not good then | ||
return error( |
return error(title); | ||
end | end | ||
Revision as of 13:47, 3 September 2013
Module documentation[view] [edit] [history] [purge]This Lua module is used in system messages, and on approximately 4,940,000 pages, or roughly 8% of all pages. Changes to it can cause immediate changes to the Misplaced Pages user interface. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them. |
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
This module depends on the following other modules: |
This module uses TemplateStyles: |
This is a Lua implementation of {{Navbar}}. It is used in Module:Navbox.
The above documentation is transcluded from Module:Navbar/doc. (edit | history)Editors can experiment in this module's sandbox (edit | diff) and testcases (edit | run) pages.
Subpages of this module.
local p = {} local HtmlBuilder = require('Module:HtmlBuilder') function trim(s) return mw.ustring.match( s, "^%s*(.-)%s*$" ) end function error(s) local span = HtmlBuilder.create('span') span .addClass('error') .css('float', 'left') .css('white-space', 'nowrap') .wikitext('Error: ' .. s) return tostring(span) end function getTitle( pageName ) pageName = trim( pageName ); local page_title, talk_page_title; if mw.ustring.sub(pageName, 1, 1) == ':' then page_title = mw.title.new( mw.ustring.sub(pageName, 2) ); else page_title = mw.title.new( pageName, 'Template' ); end if page_title then talk_page_title = page_title.talkPageTitle; else talk_page_title = nil; end return page_title, talk_page_title; end function _navbar( args ) if not args then return error('No name provided') end local good, title, talk_title; good, title, talk_title = pcall( getTitle, args ); if not good then return error(title); end if not title then return error('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( 'noprint' ) .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() then origArgs = frame:getParent().args else origArgs = frame 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. args = {} for k, v in pairs(origArgs) do if v ~= '' then args = v end end return _navbar(args) end return pCategory: