Module:Navbar: Difference between revisions
autofill name, export _navbar, use Module:Arguments, and fix whitespace, from sandbox
m>Ymblanter m (Changed protection level of Module:Navbar: RFPP request ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))) |
m>Jackmcbarn (autofill name, export _navbar, use Module:Arguments, and fix whitespace, from sandbox) |
||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local getArgs | |||
local HtmlBuilder = require('Module:HtmlBuilder') | local HtmlBuilder = require('Module:HtmlBuilder') | ||
local function trim(s) | local function trim(s) | ||
return mw.ustring.match(s, "^%s*(.-)%s*$") | |||
end | end | ||
local function htmlError(s) | 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 | end | ||
local function getTitle( pageName ) | 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 | end | ||
function p._navbar(args) | |||
local good, title, talk_title; | |||
good, title, talk_title = pcall(getTitle, args[1] or (':' .. mw.getCurrentFrame():getParent():getTitle())); | |||
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 | |||