پرش به محتوا

پودمان:Football box

پودمان به طور دائم حفاظت‌شده است
از ویکی‌پدیا، دانشنامهٔ آزاد
توضیحات پودمان[نمایش] [ویرایش] [تاریخچه] [پاکسازی]

این پودمان در الگو:جعبه فوتبال استفاده می‌شود.

-- Implements [[الگو: جعبه فوتبال]]
local p = {}
local lang = nil
local delink = require('Module:Delink')._delink
local eventschema = "http://schema.org/SportsEvent"
local teamschema = "http://schema.org/SportsTeam"
local placeschema = "http://schema.org/Place"
local penalties = '[[ضربات پنالتی (فوتبال)|ضربات پنالتی]]'
local aet = '[[وقت اضافه|و.ا.]]'
local asdet = '[[مردن ناگهانی (ورزش)#فوتبال|م.ن.]]'
local agget = '[[وقت اضافه|و.ا.]]/[[گل طلایی|گ.ط.]]'
local asget = '[[وقت اضافه|و.ا.]]/[[گل طلایی#گل نقره‌ای|گ.ن.]]'
local attendance = 'تماشاگران:'
local referee = 'داور:'
local templatestyles = 'Module:Football box/styles.css'

local tracking, preview

local function checkarg(k,v)
	if not k or type(k) ~= 'string' then return end
	
	if  k == 'assistantreferees2' then
		table.insert(tracking, '[[رده:صفحه‌هایی که از جعبه فوتبال با پارامتر کمک‌داور استفاده می‌کنند|۲]]')
	elseif k == 'aggregatescore' or k == 'assistantreferees' or 
			k == 'fourthofficial' or k == 'game' or k == 'بهترین بازیکن' or k == 'motm' or 
			k == 'nobars' or k == 'note' or k == 'result' then
		-- valid and tracked
		table.insert(tracking, '[[رده:صفحه‌هایی که از جعبه فوتبال با پارامتر ' .. k .. ' استفاده می‌کنند]]')
		elseif k == 'اندازه' or k == 'size' or k == 'bg' or k == 'شناسه' or k == 'id' or k == 'تیم۱' or k == 'team1' or
		k == 'رویداد' or k == 'event' or k == 'دور' or k == 'round' or k == 'اندازه' or
		k == 'تیم۲' or k == 'team2' or k == 'نتیجه۱' or k == 'score1' or k == 'نتیجه۲' or k == 'score2' or k == 'نتیجه' or k == 'score' or k == 'یادداشت نتیجه' or k == 'scorenote' or
		k == 'وقت اضافه' or k == 'aet' or k == 'مردن ناگهانی' or k == 'asdet' or k == 'گل طلایی' or k == 'agget' or k == 'گل نقره‌ای' or k == 'asget' or k == 'گل۱' or k == 'goals1' or k == 'گزارش' or k == 'report' or k == 'گل۲' or k == 'gools2' or 
		k == 'نتیجه پنالتی' or k == 'penaltyscore' or k == 'پنالتی۱' or k == 'penaltise1' or k == 'پنالتی۲' or k == 'penaltise2' or 
		k == 'ورزشگاه' or k == 'stadium' or k == 'مکان' or k == 'location' or k == 'تماشاگران' or k == 'attendance' or 
		k == 'داور' or k == 'referee' or k == 'stack' or k == 'تاریخ' or k == 'date' or k == 'زمان' or k == 'time' then
		-- valid and not tracked
	else
		-- invalid
		local vlen = mw.ustring.len(k)
		k = mw.ustring.sub(k, 1, (vlen < 25) and vlen or 25) 
		k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
		table.insert(tracking, '[[رده:صفحه‌هایی که از جعبه فوتبال با پارامترهای نامعلوم استفاده می‌کنند|' .. k .. ']]')
		table.insert(preview, '«' .. k .. '»')
	end
end

local function timestamp(d, t)
	if not d then return nil end
	
	lang = lang or mw.language.getContentLanguage() -- lazy initialize
	local success, timestamp = pcall(lang.formatDate, lang, 'c', delink({d .. ' ' .. (t or '')}))
	if success then
		return timestamp
	else
		return nil
	end
