پرش به محتوا

پودمان:Reply to

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

این پودمان توسط {{پاسخ به}} استفاده می‌شود تا شخص یا اشخاصی که ثبت‌نام کردند را آگاه کنید. بیشترین کاربرد این الگو در بحث‌ها جهت پاسخ به یکدیگر است.

کاربرد ویکی‌متن

[ویرایش]

این پودمان ممکن نیست از ویکی‌متن مستقیماً استفاده شود. لطفاً از الگوی {{پاسخ به}} استفاده کنید.

کاربرد داخل الگو

[ویرایش]
{{#invoke:Reply to|replyto|<noinclude>example=نمونه نام</noinclude>|max=حداکثر تعداد نام‌ها}}
  • پارامتر |example= زمانی کاربرد دارد که از صفحهٔ الگو بازدید می‌شود. این پارامتر را باید درون <noinclude>...</noinclude> قرار دهید.
  • پارامتر |max= حداکثر تعداد نام‌هایی است که الگو می‌پذیرد. اگر تعریف نشود پیش‌فرض آن ۵۰ درنظر گرفته شده‌است (این رقم حداکثر تعدادی است که درحال حاضر Echo تا تاریخ اوت ۲۰۱۵ پشتیبانی می‌کند). اگر بیش از این تعداد نام تعریف شود، الگوی والد خطایی نمایش می‌دهد.

local p = {}

function p.replyto(frame)
	local origArgs = frame:getParent().args
	local args = {}
	local maxArg = 1
	local usernames = 0
	for k, v in pairs(origArgs) do
		if type(k) == 'number' then
			if mw.ustring.match(v,'%S') then
				if k > maxArg then maxArg = k end
				usernames = usernames + 1
				local title = mw.title.new(v)
				if not title then return '<strong class="error">خطا در [[الگو:پاسخ به]]: ورودی دارای نویسه‌های ممنوعه است.</strong>' end
				args[k] = title.rootText
			end
		elseif v == '' and k:sub(0,5) == 'label' then
			args[k] = '&#x200B;'
		else
			args[k] = v
		end
	end

	if usernames > (tonumber(frame.args.max) or 50) then
		return string.format(
			'<strong class="error">خطا در [[الگو:پاسخ به]]: بیش از %s نام تعریف شده‌است.</strong>',
			tostring(frame.args.max or 50)
		)
	else
		if usernames < 1 then
			if frame.args.example then args[1] = frame.args.example else return '<strong class="error">خطا در [[الگو:پاسخ به]]: نام کاربری داده نشده‌است.</strong>' end
		end
		local isfirst = true
		local outStr = ''
		for i = 1, maxArg do
			if args[i] then
				if isfirst then
					outStr = string.format(
						'<span class="template-ping">%s[[کاربر:%s|%s]]',
						args['prefix'] or '@',
						args[i],
						(args['label1'] or args['label']) or args[i]
					)
 					isfirst = false
				else
					if ( i < usernames and (usernames > 2) or ((usernames == 2) and (args['c'] == '')) ) then outStr = outStr..'،&rlm;' end
					if i == maxArg then outStr = outStr..' '..(args['c'] or 'و') end
					outStr = string.format(
						'%s [[کاربر:%s|%s]]',
						outStr,
						args[i],
						args['label'..tostring(i)] or args[i]
					)
				end
			end
		end
		outStr = outStr..(args['p'] or ': ')..'</span>'
		return outStr
	end
end

return p