Notice: Firmware Links Under Maintenance We are currently undergoing maintenance on all firmware links. If any links are inaccessible, please email or contact Tech Support for the firmware. We appreciate your patience during the maintenance, thank you for your understanding.

Difference between revisions of "Module:National squad"

(typo)
 
m (1 revision imported)
 
(No difference)

Latest revision as of 17:51, 21 March 2019

Documentation for this module may be created at Module:National squad/doc

Script error: Lua error: Internal error: The interpreter exited with status 127.

-- This module implements [[Template:National squad]] and 
-- [[Template:National squad no numbers]] to avoid articles being added to 
-- [[:Category:Pages where template include size is exceeded]]
-- when the template is used many times.
local p = {}

function p.main(frame)
	local nonumbers = frame.args['nonumbers']
	local args = frame:getParent().args
	local country = args.country or '{{{country}}}'
	local coach_label = args.coach_type or 'Coach'
	local comp = args.comp or '{{{comp}}}'
	local name = args.name or ''
	local gender = (args.gender or '') == 'female' and ' women\'s' or ''
	local titlestyle = 'background-color:' .. (args.bg or 'transparent') .. ';'
		.. 'color:' .. (args.fg or 'inherit') .. ';' 
		.. 'border: 1px solid ' .. (args.bordercolor or '#aaa') .. ';'
	local image = frame:expandTemplate{
		title = 'flagicon', 
		args = {args.country or 'none', args.flagvar or '', size = '50px'}
	}

	local ospan = '<span style="color:' .. (args.fg or 'inherit') .. '">'
	local cspan = '</span>'	
	local title = string.format('[[%s|%s%s%s]] – [[%s|%s%s%s]]', 
		args['team link'] or (country .. gender .. ' national football team'), 
		ospan, args.title or country .. ' squad', cspan, 
		args['comp link'] or comp, ospan, comp, cspan)
	
	local haspos = false
	
	-- Tracking and preview warnings
	local knownargs = {['bg']=1, ['fg']=1, ['bordercolor']=1, ['coach']=1, ['coach_type']=1,
		['comp']=1, ['comp link']=1, ['country']=1, ['flagvar']=1, ['gender']=1, 
		['list']=1, ['name']=1, ['note']=1, ['team link']=1, ['title']=1}
	local badargs = {}
	for k, v in pairs(args) do
		if knownargs[k] then
		elseif type(k) == 'string' then
			local n = tonumber(k:match('^p(%d+)$') or k:match('pos(%d+)') or '0')
			if k:match('^p%d+$') and n >= 1 and n <= 40 then
			elseif nonumbers and (k:match('^pos%d+$') and n >= 1 and n <= 40) then
				if v and v ~= '' then haspos = true end
			elseif v and v ~= '' then
				table.insert(badargs, k)
			end
		elseif v and v ~= '' then
			table.insert(badargs, k)
		end
	end
	local preview, tracking = '', ''
	if #badargs > 0 then
		for k, v in pairs(badargs) do
			if v == '' then	v = ' '	end
			v = mw.ustring.gsub(v, '[^%w\-_ ]', '?')
			preview = preview .. '<div class="hatnote" style="color:red"><strong>Warning:</strong> '
				.. 'Page using national squad with unknown parameter "' .. v 
				.. '" (this message is shown only in preview).</div>'
			tracking = tracking .. '[[Category:Pages using national squad with unknown parameters|' .. v .. ']]'
		end
		if frame:preprocess( "{{REVISIONID}}" ) ~= "" then
			preview = ''
		end
	end
	if (args['title'] == nil and args['team link'] == nil and args.country == nil) or args.comp == nil then
		tracking = tracking .. '[[Category:Pages using national squad with unknown parameters|!]]'
	end
	-- if tracking ~= '' and mw.title.getCurrentTitle().namespace > 0 then tracking = '' end
	
	local list1 = args.list or ''
	if list1 == '' then
		for k = 1,40 do
			if args['p' .. k] and args['p' .. k] ~= '' then
				local n = nonumbers and (args['pos' .. k] or '') or tostring(k)
				if n ~= '' or haspos == true then
					list1 = list1 .. string.format(
						'*<small>%s</small>&nbsp;<span class="vcard agent"><span class="fn">%s</span></span>\n',
						n, args['p' .. k])
				else
					list1 = list1 .. string.format(
						'*<span class="vcard agent"><span class="fn">%s</span></span>\n', args['p' .. k])
				end
			end
		end
		if args['coach'] and args['coach'] ~= '' then
			list1 = list1 .. string.format(
				'*<span class="vcard agent"><small class="role nowrap">%s:</small>&nbsp;<span class="fn">%s</span></span>',
				coach_label, args['coach'])
		end
	end
	local list3 = args.note and ('<small>' .. args.note .. '</small>') or nil
	
	return require('Module:Navbox')._navbox({
		name = name ~= '' and name or nil,
		titlestyle = titlestyle, 
		listclass = 'hlist', bodyclass = 'vcard', titleclass = 'fn org',
		image = image, title = title, list1 = list1, list3 = list3
	}) .. tracking .. preview
end

return p