Module:Navbar: Difference between revisions

    From Nonbinary Wiki
    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 htmlE