Editing Module:High-use

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. Read the Privacy Policy to learn what information we collect about you and how we use it.

If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
local p = {}
local p = {}


-- _fetch looks at the "demo" argument.
local _fetch = require('Module:Transclusion_count').fetch
local _fetch = require('Module:Transclusion_count').fetch


Line 16: Line 15:
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
Line 25: Line 24:
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
Line 34: Line 33:
end
end
-- Insert percentage of pages if that is likely to be >= 1%
-- Insert percent of pages
if count and count > 250000 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
Line 45: Line 42:
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 = ""
Line 58: Line 55:


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 count = _fetch(frame) 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
Line 68: Line 63:
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
local templateCount = ('on [https://templatecount.toolforge.org/index.php?lang=en&namespace=%s&name=%s %s pages]'):format(
mw.title.getCurrentTitle().namespace, mw.uri.encode(title.text), 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]].")
)
)
if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then
if (frame.args[1] == "risk" or (count and count >= 100000) ) then
local info = systemMessages and '<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or ''
local info = ""
if frame.args["info"] and frame.args["info"] ~= "" then
if frame.args["info"] and frame.args["info"] ~= "" then
info = info .. "<br />" .. frame.args["info"]
info = "<br />" .. frame.args["info"]
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 = ' and changes may be widely noticed. Test changes in the ' .. sandbox_text
sandbox_text = string.format(" and changes may be widely noticed. Test changes in the %s",
sandbox_text
)
end
end
local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes '
local discussion_text = "Please discuss 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"])
Line 111: Line 98:
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 = _fetch(frame)
local count = _fetch(frame)
local return_value = ""
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 require('Module: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"
Line 133: Line 112:
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 = {
Line 140: Line 119:
["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
Please note that all contributions to Nonbinary Wiki are considered to be released under the Creative Commons Attribution-ShareAlike (see Nonbinary Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)

Template used on this page: