Modul:High-use

Page semibeskyttet
Fra Wikipedia, den frie encyklopædi
Documentation icon Moduldokumentation[vis] [redigér] [historik] [opfrisk]

Implementerer {{High-use}}. Bruger bot-opdateret værdier fra Modul:Transclusion_count/data når den er tilstede.

Brug

Skabelon:Mlx

  • 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 returnere risk.
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