Documentația acestui modul poate fi creată la Modul:PaidContribs/doc

local getArgs = require('Modul:Arguments').getArgs
local TableTools = require('Modul:TableTools')
local join = require('Modul:Separated entries')._main

local p = {}

local crtFrame = mw.getCurrentFrame()

local function yesNo(str)
	if not str then return false end
	str = mw.ustring.lower(str)
	return str == 'yes' or str == 'da' or str == 'd' or str == 'y'
end

p.fromArgs = function(userData, small, checked)
	local img = '[[File:Dollar sign in circle cleaned (PD version).svg|40px|alt=|link=]]'
	local smallImg = '[[File:Dollar sign in circle cleaned (PD version).svg|30px|alt=|link=]]'
	local text = '[[:meta:Terms of use/ro#4._Ab.C5.A3inerea_de_la_anumite_activit.C4.83.C5.A3i|Termenii de utilizare]] ai [[Fundației Wikimedia]] impun ca redactorii să-și dezvăluie „angajatorul, clientul sau afilierea” în raport cu orice contribuție plătită; vedeți [[WP:CdI]].'
	if checked then
		text = text .. ' Editările efectuate de următorii au fost ultima oară verificate pentru neutralitate la ' .. checked .. '.'
	end

	for _,eachUser in ipairs(userData) do
		local usernames = { crtFrame:expandTemplate{title = 'Ut', args = { eachUser.username } } }
		if eachUser.alts then
			for _,eachAlt in ipairs(eachUser.alts) do
				table.insert(usernames, crtFrame:expandTemplate{title = 'Ut', args = { eachAlt } })
			end
		end
		usernames.separator = '&#32/ '
		text = text .. '\n*' .. join(usernames) .. ' a fost plătit(ă) de ' .. (eachUser.employer or '[[Categorie:Contribuții plătite cu angajator nespecificat]]')  .. ' ' .. (eachUser.client and ('în numele ' .. eachUser.client) or 'în nume propriu') .. '.'
		if yesNo(eachUser.here) then text = text .. ' Editările sale cuprind contribuții la acest articol.' end
		if yesNo(eachUser.banned) then text = text .. ' Toate editările sale trebuie anulate pe loc.' end
		if eachUser.otherlinks then text = text .. eachUser.otherlinks end
	end
	text = text .. ' [[Categorie:Pagini de discuție ale articolelor cu contribuții plătite]]'
	return crtFrame:expandTemplate{title='Tmbox', args = { ['type'] = 'notice', ['small']=small, ['image'] = img, ['smallimage'] = smallImg, ['text'] = text} }
end

p.fromArray = function(args)
	local userData = {}
	local usersIndices = TableTools.affixNums(args, 'User')
	for _,eachIndex in ipairs(usersIndices) do
		local crtUser = {}
		crtUser.username = args['User' .. tostring(eachIndex)]
		crtUser.employer = args['U' .. tostring(eachIndex) .. '-employer']
		crtUser.client = args['U' .. tostring(eachIndex) .. '-client']
		crtUser.here = args['U' .. tostring(eachIndex) .. '-EH']
		crtUser.banned = args['U' .. tostring(eachIndex) .. '-banned']
		crtUser.otherlinks = args['U' .. tostring(eachIndex) .. '-otherlinks']
		table.insert(userData, crtUser)
	end
	
	if 0 < #userData then
		local altIndices = TableTools.affixNums(args, 'alt')
		local alts = {}
		for _,eachAltIndex in ipairs(altIndices) do
			table.insert(alts, args['alt' .. tostring(eachAltIndex)])
		end
		userData[1].alts = alts
	end
	
	return p.fromArgs(userData, args['small'], args['checked'])
end

p.fromFrame = function(frame)
	local args = getArgs(frame)
	return p.fromArray(args)
end

return p