در حال ویرایش پودمان: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')


function p.num(frame, count)
function p.num(frame, count)
if count == nil then
if count == nil then count = _fetch(frame) end
if yesno(frame.args['fetch']) == 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
خط ۲۳: خط ۱۵:
end
end
else
else
-- Use 2 significant figures for smaller numbers and 3 for larger ones
-- Use 2 sigfigs for smaller numbers and 3 for larger ones
local sigfig = 2
local sigfig = 2
if count >= 100000 then
if count >= 100000 then
خط ۳۲: خط ۲۴:
local f = math.floor(math.log10(count)) - sigfig + 1
local f = math.floor(math.log10(count)) - sigfig + 1
-- Round and insert "approximately" or "+" when appropriate
-- Round and insert "apprxomimately" or "+" when appropriate
if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
-- Round down
-- Round down
خط ۴۰: خط ۳۲:
return_value = string.format("approximately %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
return_value = string.format("approximately %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
end
end
 
-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes
-- Insert percent of pages
if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then
if frame.args["all-pages"] and frame.args["all-pages"] ~= "" 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)
if percent >= 1 then
return_value = string.format("%s pages, which is ≈%s%% of all", return_value, percent)
return_value = string.format("%s pages, or roughly %s%% of all", return_value, percent)
end
end
end
end
end
خط ۵۲: خط ۴۲:
return return_value
return return_value
end
end
-- Actions if there is a large (greater than or equal to 100,000) transclusion count
 
function p.risk(frame)
function p.risk(frame)
local return_value = ""
local return_value = ""
خط ۶۵: خط ۵۵:


function p.text(frame, count)
function p.text(frame, count)
-- Only show the information about how this template gets updated if someone
if count == nil then count = _fetch(frame) end
-- is actually editing the page and maybe trying to update the count.
local return_value = {}
local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or ''
if count == nil then
if yesno(frame.args['fetch']) == 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()
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" or title.subpageText == "sandbox" then
if title.subpageText == "doc" or title.subpageText == "sandbox" then
خط ۸۱: خط ۶۳:
end
end
local systemMessages = frame.args['system']
local templatecount = string.format("https://tools.wmflabs.org/templatecount/index.php?lang=en&namespace=%s&name=%s",mw.title.getCurrentTitle().namespace,mw.uri.encode(title.text))
if frame.args['system'] == '' then
systemMessages = nil
end
-- This retrieves the project URL automatically to simplify localiation.
local used_on_text = string.format("'''This %s is used on [%s %s pages]'''",
local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format(
(mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template"),
mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'),
templatecount,
mw.uri.encode(title.fullText), p.num(frame, count))
p.num(frame, count)
local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used ';
)
if systemMessages then
used_on_text = used_on_text .. systemMessages ..
((count and count > 2000) and (",''' and " .. templateCount) or ("'''"))
else
used_on_text = used_on_text .. templateCount .. "'''"
end
local sandbox_text =  string.format("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages%s ",
local sandbox_text =  ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format(
(mw.title.getCurrentTitle().namespace == 828 and "module" or "template"),
(mw.title.getCurrentTitle().namespace == 828 and "module" or "template"),
title.fullText, title.fullText,
title.fullText, title.fullText,
(mw.title.getCurrentTitle().namespace == 828 and "." or ", or in your own [[Wikipedia:Subpages#How to create user subpages|user subpage]].")
mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage"
)
)
local infoArg = frame.args["info"] ~= "" and frame.args["info"]
if (frame.args[1] == "risk" or (count and count >= 100000) ) then
if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then
local info = ""
local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.'
if frame.args["info"] and frame.args["info"] ~= "" then
if infoArg then
info = "<br />" .. frame.args["info"]
info = info .. "<br />" .. infoArg
end
end
sandbox_text = info .. '<br /> To avoid major disruption' ..
sandbox_text = string.format(".%s<br /> To avoid large-scale disruption and unnecessary server load, any changes to it should first be tested in the %sThe tested changes can then be added to this page in a single edit.&#x20;",
(count and count >= 100000 and ' and server load' or '') ..
info, sandbox_text
', any changes should be tested in the ' .. sandbox_text ..
)
'The tested changes can be added to this page in a single edit. '
else
else
sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') ..
sandbox_text = string.format(", so changes to it will be widely noticed. Please test any changes in the %s",
'hanges may be widely noticed. Test changes in the ' .. sandbox_text
sandbox_text
)
end
end
local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes '
local discussion_text = "Please consider discussing changes "
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"])
discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"])
خط ۱۲۸: خط ۹۸:
end
end
return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text
return table.concat({used_on_text, sandbox_text, discussion_text, " before implementing them."})
end
end


function p.main(frame)
function p.main(frame)
local count = nil
local count = _fetch(frame)
if yesno(frame.args['fetch']) == false then
local return_value = ""
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
local type_param = "style"
local type_param = "style"
local epilogue = ''
if (frame.args[1] == "risk" or (count and count >= 100000) ) then
if frame.args['system'] and frame.args['system'] ~= '' then
image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]"
type_param = "content"
local nocat = frame:getParent().args['nocat'] or frame.args['nocat']
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=[[Category:Pages used in system messages needing protection]]}}}}')
end
elseif (frame.args[1] == "risk" or (count and count >= 100000)) then
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
type_param = "content"
type_param = "content"
خط ۱۵۵: خط ۱۱۲:
if frame.args["form"] == "editnotice" then
if frame.args["form"] == "editnotice" then
return frame:expandTemplate{
return_value = frame:expandTemplate{
title = 'editnotice',
title = 'editnotice',
args = {
args = {
خط ۱۶۲: خط ۱۱۹:
["expiry"] = (frame.args["expiry"] or "")
["expiry"] = (frame.args["expiry"] or "")
}
}
} .. epilogue
}
else
else
return require('Module:Message box').main('ombox', {
return_value = frame:expandTemplate{
type = type_param,
title = 'ombox',
image = image,
args = {
text = p.text(frame, count),
["type"] = type_param,
expiry = (frame.args["expiry"] or "")
["image"] = image,
}) .. epilogue
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
}
end
end
return return_value
end
end


return p
return p
لطفاً توجه داشته‌باشید که همهٔ مشارکت‌ها در ویکی حج منتشرشده تحت Creative Commons Attribution-NonCommercial-ShareAlike در نظر گرفته‌می‌شوند (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). اگر نمی‌خواهید نوشته‌هایتان بی‌رحمانه ویرایش و توزیع شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد می‌کنید که خودتان این را نوشته‌اید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشته‌اید (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو راهنمای ویرایش‌کردن (در پنجرهٔ تازه باز می‌شود)

الگوی به‌کاررفته در این صفحه: