مسابقه دانش‌دخت
اسلامیکال از تاریخ ۱۵ دی تا ۲۰ بهمن، میزبان یک همایه با موضوع زنان است. شما می‌توانید در مسابقه مقاله‌نویسی دانش‌دخت، شرکت کنید و با نگارش مقاله، از جوایز آن بهره‌مند باشید. اگر به موضوعات مربوط با زنان علاقه‌مندید، این فرصت را از دست ندهید. فهرستی از مقالات پیشنهادی جهت ایجاد یا ویرایش در اینجا وجود دارد.

پودمان:Portal bar

از اسلامیکال
نسخهٔ تاریخ ‏۱۴ ژانویهٔ ۲۰۲۳، ساعت ۱۲:۰۰ توسط Mojtabakd (بحث | مشارکت‌ها) (ایجاد پودمان)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

توضیحات این پودمان می‌تواند در پودمان:Portal bar/توضیحات قرار گیرد.

require('Module:No globals')

local portalModule = require('Module:Portal')
local getImageName = portalModule.image
local checkPortals = portalModule._checkPortals
local processPortalArgs = portalModule._processPortalArgs
local yesno = require('Module:Yesno')
local getArgs = require('Module:Arguments').getArgs
local p = {}

local function sandbox(args, s)
	return (args.sandbox or args['تمرین']) and s.."-sand" or s
end

-- Builds the portal bar used by {{نوار درگاه}}.
function p._main(portals, args)
	
	-- check for sensible args
	args = type(args) == "table" and args or {}
	
	-- Normalize arguments
	for key, default in pairs({border = true, redlinks = false, sandbox = false, tracking = true}) do
		if args[key] == nil then args[key] = default end
		args[key] = yesno(args[key], default)
	end

	local nav = mw.html.create( 'div' )
		:addClass(sandbox(args, 'portal-bar'))
		:addClass( 'noprint metadata noviewer' )
		:attr( 'role', 'navigation' )
		:attr( 'aria-label' , 'Portals' )
		:addClass(sandbox(args, (args.border or args['حاشیه']) and 'portal-bar-bordered' or 'portal-bar-unbordered'))
	
	local trackingCat = ''
	-- Allow any number of portals
	args.minPortals = 0
	args.maxPortals = -1
	-- Check to see whether there are redlinks, filter out unless args.redlink is true
	portals, trackingCat = checkPortals(portals, args)
	nav:wikitext(trackingCat)
	if #portals == 0 then
		return trackingCat
	end

	local header = nav:tag( 'span' )
	header:addClass(sandbox(args, 'portal-bar-header'))
	header:wikitext( '[[درگاه:درونمایه/درگاه‌ها|درگاه]]' )
	if #portals > 1 then
		header:wikitext( '‌ها' )
	end
	header:wikitext(':')
	local container = nav:tag( 'div' )
	container:addClass(sandbox(args, 'portal-bar-content'))
	for _, portal in ipairs( portals ) do
		container
			:tag( 'div' )
			:addClass(sandbox(args, 'portal-bar-item'))
				:tag( 'span' )
					:addClass(sandbox(args, 'portal-bar-logo'))
					:wikitext( mw.ustring.format(
						'[[پرونده:%s|21x19px|alt=]]', getImageName{ portal }
					) )
					:done()
				:tag( 'span' )
					:addClass(sandbox(args, 'portal-bar-link'))
					:wikitext( mw.ustring.format('[[درگاه:%s|%s]]', portal, portal) )
	end
	
	local styleFile = 'Module:Portal bar/'
	styleFile = styleFile .. ((args.sandbox or args['تمرین']) and 'تمرین/' or '')
	styleFile = styleFile .. 'styles.css'
	return mw.getCurrentFrame():extensionTag{
		name = 'templatestyles', args = { src = styleFile }
	} .. tostring( nav ) 
end

-- Processes external arguments and sends them to the other functions.
function p.main( frame )
	local origArgs = getArgs(frame)
	local portals, args = processPortalArgs(origArgs)
	return p._main( portals, args )
end

return p