Difference between revisions of "Module:Hidden ping"

From blackwiki
Jump to navigation Jump to search
blackwiki>Ahecht
(create)
 
blackwiki>Ahecht
(Use root, not base)
Line 11: Line 11:
 
local title = mw.title.new(v)
 
local title = mw.title.new(v)
 
if title then
 
if title then
args[k] = title.baseText
+
args[k] = title.rootText
 
usernames = usernames + 1
 
usernames = usernames + 1
 
elseif (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview
 
elseif (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview

Revision as of 15:58, 19 July 2017

Usage from wikitext

This module cannot be used directly from wikitext. Please use the {{Hidden ping}} template instead.

Usage within templates

{{#invoke:Hidden ping|hiddenping|max=maximum number of names}}

  • The |max= parameter sets the maximum number of names that the template will accept. If not specified, it defaults to 50 (which is the maximum number that Echo currently supports as of August 2015). If this number of names is exceeded, the parent template will return an error message when previewed.



local p = {}

function p.hiddenping(frame)
	local origArgs = frame:getParent().args
	local args = {}
	local maxArg = 0
	local usernames = 0
	for k, v in pairs(origArgs) do
		if type(k) == 'number' and mw.ustring.match(v,'%S') then
			if k > maxArg then maxArg = k end
			local title = mw.title.new(v)
			if title then
				args[k] = title.rootText
				usernames = usernames + 1
			elseif (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview
				return '<div class="error"><strong>Error in [[Template:Hidden ping]]:</strong> Input contains forbidden characters.</div>'
			end
		end
	end

	if usernames < 1 then
		if (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview
			return '<div class="error"><strong>Error in [[Template:Hidden ping]]:</strong> Username not given.</div>'
		else
			return ''
		end
	elseif usernames > (tonumber(frame.args.max) or 50) and (frame:preprocess( "{{REVISIONID}}" ) == "") then -- Show error only in preview
		return '<div class="error"><strong>Error in [[Template:Hidden ping]]:</strong> More than '..tostring(frame.args.max or 50)..' names specified.</div>'
	else
		local outStr = ''
		for i = 1, maxArg do
			if args[i] then outStr = outStr..'[[:User:'..args[i]..'|&#x200B;]]' end
		end
		return outStr
	end
end

return p