Editing Module:Navbar

From MINR.ORG WIKI

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 2: Line 2:
  
 
local getArgs
 
local getArgs
 +
local HtmlBuilder = require('Module:HtmlBuilder')
 +
 +
local function trim(s)
 +
return mw.ustring.match(s, "^%s*(.-)%s*$")
 +
end
 +
 +
local function htmlError(s)
 +
local span = HtmlBuilder.create('span')
 +
 +
span
 +
.addClass('error')
 +
.css('float', 'left')
 +
.css('white-space', 'nowrap')
 +
.wikitext('Error: ' .. s)
 +
 +
return tostring(span)
 +
end
 +
 +
local 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 p._navbar(args)
 
function p._navbar(args)
 +
local good, title, talk_title;
 
local titleArg = 1
 
local titleArg = 1
 
+
 
if args.collapsible then
 
if args.collapsible then
 
titleArg = 2
 
titleArg = 2
Line 14: Line 51:
 
args.fontstyle = 'color:' .. args.fontcolor .. ';'
 
args.fontstyle = 'color:' .. args.fontcolor .. ';'
 
end
 
end
args.style = 'float:left; text-align:left'
+
args.style = 'float:left; text-align:left; width:6em;'
 +
end
 +
 +
good, title, talk_title = pcall(getTitle, args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle()));
 +
if not good then
 +
return htmlError(title);
 
end
 
end
 
local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
 
local title = mw.title.new(mw.text.trim(titleText), 'Template');
 
  
 
if not title then
 
if not title then
error('Invalid title ' .. titleText)
+
return htmlError('Page does not exist')
 
end
 
end
  
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '';
+
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 = mw.html.create():tag('div')
+
local div = HtmlBuilder.create().tag('div')
 
div
 
div
:addClass('plainlinks')
+
.addClass('plainlinks')
:addClass('hlist')
+
.addClass('hlist')
:addClass('navbar')
+
.addClass('navbar')
:cssText(args.style)
+
.cssText(args.style)
  
if args.mini then div:addClass('mini') end
+
if args.mini then div.addClass('mini') end
  
 
if not (args.mini or args.plain) then
 
if not (args.mini or args.plain) then
 
div
 
div
:tag('span')
+
.tag('span')
:css('word-spacing', 0)
+
.css('word-spacing', 0)
:cssText(args.fontstyle)
+
.cssText(args.fontstyle)
:wikitext(args.text or 'This box:')
+
.wikitext(args.text or 'This box:')
:wikitext(' ')
+
.wikitext(' ')
 
end
 
end
  
 
if args.brackets then
 
if args.brackets then
 
div
 
div
:tag('span')
+
.tag('span')
:css('margin-right', '-0.125em')
+
.css('margin-right', '-0.125em')
:cssText(args.fontstyle)
+
.cssText(args.fontstyle)
:wikitext('[ ')
+
.wikitext('[')
 +
.newline();
 
end
 
end
  
local ul = div:tag('ul');
+
local ul = div.tag('ul');
  
 
ul
 
ul
:tag('li')
+
.tag('li')
:addClass('nv-view')
+
.addClass('nv-view')
:wikitext('[[' .. title.fullText .. '|')
+
.wikitext('[[' .. mainpage .. '|')
:tag(args.mini and 'abbr' or 'span')
+
.tag('span')
:attr('title', 'View this template')
+
.attr('title', 'View this template')
:cssText(args.fontstyle)
+
.cssText(args.fontstyle or '')
:wikitext(args.mini and 'v' or 'view')
+
.wikitext(viewLink)
:done()
+
.done()
:wikitext(']]')
+
.wikitext(']]')
:done()
+
.done()
:tag('li')
+
.tag('li')
:addClass('nv-talk')
+
.addClass('nv-talk')
:wikitext('[[' .. talkpage .. '|')
+
.wikitext('[[' .. talkpage .. '|')
:tag(args.mini and 'abbr' or 'span')
+
.tag('span')
:attr('title', 'Discuss this template')
+
.attr('title', 'Discuss this template')
:cssText(args.fontstyle)
+
.cssText(args.fontstyle or '')
:wikitext(args.mini and 't' or 'talk')
+
.wikitext(talkLink)
:done()
+
.done()
:wikitext(']]');
+
.wikitext(']]');
  
 
if not args.noedit then
 
if not args.noedit then
 
ul
 
ul
:tag('li')
+
.tag('li')
:addClass('nv-edit')
+
.addClass('nv-edit')
:wikitext('[' .. title:fullUrl('action=edit') .. ' ')
+
.wikitext('[' .. editurl .. ' ')
:tag(args.mini and 'abbr' or 'span')
+
.tag('span')
:attr('title', 'Edit this template')
+
.attr('title', 'Edit this template')
:cssText(args.fontstyle)
+
.cssText(args.fontstyle or '')
:wikitext(args.mini and 'e' or 'edit')
+
.wikitext(editLink)
:done()
+
.done()
:wikitext(']');
+
.wikitext(']');
 
end
 
end
  
 
if args.brackets then
 
if args.brackets then
 
div
 
div
:tag('span')
+
.tag('span')
:css('margin-left', '-0.125em')
+
.css('margin-left', '-0.125em')
:cssText(args.fontstyle)
+
.cssText( args.fontstyle or '')
:wikitext(' ]')
+
.wikitext(']')
 +
.newline();
 
end
 
end
 
+
 
if args.collapsible then
 
if args.collapsible then
 
div
 
div
:done()
+
.done()
:tag('div')
+
.tag('span')
:css('font-size', '114%')
+
.css('font-size', '110%')
:css('margin', args.mini and '0 4em' or '0 7em')
+
.cssText(args.fontstyle or '')
:cssText(args.fontstyle)
+
.wikitext(args[1])
:wikitext(args[1])
 
 
end
 
end
  
return tostring(div:done())
+
return tostring(div.allDone())
 
end
 
end
  

Please note that all contributions to MINR.ORG WIKI may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see MINR.ORG WIKI:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)