https://www.penguindevelopment.org/index.php?title=Module:Navbar&feed=atom&action=history
Module:Navbar - Revision history
2024-03-28T11:49:42Z
Revision history for this page on the wiki
MediaWiki 1.41.0
https://www.penguindevelopment.org/index.php?title=Module:Navbar&diff=83&oldid=prev
Link: 1 revision: mbox templates from Wikipedia
2013-08-17T17:46:42Z
<p>1 revision: mbox templates from Wikipedia</p>
<p><b>New page</b></p><div>local p = {}<br />
<br />
local HtmlBuilder = require('Module:HtmlBuilder')<br />
<br />
function trim(s)<br />
return mw.ustring.match( s, "^%s*(.-)%s*$" )<br />
end<br />
<br />
function error(s)<br />
local span = HtmlBuilder.create('span')<br />
<br />
span<br />
.addClass('error')<br />
.css('float', 'left')<br />
.css('white-space', 'nowrap')<br />
.wikitext('Error: ' .. s)<br />
<br />
return tostring(span)<br />
end<br />
<br />
function getTitle( pageName )<br />
pageName = trim( pageName );<br />
local page_title, talk_page_title;<br />
<br />
if mw.ustring.sub(pageName, 1, 1) == ':' then<br />
page_title = mw.title.new( mw.ustring.sub(pageName, 2) );<br />
else<br />
page_title = mw.title.new( pageName, 'Template' );<br />
end <br />
<br />
if page_title then <br />
talk_page_title = page_title.talkPageTitle;<br />
else<br />
talk_page_title = nil;<br />
end<br />
<br />
return page_title, talk_page_title; <br />
end<br />
<br />
function _navbar( args )<br />
if not args[1] then<br />
return error('No name provided')<br />
end<br />
<br />
local good, title, talk_title;<br />
good, title, talk_title = pcall( getTitle, args[1] );<br />
if not good then<br />
return error('Expensive parser function limit exceeded');<br />
end <br />
<br />
if not title then<br />
return error('Page does not exist')<br />
end<br />
<br />
local mainpage = title.fullText;<br />
local talkpage = talk_title and talk_title.fullText or ''<br />
local editurl = title:fullUrl( 'action=edit' ); <br />
<br />
local viewLink, talkLink, editLink = 'view', 'talk', 'edit'<br />
if args.mini then<br />
viewLink, talkLink, editLink = 'v', 't', 'e'<br />
end<br />
<br />
local div = HtmlBuilder.create( 'div' )<br />
div<br />
.addClass( 'noprint' )<br />
.addClass( 'plainlinks' )<br />
.addClass( 'hlist' )<br />
.addClass( 'navbar')<br />
.cssText( args.style )<br />
<br />
if args.mini then div.addClass('mini') end<br />
<br />
if not (args.mini or args.plain) then<br />
div<br />
.tag( 'span' )<br />
.css( 'word-spacing', 0 )<br />
.cssText( args.fontstyle )<br />
.wikitext( args.text or 'This box:' )<br />
.wikitext( ' ' )<br />
end<br />
<br />
if args.brackets then<br />
div<br />
.tag('span')<br />
.css('margin-right', '-0.125em')<br />
.cssText( args.fontstyle )<br />
.wikitext( '&#91;' )<br />
.newline();<br />
end<br />
<br />
local ul = div.tag('ul');<br />
<br />
ul<br />
.tag( 'li' )<br />
.addClass( 'nv-view' )<br />
.wikitext( '[[' .. mainpage .. '|' )<br />
.tag( 'span ' )<br />
.attr( 'title', 'View this template' )<br />
.cssText( args.fontstyle or '' )<br />
.wikitext( viewLink )<br />
.done()<br />
.wikitext( ']]' )<br />
.done()<br />
.tag( 'li' )<br />
.addClass( 'nv-talk' )<br />
.wikitext( '[[' .. talkpage .. '|' )<br />
.tag( 'span ' )<br />
.attr( 'title', 'Discuss this template' )<br />
.cssText( args.fontstyle or '' )<br />
.wikitext( talkLink )<br />
.done()<br />
.wikitext( ']]' );<br />
<br />
if not args.noedit then <br />
ul<br />
.tag( 'li' )<br />
.addClass( 'nv-edit' )<br />
.wikitext( '[' .. editurl .. ' ' )<br />
.tag( 'span ' )<br />
.attr( 'title', 'Edit this template' )<br />
.cssText( args.fontstyle or '' )<br />
.wikitext( editLink )<br />
.done()<br />
.wikitext( ']' );<br />
end<br />
<br />
if args.brackets then<br />
div<br />
.tag('span')<br />
.css('margin-left', '-0.125em')<br />
.cssText( args.fontstyle or '' )<br />
.wikitext( '&#93;' )<br />
.newline();<br />
end<br />
<br />
return tostring(div)<br />
end<br />
<br />
function p.navbar(frame)<br />
local origArgs<br />
-- If called via #invoke, use the args passed into the invoking template.<br />
-- Otherwise, for testing purposes, assume args are being passed directly in.<br />
if frame == mw.getCurrentFrame() then<br />
origArgs = frame:getParent().args<br />
else<br />
origArgs = frame<br />
end<br />
<br />
-- ParserFunctions considers the empty string to be false, so to preserve the previous <br />
-- behavior of {{navbar}}, change any empty arguments to nil, so Lua will consider<br />
-- them false too.<br />
args = {}<br />
for k, v in pairs(origArgs) do<br />
if v ~= '' then<br />
args[k] = v<br />
end<br />
end<br />
<br />
return _navbar(args)<br />
end<br />
<br />
return p</div>
Link