end

local function fmtlist(s)
	s = mw.ustring.gsub(s or '', '%[%[ *([%?-]) *%]%]', '%1')
	s = mw.ustring.gsub(s, '%[%[ *[%?-] *| *(.-) *%]%]', '%1')
	if mw.ustring.sub(s, 1, 1) == '*' then
		return tostring(mw.html.create('div'):addClass('plainlist'):newline():wikitext(s))
	end
	return s
end

local function makelink(s,t)
	if s:match('^http') then
		return '[' .. s .. ' ' .. t .. ']'
	end
	return s
end

local function trim(s)
	return s:match('^[\'"%s]*(.-)[\'"%s]*$')
end

local function getid(s)
	s = trim(s or '')
	if s and s ~= '' then
		return s
	end
	return nil
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame)
	
        args['نتیجه۱'] = args['نتیجه۱'] or args['score1']
        args['نتیجه۲'] = args['نتیجه۲'] or args['score2']
        args['نتیجه'] = args['نتیجه'] or args['score']
        args['وقت اضافه'] = args['وقت اضافه'] or args['aet']
        args['رویداد'] = args['رویداد'] or args['event']
        args['تاریخ'] = args['تاریخ'] or args['date']
        args['زمان'] = args['زمان'] or args['time']
        args['دور'] = args['دور'] or args['round']
        args['تیم۱'] = args['تیم۱'] or args['team1']
        args['تیم۲'] = args['تیم۲'] or args['team2']
        args['گل۱'] = args['گل۱'] or args['goals1']
        args['گل۲'] = args['گل۲'] or args['goals2']
        args['پنالتی۱'] = args['پنالتی۱'] or args['penalties1']
        args['پنالتی۲'] = args['پنالتی۲'] or args['penalties2']
        args['نتیجه پنالتی'] = args['نتیجه پنالتی'] or args['penaltyscore']
        args['گزارش'] = args['گزارش'] or args['report']
        args['ورزشگاه'] = args['ورزشگاه'] or args['stadium']
        args['مکان'] = args['مکان'] or args['location']
        args['تماشاگران'] = args['تماشاگران'] or args['attendance']
        args['داور'] = args['داور'] or args['referee']
        args['مردن ناگهانی'] = args['مردن ناگهانی'] or args['asdet']
        args['گل طلایی'] = args['گل طلایی'] or args['agget']
        args['گل نقره‌ای'] = args['گل نقره‌ای'] or args['asget'] 
        args['یادداشت نتیجه'] = args['یادداشت نتیجه'] or args['scorenote']
        args['اندازه'] = args['اندازه'] or args['size']
        
	local id = getid(args['شناسه'] or args['id'])
	local d = timestamp( args['تاریخ'], args['زمان'])
	local block
	
	tracking, preview = {}, {}
    for k, v in pairs(args) do
    	if v ~= '' then
    		checkarg(k,v)
    	end
	end

	local score = 'v'
	if args['نتیجه۱'] or args['نتیجه۲'] then
		score = (args['نتیجه۱'] or '0') .. '&ndash;' .. (args['نتیجه۲'] or '0')
	elseif args['نتیجه'] and args['نتیجه'] ~= '' then
		score = args['نتیجه']
	end
	if args['وقت اضافه'] then
		score = score .. ' (' .. aet .. ')'
	elseif args['مردن ناگهانی'] then
		score = score .. ' (' .. asdet .. ')'
	elseif args['گل طلایی'] then
		score = score .. ' (' .. agget .. ')'
	elseif args['گل نقره‌ای'] then
		score = score .. ' (' .. asget .. ')'
	end
	if args['یادداشت نتیجه'] then
		score = score .. '<br>' .. args['یادداشت نتیجه']
	end
	
	-- Start box
	local root = 
		mw.html.create('div')
			:attr('itemscope', '')
			:attr('itemtype', eventschema)
			:addClass('footballbox')
			:css('width', args['اندازه'])
			:css('background-color', args['bg'])
			:attr('id', id)
	root:newline()
	
	if args['رویداد'] then
		root:tag('div')
			:addClass('ftitle')
			:wikitext(args['رویداد'])
	end
	
	-- Start left block
	block = root:tag('div')
		:addClass('fleft')
	
	local timetag = block:tag('time')
		:attr('itemprop', d and 'startDate' or nil)
		:attr('datetime', d)
		
	timetag:tag('div')
		:addClass('fdate')
		:wikitext(args['تاریخ'])
	
	if args['زمان'] then
		timetag:tag('div')
			:addClass('ftime')
			:wikitext(args['زمان'])
	end
	
	if args['دور'] then
		block:tag('div')
			:addClass('frnd')
			:wikitext(args['دور'])
	end
	-- End block
	
	-- Start table
	local rtable = root:tag('table')
		:addClass('fevent')
	local row = rtable:tag('tr')
		:attr('itemprop', 'name')
	row:newline()
	row:tag('th')
		:addClass('fhome')
		:attr('itemprop', 'homeTeam')
		:attr('itemscope', '')
		:attr('itemtype', teamschema)
		:tag('span')
			:attr('itemprop', 'name')
			:wikitext(args['تیم۱'])
	row:tag('th')
		:addClass('fscore')
		:wikitext(score)
	row:tag('th')
		:addClass('faway')
		:attr('itemprop', 'awayTeam')
		:attr('itemscope', '')
		:attr('itemtype', teamschema)
		:tag('span')
			:attr('itemprop', 'name')
			:wikitext(args['تیم۲'])

	row = rtable:tag('tr')
		:addClass('fgoals')
		:newline()
	row:tag('td')
		:addClass('fhgoal')
		:wikitext(fmtlist(args['گل۱']))
	row:newline()
	row:tag('td')
		:wikitext(makelink(args['گزارش'] or '', 'گزارش'))
	row:newline()
	row:tag('td')
		:addClass('fagoal')
		:wikitext(fmtlist(args['گل۲']))
	row:newline()	
	
	if args['نتیجه پنالتی'] then
		rtable
			:tag('tr')
				:tag('th')
					:attr('colspan', 3)
					:wikitext(penalties)
		row = rtable:tag('tr')
			:addClass('fgoals')
		row:newline()
		row:tag('td')
			:addClass('fhgoal')
			:wikitext(fmtlist(args['پنالتی۱']))
		row:newline()
		row:tag('th')
			:wikitext(args['نتیجه پنالتی'])
		row:newline()
		row:tag('td')
			:addClass('fagoal')
			:wikitext(fmtlist(args['پنالتی۲']))
		row:newline()
	end
	-- End table
	
	-- Start right block
	block = root:tag('div')
		:addClass('fright')
	
	if args['ورزشگاه'] then
		local sdiv = block:tag('div')
			:attr('itemprop', 'location')
			:attr('itemscope', '')
			:attr('itemtype', placeschema)
		if args['مکان'] then
			sdiv:tag('span')
				:attr('itemprop', 'name')
				:wikitext(args['ورزشگاه'])
			sdiv:wikitext('، ')
			sdiv:tag('span')
				:attr('itemprop', 'address')
				:wikitext(args['مکان'])
		else
			sdiv:tag('span')
				:attr('itemprop', 'name address')
				:wikitext(args['ورزشگاه'])
		end
	end
	
	if args['تماشاگران'] then
		block:tag('div'):wikitext(attendance ..' ' .. args['تماشاگران'])
	end
	if args['داور'] then
		block:tag('div'):wikitext(referee .. ' ' .. args['داور'])
	end

	local trackstr = (#tracking > 0) and table.concat(tracking, '') or ''
	if #preview > 0 and frame:preprocess( "{{REVISIONID}}" ) == "" then
		trackstr = tostring(mw.html.create('div')
			:addClass('hatnote')
			:css('color','red')
			:tag('strong'):wikitext('هشدار:'):done()
			:wikitext('پارامترهای نامعلوم: ' .. table.concat(preview, '؛ ')))
	end
	
	return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(root) .. trackstr
end

return p
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy