לדלג לתוכן

יחידה:Navbar: הבדלים בין גרסאות בדף

מתוך צפונות ויקי
Let's not assume the error is because of the expensive function limit, it could be something else. Especially for people who import this module into MW 1.21 installations.
מ 2 גרסאות של הדף wikipedia:he:יחידה:Navbar יובאו
 
(27 גרסאות ביניים של 14 משתמשים אינן מוצגות)
שורה 1: שורה 1:
local p = {}
local p = {}


local HtmlBuilder = require('Module:HtmlBuilder')
local getArgs


function trim(s)
function p._navbar(args)
    return mw.ustring.match( s, "^%s*(.-)%s*$" )
local titleArg = 1
end
 
if args.collapsible then
titleArg = 2
if not args.plain then
args.mini = 1
end
if args.fontcolor then
args.fontstyle = 'color:' .. args.fontcolor .. ';'
end
args.style = 'float:left; text-align:left; width:6em;'
end
 
local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local title = mw.title.new(mw.text.trim(titleText), 'Template');
 
if not title then
error('Invalid title ' .. titleText)
end
 
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '';
 
local div = mw.html.create():tag('div')
div
:addClass('plainlinks')
:addClass('hlist')
:addClass('navbar')
:cssText(args.style)
 
if args.mini then div:addClass('mini') end
 
if not (args.mini or args.plain) then
div
:tag('span')
:css('word-spacing', 0)
:cssText(args.fontstyle)
:wikitext(args.text or 'This box:')
:wikitext(' ')
end


function error(s)
if args.brackets then
    local span = HtmlBuilder.create('span')
div
:tag('span')
:css('margin-right', '-0.125em')
:cssText(args.fontstyle)
:wikitext('[')
:newline();
end


    span
local ul = div:tag('ul');
        .addClass('error')
        .css('float', 'left')
        .css('white-space', 'nowrap')
        .wikitext('Error: ' .. s)


    return tostring(span)
ul
end
:tag('li')
:addClass('nv-view')
:wikitext('[[' .. title.fullText .. '|')
:tag(args.mini and 'abbr' or 'span')
:attr('title', 'צפייה בתבנית זו')
:cssText(args.fontstyle)
:wikitext(args.mini and 'צ' or 'צפייה')
:done()
:wikitext(']]')
:done()
:tag('li')
:addClass('nv-talk')
:wikitext('[[' .. talkpage .. '|')
:tag(args.mini and 'abbr' or 'span')
:attr('title', 'שיחה על תבנית זו')
:cssText(args.fontstyle)
:wikitext(args.mini and 'ש' or 'שיחה')
:done()
:wikitext(']]');


function getTitle( pageName )
if not args.noedit then
    pageName = trim( pageName );
ul
    local page_title, talk_page_title;
:tag('li')
   
:addClass('nv-edit')
    if mw.ustring.sub(pageName, 1, 1) == ':' then
:wikitext('[' .. title:fullUrl('action=edit') .. ' ')
        page_title = mw.title.new( mw.ustring.sub(pageName, 2) );
:tag(args.mini and 'abbr' or 'span')
    else
:attr('title', 'עריכת תבנית זו')
        page_title = mw.title.new( pageName, 'Template' );
:cssText(args.fontstyle)
    end   
:wikitext(args.mini and 'ע' or 'עריכה')
   
:done()
    if page_title then
:wikitext(']');
        talk_page_title = page_title.talkPageTitle;
end
    else
        talk_page_title = nil;
    end
   
    return page_title, talk_page_title;  
end


function _navbar( args )
if args.brackets then
    if not args[1] then
div
        return error('No name provided')
:tag('span')
    end
:css('margin-left', '-0.125em')
:cssText(args.fontstyle)
    local good, title, talk_title;
:wikitext(']')
    good, title, talk_title = pcall( getTitle, args[1] );
:newline();
    if not good then
end
        return error(title);
    end  


    if not title then
if args.collapsible then
        return error('Page does not exist')
div
    end
:done()
:tag('span')
    local mainpage = title.fullText;
:css('font-size', '110%')
    local talkpage = talk_title and talk_title.fullText or ''
:cssText(args.fontstyle)
    local editurl = title:fullUrl( 'action=edit' );
:wikitext(args[1])
end
    local viewLink, talkLink, editLink = 'view', 'talk', 'edit'
local templateStyle = mw.getCurrentFrame():extensionTag( 'templatestyles', '', { src = 'יחידה:Navbar/styles.css' } );
    if args.mini then
