پودمان:High-use: تفاوت میان نسخه‌ها

از ویکی حقوق
پرش به ناوبری پرش به جستجو
جز (۱ نسخه واردشده)
جز (۱ نسخه واردشده)
 
(یک نسخهٔ میانی ویرایش شده توسط یک کاربر دیگر نشان داده نشد)
خط ۱: خط ۱:
local p = {}
local p = {}


-- _fetch looks at the "demo" argument.
local _fetch = require('Module:Transclusion_count').fetch
local _fetch = require('Module:Transclusion_count').fetch
local yesno = require('Module:Yesno')
local numConv = require('Module:Numeral converter').convert


function p.num(frame, count)
function p.num(frame, count)
if count == nil then count = _fetch(frame) end
if count == nil then
if yesno(frame.args['fetch'] or frame.args['واکشی']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
-- Build output string
-- Build output string
local return_value = ""
local return_value = ""
if count == nil then
if count == nil then
if frame.args[1] == "risk" then
if (frame.args[1] == "risk" or frame.args[1] == "ریسک") then
return_value = "تعداد بسیار زیادی"
return_value = "تعداد بسیار زیادی صفحه"
else
else
return_value = "تعداد زیادی"
return_value = "تعداد زیادی صفحه"
end
end
else
else
خط ۲۵: خط ۳۴:
-- Round and insert "approximately" or "+" when appropriate
-- Round and insert "approximately" or "+" when appropriate
if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
if (yesno(frame.args[2])) or (mw.ustring.sub(frame.args[1], -1) == "+") then
-- Round down
-- Round down
return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
return_value = mw.ustring.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
else
else
-- Round to nearest
-- Round to nearest
return_value = string.format("نزدیک %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
return_value = mw.ustring.format("نزدیک به %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
end
end
 
-- Insert percent of pages
-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes
if frame.args["all-pages"] and frame.args["all-pages"] ~= "" then
if count and count > 250000 and not yesno (frame:getParent().args['no-percent'] or frame:getParent().args['بدون درصد']) then
local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
return_value = string.format("%s pages, or roughly %s%% of all", return_value, percent)
if percent >= 1 then
return_value = mw.ustring.format("%s صفحه، یا نزدیک به %s٪ از کل صفحه‌ها", return_value, numConv('fa', percent))
end
end
end
end
end
خط ۴۵: خط ۵۶:
function p.risk(frame)
function p.risk(frame)
local return_value = ""
local return_value = ""
if frame.args[1] == "risk" then
if (frame.args[1] == "risk" or frame.args[1] == "ریسک") then
return_value = "risk"
return_value = "risk"
else
else
خط ۵۵: خط ۶۶:


function p.text(frame, count)
function p.text(frame, count)
local bot_text = "\n\n----\nآمار کاربردها مکمن است توسط ربات به‌روز شود."
-- Only show the information about how this template gets updated if someone
if frame.args["nobot"] == "true" then
-- is actually editing the page and maybe trying to update the count.
bot_text = ""
local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''پیام پیش‌نمایش''': شمار تراگنجانش‌ها ممکن است توسط ربات به‌روز شود ([[الگو:پراستفاده/توضیحات#جزئیات فنی|مستندات الگو را ببینید]])." or ''
if count == nil then
if yesno(frame.args['fetch'] or frame.args['واکشی']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
end
if count == nil then count = _fetch(frame) end
local return_value = {}
local title = mw.title.getCurrentTitle()
local title = mw.title.getCurrentTitle()
if title.subpageText == "توضیحات" or title.subpageText == "موقت" then
if title.subpageText == "توضیحات" or title.subpageText == "تمرین" then
title = title.basePageTitle
title = title.basePageTitle
end
end
local templatecount = string.format("https://templatecount.toolforge.org/index.php?lang=fa&namespace=%s&name=%s",mw.title.getCurrentTitle().namespace,mw.uri.encode(title.text))
local systemMessages = frame.args['system'] or frame.args['سامانه']
if (frame.args['system'] or frame.args['سامانه']) == '' then
systemMessages = nil
end
-- This retrieves the project URL automatically to simplify localiation.
local templateCount = ('در [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s صفحه]'):format(
mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'),
mw.uri.encode(title.fullText), p.num(frame, count))
local used_on_text = "'''این " .. (mw.title.getCurrentTitle().namespace == 828 and "پودمان لوآ" or "الگو") .. ' ';
if systemMessages then
used_on_text = used_on_text .. systemMessages ..
((count and count > 2000) and ("،''' و " .. templateCount) or ("'''"))
else
used_on_text = used_on_text .. templateCount .. " به‌کار رفته است'''"
end
local used_on_text = string.format("'''این %s در [%s %s صفحه] به کار رفته‌است'''",
(mw.title.getCurrentTitle().namespace == 828 and "پودمان" or "الگو"),
templatecount,
p.num(frame, count)
)
local sandbox_text =  string.format("زیرصفحهٔ [[%s/موقت|/موقت]] یا [[%s/آزمایش|/آزمایش]] %s بیازمایید %s",
local sandbox_text =  ("زیرصفحه‌های [[%s/تمرین|/تمرین]] یا [[%s/آزمایشی|/آزمایشی]] %s، یا در [[%s]] خودتان"):format(
title.fullText, title.fullText,
title.fullText, title.fullText,
(mw.title.getCurrentTitle().namespace == 828 and "پودمان" or "الگو"),
(mw.title.getCurrentTitle().namespace == 828 and "پودمان" or "الگو"),
(mw.title.getCurrentTitle().namespace == 828 and "." or "، یا در یک زیرصفحهٔ کاربری بیازمایید.")
mw.title.getCurrentTitle().namespace == 828 and "پودمان:Sandbox|پودمان تمرینی" or "ویکی‌پدیا:صفحه‌های کاربری#زیرصفحه‌های کاربری چه؟|زیرصفحهٔ کاربری"
)
)
if (frame.args[1] == "risk" or (count and count >= 100000) ) then
local infoArg = frame.args["info"] ~= "" and frame.args["info"]
local info = ""
if (systemMessages or (frame.args[1] == "risk" or frame.args[1] == "ریسک") or (count and count >= 100000) ) then
if frame.args["info"] and frame.args["info"] ~= "" then
local info = systemMessages and '.<br/>تغییر دادن آن می‌تواند به تغییر بی‌درنگ در رابط کاربری ویکی‌پدیا منجر شود.' or '.'
info = "<br />" .. frame.args["info"]
if infoArg then
info = info .. "<br />" .. infoArg
end
end
sandbox_text = string.format(".%s<br /> برای جلوگیری از اخلال ویکی و فشار به سرورها، همهد تغییرات باید اول در %s آزمایش شوند. لطفاً تمام تغییرات را در یک ویرایش به الگوی اصلی بیاورید.&#x20;",
sandbox_text = info .. '<br /> به‌منظور جلوگیری از ایجاد اخلال' ..
info, sandbox_text
(count and count >= 100000 and ' و وارد شدن فشار به سرورها' or '') ..
)
'، هرگونه تغییر باید ابتدا در ' .. sandbox_text .. ' آزمایش شود. ' ..
'تغییرات آزمایش‌شده را می‌توان در یک ویرایش به این صفحه افزود. '
else
else
sandbox_text = string.format(" و تغییر آن می‌تواند تأثیر گسترده‌ای داشته باشد. لطفاً تغییرات را در %s ",
sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' ت') or ' و ت') ..
sandbox_text
'غییر دادن آن می‌تواند تأثیرات گسترده‌ای داشته‌باشد. لطفاً تغییرات را در ' .. sandbox_text .. ' بیازمایید. '
)
end
end
local discussion_text = "لطفاً تغییرات را اول در "
local discussion_text = systemMessages and 'لطفاً ابتدا در خصوص تغییرات مورد نظر ' or 'توصیه می‌شود که ابتدا در خصوص تغییرات مورد نظر '
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
if frame.args["2"] and frame.args["2"] ~= "" and not yesno(frame.args["2"]) then
discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"])
discussion_text = mw.ustring.format("%sدر [[%s]]", discussion_text, frame.args["2"]) .. ' گفتگو کرده'
else
else
discussion_text = string.format("%s [[%s|صفحهٔ بحث]]", discussion_text, title.talkPageTitle.fullText )
discussion_text = mw.ustring.format("%sدر [[%s|صفحهٔ بحث]]", discussion_text, title.talkPageTitle.fullText ) .. ' گفتگو کرده'
end
end
return table.concat({used_on_text, sandbox_text, discussion_text, " طرح کنید و بعد به کار ببندید.", bot_text})
return used_on_text .. sandbox_text .. discussion_text .. " و سپس آن‌ها را پیاده‌سازی کنید." .. bot_text
end
end


function p.main(frame)
function p.main(frame)
local count = _fetch(frame)
local count = nil
local return_value = ""
if yesno(frame.args['fetch'] or frame.args['واکشی']) == false then
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
local image = "[[پرونده:Ambox warning yellow.svg|40px|alt=هشدار|link=]]"
local type_param = "style"
local type_param = "style"
if (frame.args[1] == "risk" or (count and count >= 100000) ) then
local epilogue = ''
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
if (frame.args['system'] or frame.args['سامانه']) and (frame.args['system'] or frame.args['سامانه']) ~= '' then
image = "[[پرونده:Ambox important.svg|40px|alt=هشدار|link=]]"
type_param = "content"
local nocat = frame:getParent().args['nocat'] or frame:getParent().args['بی‌رده'] or frame.args['nocat'] or frame.args['بی‌رده']
local categorise = (nocat == '' or not yesno(nocat))
if categorise then
epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[رده:صفحه‌های مورد استفاده در پیام‌های سامانه نیازمند محافظت]]}}}}')
end
elseif ((frame.args[1] == "risk" or frame.args[1] == "ریسک") or (count and count >= 100000)) then
image = "[[پرونده:Ambox warning orange.svg|40px|alt=هشدار|link=]]"
type_param = "content"
type_param = "content"
end
end
if frame.args["form"] == "editnotice" then
if frame.args["form"] == "editnotice" then
return_value = frame:expandTemplate{
return frame:expandTemplate{
title = 'editnotice',
title = 'editnotice',
args = {
args = {
["image"] = image,
["image"] = image,
["text"] = p.text(frame, count),
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
["expiry"] = (frame.args["expiry"] or frame.args["منقضی"] or "")
}
}
}
} .. epilogue
else
else
return_value = frame:expandTemplate{
return require('Module:Message box').main('ombox', {
title = 'ombox',
type = type_param,
args = {
image = image,
["type"] = type_param,
text = p.text(frame, count),
["image"] = image,
expiry = (frame.args["expiry"] or frame.args["منقضی"] or "")
["text"] = p.text(frame, count),
}) .. epilogue
["expiry"] = (frame.args["expiry"] or "")
}
}
end
end
return return_value
end
end


