Module:Navbar: Difference between revisions

1,403 bytes removed ,  11 years ago
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*$" )
return mw.ustring.match(s, "^%s*(.-)%s*$")
end
end


local function htmlError(s)
local function htmlError(s)
    local span = HtmlBuilder.create('span')
local span = HtmlBuilder.create('span')


    span
span
        .addClass('error')
.addClass('error')
        .css('float', 'left')
.css('float', 'left')
        .css('white-space', 'nowrap')
.css('white-space', 'nowrap')
        .wikitext('Error: ' .. s)
.wikitext('Error: ' .. s)


    return tostring(span)
return tostring(span)
end
end


local function getTitle( pageName )
local function getTitle(pageName)
    pageName = trim( pageName );
pageName = trim(pageName);
    local page_title, talk_page_title;
local page_title, talk_page_title;
   
 
    if mw.ustring.sub(pageName, 1, 1) == ':' then
if mw.ustring.sub(pageName, 1, 1) == ':' then
        page_title = mw.title.new( mw.ustring.sub(pageName, 2) );
page_title = mw.title.new( mw.ustring.sub(pageName, 2));
    else
else
        page_title = mw.title.new( pageName, 'Template' );
page_title = mw.title.new(pageName, 'Template');
    end  
end
   
 
    if page_title then  
if page_title then
        talk_page_title = page_title.talkPageTitle;
talk_page_title = page_title.talkPageTitle;
    else
else
        talk_page_title = nil;
talk_page_title = nil;
    end
end
   
 
    return page_title, talk_page_title;  
return page_title, talk_page_title;
end
end


local function _navbar( args )
function p._navbar(args)
    if not args[1] then
local good, title, talk_title;
        return htmlError('No name provided')
good, title, talk_title = pcall(getTitle, args[1] or (':' .. mw.getCurrentFrame():getParent():getTitle()));
    end
if not good then
return htmlError(title);
    local good, title, talk_title;
end
    good, title, talk_title = pcall( getTitle, args[1] );
 
    if not good then
if not title then
        return htmlError(title);
return htmlError('Page does not exist')
    end  
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 not title then
if args.mini then div.addClass('mini') end
        return htmlError('Page does not exist')
 
    end