return tostring(div:done()) .. templateStyle
        viewLink, talkLink, editLink = 'v', 't', 'e'
    end
    local div = HtmlBuilder.create( 'div' )
    div
        .addClass( 'noprint' )
        .addClass( 'plainlinks' )
        .addClass( 'hlist' )
        .addClass( 'navbar')
        .cssText( args.style )
    if args.mini then div.addClass('mini') end
    if not (args.mini or args.plain) then
        div
            .tag( 'span' )
                .css( 'word-spacing', 0 )
                .cssText( args.fontstyle )
                .wikitext( args.text or 'This box:' )
                .wikitext( ' ' )
    end
    if args.brackets then
        div
            .tag('span')
                .css('margin-right', '-0.125em')
                .cssText( args.fontstyle )
                .wikitext( '[' )
                .newline();
    end
    local ul = div.tag('ul');
    ul
        .tag( 'li' )
            .addClass( 'nv-view' )
            .wikitext( '[[' .. mainpage .. '|' )
            .tag( 'span ' )
                .attr( 'title', 'View this template' )
                .cssText( args.fontstyle or '' )
                .wikitext( viewLink )
                .done()
            .wikitext( ']]' )
            .done()
        .tag( 'li' )
            .addClass( 'nv-talk' )
            .wikitext( '[[' .. talkpage .. '|' )
            .tag( 'span ' )
                .attr( 'title', 'Discuss this template' )
                .cssText( args.fontstyle or '' )
                .wikitext( talkLink )
                .done()
            .wikitext( ']]' );
    if not args.noedit then
        ul
            .tag( 'li' )
                .addClass( 'nv-edit' )
                .wikitext( '[' .. editurl .. ' ' )
                .tag( 'span ' )
                    .attr( 'title', 'Edit this template' )
                    .cssText( args.fontstyle or '' )
                    .wikitext( editLink )
                    .done()
                .wikitext( ']' );
    end
    if args.brackets then
        div
            .tag('span')
                .css('margin-left', '-0.125em')
                .cssText( args.fontstyle or '' )
                .wikitext( ']' )
                .newline();
    end
    return tostring(div)
end
end


function p.navbar(frame)
function p.navbar(frame)
    local origArgs
if not getArgs then
    -- If called via #invoke, use the args passed into the invoking template.
getArgs = require('Module:Arguments').getArgs
    -- Otherwise, for testing purposes, assume args are being passed directly in.
end
    if frame == mw.getCurrentFrame() then
return p._navbar(getArgs(frame))
        origArgs = frame:getParent().args
    else
        origArgs = frame
    end
    -- ParserFunctions considers the empty string to be false, so to preserve the previous
    -- behavior of {{navbar}}, change any empty arguments to nil, so Lua will consider
    -- them false too.
    args = {}
    for k, v in pairs(origArgs) do
        if v ~= '' then
            args[k] = v
        end
    end
    return _navbar(args)
end
end
 
return p
return p

גרסה אחרונה מ־16:38, 11 ביולי 2021

ניתן ליצור תיעוד על היחידה הזאת בדף יחידה:Navbar/תיעוד

local p = {}

local getArgs

function p._navbar(args)
	local titleArg = 1

	if args.collapsible then
		titleArg = 2
		if not args.plain then
			args.mini = 1
		end
		if args.fontcolor then
			args.fontstyle = 'color:' .. args.fontcolor .. ';'
		end
		args.style = 'float:left; text-align:left; width:6em;'
	end

	local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
	local title = mw.title.new(mw.text.trim(titleText), 'Template');

	if not title then
		error('Invalid title ' .. titleText)
	end

	local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '';

	local div = mw.html.create():tag('div')
	div
		:addClass('plainlinks')
		:addClass('hlist')
		:addClass('navbar')
		:cssText(args.style)

	if args.mini then div:addClass('mini') end

	if not (args.mini or args.plain) then
		div
			:tag('span')
				:css('word-spacing', 0)
				:cssText(args.fontstyle)
				:wikitext(args.text or 'This box:')
				:wikitext(' ')
	end

	if args.brackets then
		div
			:tag('span')
				:css('margin-right', '-0.125em')
				:cssText(args.fontstyle)
				:wikitext('[')
				:newline();
	end

	local ul = div:tag('ul');

	ul
		:tag('li')
			:addClass('nv-view')
			:wikitext('[[' .. title.fullText .. '|')
			:tag(args.mini and 'abbr' or 'span')
				:attr('title', 'צפייה בתבנית זו')
				:cssText(args.fontstyle)
				:wikitext(args.mini and 'צ' or 'צפייה')
				:done()
			:wikitext(']]')
			:done()
		:tag('li')
			:addClass('nv-talk')
			:wikitext('[[' .. talkpage .. '|')
			:tag(args.mini and 'abbr' or 'span')
				:attr('title', 'שיחה על תבנית זו')
				:cssText(args.fontstyle)
				:wikitext(args.mini and 'ש' or 'שיחה')
				:done()
			:wikitext(']]');

	if not args.noedit then
		ul
			:tag('li')
				:addClass('nv-edit')
				:wikitext('[' .. title:fullUrl('action=edit') .. ' ')
				:tag(args.mini and 'abbr' or 'span')
					:attr('title', 'עריכת תבנית זו')
					:cssText(args.fontstyle)
					:wikitext(args.mini and 'ע' or 'עריכה')
					:done()
				:wikitext(']');
	end

	if args.brackets then
		div
			:tag('span')
				:css('margin-left', '-0.125em')
				:cssText(args.fontstyle)
				:wikitext(']')
				:newline();
	end

	if args.collapsible then
		div
			:done()
		:tag('span')
			:css('font-size', '110%')
			:cssText(args.fontstyle)
			:wikitext(args[1])
	end
	local templateStyle = mw.getCurrentFrame():extensionTag( 'templatestyles', '', { src = 'יחידה:Navbar/styles.css' } );
	return tostring(div:done()) .. templateStyle
end

function p.navbar(frame)
	if not getArgs then
		getArgs = require('Module:Arguments').getArgs
	end
	return p._navbar(getArgs(frame))
end

return p