Modul:High-use
Udseende
Dette modul er afhængig af følgende andre moduler |
Dette Lua-modul bruges på ca. 2.500 sider, og derfor vil ændringer blive bemærket af mange. Vær venlig at afprøve enhver ændring i modulets /sandkasse eller /test-undersider, eller i din egen module sandkasse. Du bør også overveje at diskutere ændringer på diskussionssiden før du implementerer dem. |
Implementerer {{High-use}}. Bruger bot-opdateret værdier fra Modul:Transclusion_count/data når den er tilstede.
Brug
antal af transklusioner
: Den første paramter er en fast antal af gange skabelonen bliver transkludet, eller ordet "risk" (uden anførselstegn) til at vise "en større antal af" istedet for den aktuelle antal. Denne værdi vil blive ignoreret hvis transclusion data er tilstede for den aktuelle saide.diskussionside, eller brug + notation
: Den anden parameter er overloaded. Den vil få antal af transklusions til at blive vist som "#,###+" i stedet for "ca. #,###", når det er sta lig med "yes" (uden anførselstegn). Når de bruges på denne måde, vil værdierne blive nedad i stedet for at blive afrundet til nærmeste tal med passende antal cifre. Når den er indstillet til anden ikke-tom værdi, erstatter den henvisningen til skabelons diskussionsside med værdien af parameteren (for eksempel,2=WP:VPT
indsætte et henvisning til WP:VPT),|all-pages=yes
: Vil også bruge procentandel af alle sider, som bruger skabelonen. Den skal kun bruge af meget brugte skabeloner, og procent vil kun blive vist, hvis det er større end 1%.|info=ekstra information
: Hvis den sættes, vil den indsætte ekstra information indtil skabelonteksten vis skabelonen har mere end 10.000 transclusioner eller parameter 1 er sat til "risk".|demo=Skabelonnavn
: Vil brug transklutionantal for skabelonen Skabelon:Skabelonnavn istedet for at finde ud hvor for en skabelon, den bruges på. Capitalization må være nødagitig stemme overens med værdien brugt i Modul:Transclusion_count/data.|form=
: Når det sættes til "editnotice", vil den vise bruge {{editnotice}} stedet for {{ombox}}.|expiry=
: Sets the|expiry=
parameter for {{editnotice}}.|system=in system messages
: if set, this module looks like {{Used in system}}. Use that template directly as it performs some checks.|fetch=
: hvis den sættes til false, vil modullet kke forsøge at hente antal brug fra Modul:Transclusion count
Andre funktioner
- num
- Danner tekst og henvisning til toolforge opgørelse af mængden af transklusioner.
- risk
- Med denne funktion, hvis
risk
bruges som første unavngivet parameter, eller der er mere end 100.000 transklusioner, hvis denne returnererisk
. - text
- Returnere tekst af denne skabelon, med tom eller antal af transklusioner.
local p = {}
-- _fetch looks at the "demo" argument.
local _fetch = require('Modul:Transclusion_count').fetch
local yesno = require('Modul:Yesno')
function p.num(frame, count)
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
-- Build output string
local return_value = ""
if count == nil then
if frame.args[1] == "risk" then
return_value = "et stor antal af"
else
return_value = "mange"
end
else
-- Use 2 significant figures for smaller numbers and 3 for larger ones
local sigfig = 2
if count >= 20000 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("ca. %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 > 25000 and not yesno (frame:getParent().args['no-percent']) then
local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
if percent >= 1 then
return_value = string.format("%s sider, eller omkring %s%% af alle", return_value, 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" then
return_value = "risk"
else
local count = _fetch(frame)
if count and count >= 20000 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'''Preview message''': Transklusion antal bliver automatisk opdateret ([[Skabelon:High-use/doc#Technical details|se dokumentation]])." 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()
if title.subpageText == "doc" or title.subpageText == "dok" or title.subpageText == "sandkasse" then
title = title.basePageTitle
end
local systemMessages = frame.args['system']
if frame.args['system'] == '' then
systemMessages = nil
end
-- This retrieves the project URL automatically to simplify localiation.
local templateCount = ('på [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s sider]'):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 "Dette Lua-modul" or "Denne skabelon") .. ' bruges ';
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 = ("%s [[%s/sandkasse|/sandkasse]] eller [[%s/testcases|/test]]-undersider, eller i din egen [[%s]]. "):format(
(mw.title.getCurrentTitle().namespace == 828 and "modulets" or "skabelonens"),
title.fullText, title.fullText,
mw.title.getCurrentTitle().namespace == 828 and "Modul:Sandkasse|module sandkasse" or "Wikipedia:Normer for brugersider#Undersider|brugerunderside"
)
local infoArg = frame.args["info"] ~= "" and frame.args["info"]
if (systemMessages or frame.args[1] == "risk" or (count and count >= 20000) ) then
local info = systemMessages and '.<br/>Ændringer i den kan forårsage øjeblikkelige ændringer i Wikipedia-brugergrænsefladen.' or '.'
if infoArg then
info = info .. "<br />" .. infoArg
end
sandbox_text = info .. '<br /> For at undgå store forstyrrelser' ..
(count and count >= 20000 and ' og unødvendigt pres på serverne' or '') ..
', bør alle ændringer af skabelonen først afprøves i dens tilhørende ' .. sandbox_text ..
'De færdigafprøvede ændringer kan derefter overføres til denne side ved en enkelt redigering. '
else
sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' D') or ', og d') ..
'erfor vil ændringer blive bemærket af mange. Vær venlig at afprøve enhver ændring i ' .. sandbox_text
end
local discussion_text = systemMessages and 'Du bør overveje at diskutere alle ændringer ' or 'Du bør også overveje at diskutere ændringer '
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
discussion_text = string.format("%spå [[%s]]", discussion_text, frame.args["2"])
else
discussion_text = string.format("%spå [[%s|diskussionssiden]]", discussion_text, title.talkPageTitle.fullText )
end
return used_on_text .. sandbox_text .. discussion_text .. " før du implementerer dem." .. bot_text
end
function p.main(frame)
local count = nil
if yesno(frame.args['fetch']) == false then
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 type_param = "style"
local epilogue = ''
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=[[Kategori:Sider brugt i systembeskeder behører beskyttelse]]}}}}')
end
elseif (frame.args[1] == "risk" or (count and count >= 20000)) then
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|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 "")
}
} .. epilogue
else
return require('Module:Message box').main('ombox', {
type = type_param,
image = image,
text = p.text(frame, count),
expiry = (frame.args["expiry"] or "")
}) .. epilogue
end
end
return p