در حال ویرایش پودمان: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
خط ۳۲: خط ۲۴:
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, or roughly %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
خط ۶۵: خط ۵۵:


function p.text(frame, count)
function p.text(frame, count)
-- Only show the information about how this template gets updated if someone
local bot_text = "\n\n----\nTransclusion count updated by [[User:Ahechtbot|Ahechtbot]]."
-- is actually editing the page and maybe trying to update the count.
if frame.args["nobot"] == true then
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 ''
bot_text = ""
end
if count == nil then count = _fetch(frame) end
local return_value = {}
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://templatecount.toolforge.org/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 templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format(
mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'),
mw.uri.encode(title.fullText), 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 used_on_text = string.format("'''This %s is used on [%s %s pages]'''",
(mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template"),
templatecount,
p.num(frame, count)
)
local sandbox_text =  ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format(
local sandbox_text =  string.format("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages%s ",
(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 "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage"
(mw.title.getCurrentTitle().namespace == 828 and "." or ", or in your own [[Wikipedia:Subpages#How to create user subpages|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 major disruption and server load, any changes should be tested in the %sThe tested changes can 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(" and changes may be widely noticed. Test 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 = "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.", bot_text})
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 در نظر گرفته‌می‌شوند (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). اگر نمی‌خواهید نوشته‌هایتان بی‌رحمانه ویرایش و توزیع شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد می‌کنید که خودتان این را نوشته‌اید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشته‌اید (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو راهنمای ویرایش‌کردن (در پنجرهٔ تازه باز می‌شود)

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