return p
return p

نسخهٔ کنونی تا ‏۲۵ فوریهٔ ۲۰۲۳، ساعت ۰۰:۳۹

توضیحات این پودمان می‌تواند در پودمان:High-use/توضیحات قرار گیرد.

local p = {}

-- _fetch looks at the "demo" argument.
local _fetch = require('Module:Transclusion_count').fetch
local yesno = require('Module:Yesno')
local numConv = require('Module:Numeral converter').convert

function p.num(frame, count)
	if count == nil then
		if yesno(frame.args['fetch'] or frame.args['واکشی']) == false then
			if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
		else
			count = _fetch(frame)
		end
	end
	
	-- Build output string
	local return_value = ""
	if count == nil then
		if (frame.args[1] == "risk" or frame.args[1] == "ریسک") then
			return_value = "تعداد بسیار زیادی صفحه"
		else
			return_value = "تعداد زیادی صفحه"
		end
	else
		-- Use 2 significant figures for smaller numbers and 3 for larger ones
		local sigfig = 2
		if count >= 100000 then
			sigfig = 3
		end
		
		-- Prepare to round to appropriate number of sigfigs
		local f = math.floor(math.log10(count)) - sigfig + 1
		
		-- Round and insert "approximately" or "+" when appropriate
		if (yesno(frame.args[2])) or (mw.ustring.sub(frame.args[1], -1) == "+") then
			-- Round down
			return_value = mw.ustring.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
		else
			-- Round to nearest
			return_value = mw.ustring.format("نزدیک به&#x20;%s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
		end

		-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes
		if count and count > 250000 and not yesno (frame:getParent().args['no-percent'] or frame:getParent().args['بدون درصد']) then
			local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
			if percent >= 1 then
				return_value = mw.ustring.format("%s&#x20;صفحه، یا نزدیک به %s٪ از کل صفحه‌ها", return_value, numConv('fa', percent))
			end
		end	
	end
	
	return return_value
end
-- Actions if there is a large (greater than or equal to 100,000) transclusion count
function p.risk(frame)
	local return_value = ""
	if (frame.args[1] == "risk" or frame.args[1] == "ریسک") then
		return_value = "risk"
	else
		local count = _fetch(frame)
		if count and count >= 100000 then return_value = "risk" end
	end
	return return_value
end

function p.text(frame, count)
	-- Only show the information about how this template gets updated if someone
	-- is actually editing the page and maybe trying to update the count.
	local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''پیام پیش‌نمایش''': شمار تراگنجانش‌ها ممکن است توسط ربات به‌روز شود ([[الگو:پراستفاده/توضیحات#جزئیات فنی|مستندات الگو را ببینید]])." or ''
	
	if count == nil then
		if yesno(frame.args['fetch'] or frame.args['واکشی']) == false then
			if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
		else
			count = _fetch(frame)
		end
	end
	local title = mw.title.getCurrentTitle()
	if title.subpageText == "توضیحات" or title.subpageText == "تمرین" then
		title = title.basePageTitle
	end
	
	local systemMessages = frame.args['system'] or frame.args['سامانه']
	if (frame.args['system'] or frame.args['سامانه']) == '' then
		systemMessages = nil
	end
	
	-- This retrieves the project URL automatically to simplify localiation.
	local templateCount = ('در [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s صفحه]'):format(
		mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'),
		mw.uri.encode(title.fullText), p.num(frame, count))
	local used_on_text = "'''این " .. (mw.title.getCurrentTitle().namespace == 828 and "پودمان لوآ" or "الگو") .. ' ';
	if systemMessages then
		used_on_text = used_on_text .. systemMessages ..
			((count and count > 2000) and ("،''' و " .. templateCount) or ("'''"))
	else
		used_on_text = used_on_text .. templateCount .. " به‌کار رفته است'''"
	end
	
	
	local sandbox_text =  ("زیرصفحه‌های [[%s/تمرین|/تمرین]] یا [[%s/آزمایشی|/آزمایشی]] %s، یا در [[%s]] خودتان"):format(
		title.fullText, title.fullText,
		(mw.title.getCurrentTitle().namespace == 828 and "پودمان" or "الگو"),
		mw.title.getCurrentTitle().namespace == 828 and "پودمان:Sandbox|پودمان تمرینی" or "ویکی‌پدیا:صفحه‌های کاربری#زیرصفحه‌های کاربری چه؟|زیرصفحهٔ کاربری"
	)
	
	local infoArg = frame.args["info"] ~= "" and frame.args["info"]
	if (systemMessages or (frame.args[1] == "risk" or frame.args[1] == "ریسک") or (count and count >= 100000) ) then
		local info = systemMessages and '.<br/>تغییر دادن آن می‌تواند به تغییر بی‌درنگ در رابط کاربری ویکی‌پدیا منجر شود.' or '.'
		if infoArg then
			info = info .. "<br />" .. infoArg
		end
		sandbox_text = info .. '<br /> به‌منظور جلوگیری از ایجاد اخلال' ..
			(count and count >= 100000 and ' و وارد شدن فشار به سرورها' or '') ..
			'، هرگونه تغییر باید ابتدا در ' .. sandbox_text .. ' آزمایش شود. ' ..
			'تغییرات آزمایش‌شده را می‌توان در یک ویرایش به این صفحه افزود. '
	else
		sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' ت') or ' و ت') ..
			'غییر دادن آن می‌تواند تأثیرات گسترده‌ای داشته‌باشد. لطفاً تغییرات را در  ' .. sandbox_text .. ' بیازمایید. '
	end

	
	local discussion_text = systemMessages and 'لطفاً ابتدا در خصوص تغییرات مورد نظر ' or 'توصیه می‌شود که ابتدا در خصوص تغییرات مورد نظر '
	if frame.args["2"] and frame.args["2"] ~= "" and not yesno(frame.args["2"]) then
		discussion_text = mw.ustring.format("%sدر [[%s]]", discussion_text, frame.args["2"]) .. ' گفتگو کرده'
	else
		discussion_text = mw.ustring.format("%sدر [[%s|صفحهٔ بحث]]", discussion_text, title.talkPageTitle.fullText ) .. ' گفتگو کرده'
	end
	
	return used_on_text .. sandbox_text .. discussion_text .. " و سپس آن‌ها را پیاده‌سازی کنید." .. bot_text
end

function p.main(frame)
	local count = nil
	if yesno(frame.args['fetch'] or frame.args['واکشی']) == false then
		if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
	else
		count = _fetch(frame)
	end
	local image = "[[پرونده:Ambox warning yellow.svg|40px|alt=هشدار|link=]]"
	local type_param = "style"
	local epilogue = ''
	if (frame.args['system'] or frame.args['سامانه']) and (frame.args['system'] or frame.args['سامانه']) ~= '' then
		image = "[[پرونده:Ambox important.svg|40px|alt=هشدار|link=]]"
		type_param = "content"
		local nocat = frame:getParent().args['nocat'] or frame:getParent().args['بی‌رده'] or frame.args['nocat'] or frame.args['بی‌رده']
		local categorise = (nocat == '' or not yesno(nocat))
		if categorise then
			epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[رده:صفحه‌های مورد استفاده در پیام‌های سامانه نیازمند محافظت]]}}}}')
		end
	elseif ((frame.args[1] == "risk" or frame.args[1] == "ریسک") or (count and count >= 100000)) then
		image = "[[پرونده:Ambox warning orange.svg|40px|alt=هشدار|link=]]"
		type_param = "content"
	end
	
	if frame.args["form"] == "editnotice" then
		return frame:expandTemplate{
				title = 'editnotice',
				args = {
						["image"] = image,
						["text"] = p.text(frame, count),
						["expiry"] = (frame.args["expiry"] or frame.args["منقضی"] or "")
				}
		} .. epilogue
	else
		return require('Module:Message box').main('ombox', {
			type = type_param,
			image = image,
			text = p.text(frame, count),
			expiry = (frame.args["expiry"] or frame.args["منقضی"] or "")
		}) .. epilogue
	end
end

return p