Difference between revisions of "Module:High-use"
test>Trialpears (Fix typo per talk) |
m (1 revision imported) |
(No difference)
|
Latest revision as of 11:28, 19 September 2020
This Lua module is used on approximately 3,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages. Consider discussing changes on the talk page before implementing them.
Transclusion count updated automatically (see documentation). |
This is the {{High-use}} message box.
It is meant to be put at the top of the documentation for templates used on more than 2000 pages.
For templates where the number of pages is more than 100,000 or if the first parameter is set as "risk" a stronger wording is given.
Note! It is normal that some of the links in the message box are red.
Contents
Usage
{{High-use}}
{{High-use|1=number of transclusions|2=discussion page, or use + notation|all-pages=yes/no|info=additional text}}
The template can be used as is, and will automatically use bot-updated transclusion counts from subpages of Module:Transclusion_count/data/ when available. But it can also take some parameters:
number of transclusions
: The first parameter is either a static number of times the template has been transcluded, or the word "risk" (without quotes) to display "a very large number of" instead of the actual value. This value will be ignored if transclusion data is available for the current page (generally for templates with more than 2000 transclusions).discussion page, or use + notation
: The second parameter is overloaded. It will cause the number of transclusions to display as "#,###+" instead of "approximately #,###" when set equal to "yes" (without quotes). When used in this manner, values will be rounded down, instead of rounded to the nearest number with the appropriate number of significant figures. When set to any other non-blank value, it will replace the link to the template's talk page to the value of the parameter (for example,2=WP:VPT
will insert a link to WP:VPT),all-pages=yes
: Will also output what percentage of all pages use the template. This should only be used for very highly transcluded templates.info=extra information
: When set to non-blank, will insert extra information into the template text if the template has more than 10,000 transclusions or paramter 1 is set to "risk".demo=Template_name
: Will use the transclusion count for the template at Template:Template_name instead of detecting what template it is being used on. Capitalization must exactly match the value used in Special:PrefixIndex/Module:Transclusion_count/data/.form=
: When set to "editnotice", will display the message using {{editnotice}} instead of {{ombox}}.expiry=
: Sets the|expiry=
paramter for {{editnotice}}.
Examples
The full code for a /doc page top can look like this:
{{documentation subpage}} {{high-use}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
Standard form
{{high-use| 4,000 }} {{high-use| 4,000 | Wikipedia talk:High-risk templates }} {{high-use| | Wikipedia talk:High-risk templates }}
This Lua module is used on approximately 3,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages. Consider discussing changes on the talk page before implementing them.
Transclusion count updated automatically (see documentation). |
This Lua module is used on approximately 3,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages. Consider discussing changes at Wikipedia talk:High-risk templates before implementing them.
Transclusion count updated automatically (see documentation). |
This Lua module is used on approximately 3,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages. Consider discussing changes at Wikipedia talk:High-risk templates before implementing them.
Transclusion count updated automatically (see documentation). |
Rounding and + notation
{{high-use| 49,500 | demo=A template that does not exist }} {{high-use| 49,500+ | demo=A template that does not exist }}
This Lua module is used on approximately 50,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages. Consider discussing changes on the talk page before implementing them.
Transclusion count updated automatically (see documentation). |
This Lua module is used on 49,000+ pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages. Consider discussing changes on the talk page before implementing them.
Transclusion count updated automatically (see documentation). |
Editnotice form
{{high-use| form=editnotice }}
This Lua module is used on approximately 3,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages. Consider discussing changes on the talk page before implementing them.
Transclusion count updated automatically (see documentation). |
High risk
{{high-use| demo=Yesno }} {{high-use| risk }} {{high-use| risk | Wikipedia talk:High-risk templates | all-pages = yes | info = This is a very large number! }}
This Lua module is used on approximately 11,900,000 pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. Transclusion count updated automatically (see documentation). |
This Lua module is used on approximately 3,000 pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. Transclusion count updated automatically (see documentation). |
This Lua module is used on approximately 3,000 pages, or roughly 1% of all pages. This is a very large number! To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages. The tested changes can be added to this page in a single edit. Consider discussing changes at Wikipedia talk:High-risk templates before implementing them. Transclusion count updated automatically (see documentation). |
Technical details
The /sandbox and /testcases links are the standard names for such subpages. If those pages are created then the green /doc box for the template will detect them and link to them in its heading. For instance see the top of this documentation.
Ahechtbot compiles usage statistics for all templates with 2,000 or more transclusions using User:Ahechtbot/transclusioncount.py, and writes them to subpages of Module:Transclusion count/data (see Wikipedia:Bots/Requests for approval/Ahechtbot 6). These pages are usually updated every Sunday, but since running the query is resource intensive, it may be delayed or skipped if Wikipedia server usage is high. If a transclusion count is available in Module:Transclusion count/data, any manually input values will be ignored by this template.
Supporting templates and modules
- {{Ombox}} which uses {{#invoke:Message box|ombox}}
- {{Editnotice}} which uses {{#invoke:Message box|fmbox}}
- {{#invoke:High-use|main}}
- {{#invoke:Transclusion count|fetch}}
See also
- {{Used in system}} – For templates used in the Wikipedia user interface.
- {{Intricate template}}
- {{pp-template}} – The protection template that usually is put on high-risk templates.
- Wikipedia:Template sandbox and test cases
- Wikipedia:High-risk templates
Template counters
- toollabs:templatecount/ – Easy to use, returns current (real time) transclusion count for a template.
- Wikipedia:Database reports/Templates transcluded on the most pages – Lists the 1000 most transcluded templates. Not updated since November 2018.
- Special:MostLinkedTemplates – Currently disabled for the English Wikipedia, but still runs for other Wikipedias so might be turned on again some day.
- tools:~dispenser/cgi-bin/embeddedincount.py – Seems to lack human interface, probably meant for programs to call.
- Special:PrefixIndex/Module:Transclusion_count/data/ Template count data used by this template. Broken down by first letter of template and rounded to two or three significant figures. Updated weekly.
local p = {}
local _fetch = require('Module:Transclusion_count').fetch
function p.num(frame, count)
if count == nil then count = _fetch(frame) end
-- Build output string
local return_value = ""
if count == nil then
if frame.args[1] == "risk" then
return_value = "a very large number of"
else
return_value = "many"
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 (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
-- Round down
return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
else
-- Round to nearest
return_value = string.format("approximately %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
end
-- Insert percent of pages
if frame.args["all-pages"] and frame.args["all-pages"] ~= "" then
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)
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" 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)
local bot_text = "\n\n----\nTransclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])."
if frame.args["nobot"] == true then
bot_text = ""
end
if count == nil then count = _fetch(frame) end
local return_value = {}
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" or title.subpageText == "sandbox" then
title = title.basePageTitle
end
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))
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 = string.format("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages%s ",
(mw.title.getCurrentTitle().namespace == 828 and "module" or "template"),
title.fullText, title.fullText,
(mw.title.getCurrentTitle().namespace == 828 and "." or ", or in your own [[Wikipedia:Subpages#How to create user subpages|user subpage]].")
)
if (frame.args[1] == "risk" or (count and count >= 100000) ) then
local info = ""
if frame.args["info"] and frame.args["info"] ~= "" then
info = "<br />" .. frame.args["info"]
end
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. ",
info, sandbox_text
)
else
sandbox_text = string.format(" and changes may be widely noticed. Test changes in the %s",
sandbox_text
)
end
local discussion_text = "Consider discussing changes "
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"])
else
discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText )
end
return table.concat({used_on_text, sandbox_text, discussion_text, " before implementing them.", bot_text})
end
function p.main(frame)
local count = _fetch(frame)
local return_value = ""
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
local type_param = "style"
if (frame.args[1] == "risk" or (count and count >= 100000) ) then
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
type_param = "content"
end
if frame.args["form"] == "editnotice" then
return_value = frame:expandTemplate{
title = 'editnotice',
args = {
["image"] = image,
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
}
else
return_value = frame:expandTemplate{
title = 'ombox',
args = {
["type"] = type_param,
["image"] = image,
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
}
end
return return_value
end
return p