Modifications
m
local lang = 'fr'function p.infobox( f )	local item args = nil -- lrequire( 'élément Wikidata liélocal localdata = {}-- données concernant les paramètres passés au modèlelocal page = { -- données concernant la page où est affichée lModule:ProcessArgs'infobox	name = mw).title.getCurrentTitlemerge(true ).prefixedText,	namespace local titleObject =  mw.title.getCurrentTitle().namespace}	local maincolor, secondcolor, thirdcolor = '#E1E1E1', '#E1E1E1', '#000000'-- l'objet principal à retournerlocal infobox title = mwargs.htmltitle or titleObject.create('div')baseText	-- objets secondaires à retourner	local maintenance imageArea = '' -- chaîne retournée avec le module : cats de maintenanceargs.imagearealocal externaltext 	if not imageArea and imageArea ~= 'none' -- par exemple coordonnées en titre-- modules importésthen		local linguistic images = require "Module:Linguistique"{}		local wd invImages = require 'Module:Wikidata'{}		local valueexpl defaultImageSize = wdargs.translate("activate-query") local i18n = {	['see doc'] = defaultimagesize or 'Documentation du modèle150px',	['edit'] 		args.image1 = args.image1 or args.image or 'modifiertitle',	['edit code'] 		args.image1size = 'modifier le code',args.image1size or args.imagesize	['edit item'] 		args.invimage1 = args.invimage1 or args.invimage or 'modifier Wikidatatitle',	['tracking cat'] = "Page utilisant des données de Wikidata",			['invalid block type'] 		local imgCount = "Bloc de données invalide dans le module d'infobox",{}	['default cat'] 		local invImgCount = "Maintenance des infobox",{} local function addWikidataCat		for k, v in pairs(propargs )do	maintenance = maintenance .. wd.addTrackingCat			if type(propk )end local function expandQuery(query)	local value, number -- valeur à retourner, nombre de valeurs pour accorder le libellé	if not query.entity then		query.entity = localdata.item	end	if not query.conjtype then		query.conjtype = 'commastring'then	end					local claims image, num = wd.getClaimsk:match(query)		if '^(not claimsimage) then		return nil	end	return wd.formatAndCat(query%d+), #claims -- pour l$'accord au plurielend)				local function getWikidataValueinvImage, invNum = k:match( '^(invimage)(params, wikidataparam%d+)$' )	-- Récupère la valeur Wikidata pour la valeur, soit dans le paramètre "wikidata" soit dans le paramètre "property"					if not localdata.item v:lower() ~= 'none' then		return nil	end 						if params.blockers image then -- blockers are local parameters that disable the wikidata query		local blockers = params						table.blockers		if insert(typeimgCount, tonumber(blockersnum ) == 'string') 					elseif invImage then			blockers = {blockers}		end		for i						table.insert( invImgCount, blocker in ipairstonumber(blockersinvNum ) ) do			if localdata[blocker] then					end				return nilend
	end				table.sort( imgCount )			local animate		for k, v, valnum -- la valeur à retourner, et le nombre de de valeurs in ipairs(pour l'accord grammaticalimgCount )do		if not wikidataparam then -- par défaut la valeur wikidata est dans le paramètre "wikidata" mais dans les structures composées comme "title", il y a plusieurs paramètres wikidata		wikidataparam 			local image = args['wikidataimage'.. v]	end 	if params			local size = args[wikidataparam'image' .. v .. 'size'] thenor defaultImageSize								if type(params[wikidataparam]) image == 'functiontitle' then			v, valnum 				local imageTitle = params[wikidataparam]mw.title.new(localdata'Media:' .. title .. '.itempng' )		elseif type(params				if imageTitle and imageTitle.exists then					image = '[[wikidataparamFile:' .. title .. '.png|' .. size .. ']]) '				elseif titleObject.namespace == 'table' 0 then			v, valnum 					image = expandQuery(params'[[wikidataparamFile:No image.svg|' .. size .. '|link=File:' .. title .. '.png|Upload ' .. title .. '.png]])'						else			v, valnum 					image = params'[[wikidataparamFile:No image.svg|' .. size .. '|link=]]'						end	end			elseif image:match( ';' ) then					if not v animate then		return nil	end	v 					animate = linguistic.ucfirstrequire(v'Module:Animate' ).animate	return v, valnum				end				image = animate{ image, size }local function getValue(val, params)			else	if type(val) =				image = 'string[[File:' then		return localdata[val]	elseif type(val) == .. image .. 'function|' then		return val(localdata, localdata.item, params)	elseif type(val) == 'table. size .. ' then		for i, j in pairs(val) do -- si plusieurs paramètres possibles (legacy de vieux code), prendre le premier non vide			if localdata[j] then				return localdata[j]'
			
	endend local function addMaintenanceCat(cat, sortkey)	if page.namespace ~= 0 then		return ''	end	if cat then		maintenance images = maintenance .. '[[Category:' .. cat .. '|' .table. concat(sortkey or page.name) .. ']]'	endend function p.separator(params)	local style = params['separator style'] or {}	style.height = style.height or '2px'	style['background-color'] = style['background-color'] or maincolor		return mw.html.create('hr'):css( style )	end function p.buildtitle(params)	local text = getValue(params.value, params) or params.textdefaultvalue or  getWikidataValue(params) or mw.title.getCurrentTitle().text	local subtext = getValue(params.subtitle) or  getWikidataValue(paramsimages, 'wikidatasubtitle\n') or params.subtitledefaultvalue	if subtext and (subtext ~= text) then				text = text .. '<br /if #invImgCount ><small>' .. subtext .. '</small>'	end	local icon = params.icon or ''	if icon ~= '' and icon ~= 'defaut' 0 then		text = text .. mw			table.getCurrentFramesort(invImgCount ):extensionTag('templatestyles', '', {src = 'Infobox/Pictogramme/' .. mw.text.trim(icon) .. '.css'})		if not params.large then			icon = 'icon ' .. icon		end	end	local class = 'entete ' .. icon		-- overwrites with those provided in the module	local style = {}	style['background-color'] = maincolor	style['color'] = thirdcolor	if params.style then		for i, j in pairs(params.style) doslot			style[i] = j		end	end	local title invIds = mw.html.createloadData('div')		:addClass(class)		:css(style)		Module:tag('divInvSprite').ids			:wikitext(text)		:allDone()	return titleendp.buildTitle = p.buildtitle function p.buildnavbox(params)		-- définition du style	local class = "overflow nav " .. (params.class or '')	local style = params.style or {} 	if params.separated then -- options pour ajouter une ligne de séparation au dessus		class = class .. ' bordered'		style['border-top'] = '1px solid' .. maincolor	end 	-- ajustement des paramètres de données	params.previousval = params.previousval or params.previousparameter -- nom de paramètre obsolète	params.nextval = params.nextval or params.nextparameter		if params.previousproperty then		params.previouswikidata = {property = params.previousproperty}	end	if params.nextproperty then		params.nextwikidata = {property = params.nextproperty}	end	 	local previousval = getValue(params.previousval, params) or getWikidataValue(params, 'previouswikidata')	local nextval = getValue(params.nextval, params) or getWikidataValue(params, 'nextwikidata')		local navbox	if params.inner then -- pour celles qui sont à l'intérieur d'une table		navbox invAliases = mw.html.create('tr'):tagloadData('th')Module:attr('colspan', 2)		style['font-weight'] = style['font-weight'] or 'normal'	else		navbox = mw.html.create('div')	end		navbox		:addClass(class)		:css(style)		:tag('divInventory slot/Aliases')			:addClass('prev_bloc')			:wikitext(previousval)			:done()		:tag('div')			:addClass('next_bloc')			:wikitext(nextval)			:done()		:allDone()	return navboxendp.buildNavbox = p.buildnavbox function p.buildimages(params)	local images = {}	local upright, link, caption, alt, size  -- size is deprecated	if type(params.imageparameters) == 'string' then		params.imageparameters = {params.imageparameters}	end	if not params.imageparameters then -- s'il n'y a pas de paramètre image, continuer, peut-être y a-t-il une image par défaut définie dans le module d'infobox		params.imageparameters = {}	end	for jk, k v in ipairs(params.imageparametersinvImgCount ) do		table.insert(images, localdata[k])	end	-- Images de Wikidata 	if #images == 0 and localdata.item then		if params.property then			params.wikidata = {entity = localdata.item, property = params.property}		end		if params.wikidata then							local wdq = params.wikidata			wdq.excludespecial = true			if type(wdq) =image = args['tableinvimage' then				wdq.entity = wdq.entity or localdata.item				wdq.numval = wdq.numval or params.numval or 1v]				images = wd.getClaims(wdq)			end			if type(wdq) image == 'function' then				images = params.wikidata()				if type(images) == 'stringtitle' then					return images				end --c'est probablement une erreur dans la requête => afficher le message			end			if (not images) then				images = {}			end			if (#images > 0) and (params.wikidata.property) then				addWikidataCat(params.wikidata.property)			end 			if type(imagesinvIds[title] or invAliases[1title]) == 'table' then				for i, 						image in pairs(images) do			= title					if else						image.mainsnak.snaktype ~= 'value' then						returnfalse
									end								if #images image == 1 then '---- si une seule image, on utilise la légende (si deux plusieurs images, comment mettre en forme ?)' then						caption = wd					table.getFormattedQualifiersinsert(images[i]invImages, {'P2096'}, {isinlang </div><div style= "padding-top:.5em">'fr'}) or wd.getFormattedQualifiers				elseif image then					if not slot then						slot = require(images[i], {'P805Module:Inventory slot'}).slot
					images[i] table.insert( invImages, slot{ image, link = image.mainsnak.datavalue.value'none' } )
		end				end 	-- Images par défaut				if slot and #images == invImages > 0 then		if params				invImages = '<div class="infobox-invimages"><div>' .. table.maintenancecat then			addMaintenanceCatconcat(params.maintenancecatinvImages, params'' ) .sortkey)		end		if params.defaultimages then'</div></div>'			images = params.defaultimageselse			if type(images) =				invImages = 'string' then				images = {images}
			upright = params.defaultimageupright			caption = params.defaultimagecaption			link = params.defaultimagelink			alt = params.defaultimagealt			if not alt and ( images[1] == 'Defaut.svg' or images[1] == 'Defaut 2.svg' ) then				alt = 'une illustration sous licence libre serait bienvenue'			end		end	end	if #images == 0 then		return nil	end		upright = upright or getValue(params.uprightparameter) or params.defaultupright or "1.2"	link = link or getValue(params.linkparameter) or params.defaultlink	caption = caption or getValue(params.captionparameter) or params.defaultcaption	alt = alt or getValue( params.altparameter) or params.defaultalt 	-- taille avec "size" (obsolète)	size = size or getValue(params.sizeparameter) or params.defaultsize -- deprecated	if size then		local numsize = size:gsub('px', '')		numsize = mw.ustring.gsub(numsize, 'x.*', '')		numsize = tonumber(numsize)		if type(numsize) ~= 'number' or numsize > 280 then			addMaintenanceCat("taille d'image invalide")		end		if tonumber(size) then			size = size .. 'px'		end		size = '|' .. size	else		size = ''	end		if tonumber(upright) then		upright = tostring(tonumber(upright) ) / #images	end	if tonumber(size) then		size = tostring(tonumber(size) ) / #images	end 	local style = params.style or {padding ='2px 0',} 	-- Partie image 	local imagesString = ''	for i,image in pairs(images) do		if image == '-' then			return		end		imagesString = imagesString ..  '[[Fichier:' .. image .. size .. '|frameless'		if alt then			imagesString = imagesString .. '|alt=' .. alt		end		if link then			imagesString = imagesString .. '|link=' .. link		end		if upright then			imagesString = imagesString .. '|upright=' .. upright		elseif #images > 1 then			imagesString = imagesString .. '|upright=' .. ( 1 / #images )		end		imagesString = imagesString .. ']]'	end 	local image = mw.html.create('div')		:addClass("images")		:css(style)		:wikitext(imagesString) 	-- Partie légende	local captionobj	if caption then		captionobj = mw.html.create('div')			:wikitext(caption)			:css(params.legendstyle or {})			:addClass("legend")			:done()	end		-- séparateur	local separator	if params.separator then		separator = separator(params)	end	return mw.html.create('div')		:node(image)		:node(captionobj)		:node(separator)		:done()endp.buildImages = p.buildimages function p.buildtext(params)	local class = params.class or ''	local style = {		['text-align'] = 'center',		['font-weight'] = 'bold'	}	if params.style then		for i, j in pairs(params.style) do			style[i] = j		end	end	local text = getValue(params.value, params) or getWikidataValue(params) or params.defaultvalue	if text =invImages = '-' then		return	end	if not text then		addMaintenanceCat(params.maintenancecat, params.sortkey)		return nil	end	local formattedtext = mw.html.create('p')		:addClass(class)		:css(style)		:wikitext(text)		:done()	return formattedtextendp.buildText = p.buildtext function p.buildrow(params)	local class = params.class or ''	local style = params.style or {}	local value, number =  getValue(params.value, params)	if (value == valueexpl) then		value = nil		params.wikidata.expl = false	end	if (not value) then		value, number =  getWikidataValue(params, 'wikidata')	end	if (not value) and (params.property) then		value, number = expandQuery{ property = params.property, ucfirst = params.ucfirst }	end	if not value then		value = params.defaultvalue	end	if value == '-' then		return nil	end	if not number then		number = 0 -- == indéfini	end 	if not value then		if params.maintenancecat then			local maintenancecat = getValue(params.maintenancecat, params)			addMaintenanceCat(maintenancecat, params.sortkey)
		return nil
	end
 
	local label = params.label
	if number > 1 and (params.plurallabel) then
		label = params.plurallabel
	elseif number == 1 and (params.singularlabel) then
		label = params.singularlabel
	end
	if type(label) == 'function' then
			label = label(localdata, localdata.item)
	end
 
	-- format
	local formattedvalue = mw.html.create('div')
		:wikitext('\n' .. value) -- Le '\n' est requis lorsque value est une liste commençant par '*' ou '#'
		
	if (params.hidden == true)then
		formattedvalue
			:attr({class="NavContent", style="display: none; text-align: left;"})
		formattedvalue = mw.html.create('div')
			:attr({class="NavFrame", title="[Afficher]/[Masquer]", style="border: none; padding: 0;"})
			:node(formattedvalue)
	end
	formattedvalue =  mw.html.create('td')
			:node(formattedvalue)
			:allDone()
	
	local formattedlabel
	if label then
		formattedlabel = mw.html.create('th')
			:attr('scope', 'row')
			:wikitext(label)
			:done()
	end
	local row = mw.html.create('tr')
		:addClass(class)
		:css(style)
		:node(formattedlabel)
		:node(formattedvalue)
		:done()
	
	return row
end
p.buildRow = p.buildrow
 
function p.buildsuccession(params)
if not params.value then
		return nil
	end
		
	--local style = params.style or {}
	--style['text-align'] = style['text-align'] or 'center'
	--style['color'] = style['color'] or '#000000'
	--style['background-color'] = style['background-color'] or '#F9F9F9'
	
	local rowI = mw.html.create('tr')
	
	local colspan = '2'
	cellI = mw.html.create('td')
			:attr({colspan = colspan})
			:attr({align = 'center'})
	
	local styleT = {}
	styleT['background-color'] = 'transparent'
	styleT['width'] = '100%'
	tabC = mw.html.create('table')
			:attr({cellspacing = '0'})
			:addClass('navigation-not-searchable')
			:css(styleT)
	
	local row = mw.html.create('tr')
 
	local color = params.color
 
	local style = {}
	local arrowLeft
	local arrowRight
	
	if color == 'default' then
		style['background-color'] = '#E6E6E6'
		arrowLeft = '[[Fichier:Fleche-defaut-gauche.png|13px|alt=Précédent|link=]]'
		arrowRight = '[[Fichier:Fleche-defaut-droite.png|13px|alt=Précédent|link=]]'
	else
		style['background-color'] = color
		arrowLeft = '[[Fichier:Fleche-defaut-gauche-gris-32.png|13px|alt=Suivant|link=]]'
		arrowRight = '[[Fichier:Fleche-defaut-droite-gris-32.png|13px|alt=Suivant|link=]]'
	end
	
	local styleTrans = {}
	styleTrans['background-color'] = '#F9F9F9'
	
	local values = params.value
	local before = values['before']
	local center = values['center']
	local after = values['after']
	
	local widthCell = '44%'
	if center then
		widthCenter = '28%'
		widthCell = '29%'
	end
	
	local formattedbefore
	if before then
		formattedbefore = mw.html.create('td')
			:attr({valign = 'middle'})
			:attr({align = 'left'})
			:attr({width = '5%'})
			:css(style)
			:wikitext(arrowLeft)
			:done()
		row:node(formattedbefore)
		formattedbefore = mw.html.create('td')
			:attr({width = '1%'})
			:css(style)
			:wikitext('')
			:done()
		row:node(formattedbefore)
		formattedbefore = mw.html.create('td')
			:attr({align = 'left'})
			:attr({valign = 'middle'})
			:attr({width = widthCell})
			:css(style)
			:wikitext(before)
			:done()
		row:node(formattedbefore)
	else
		formattedbefore = mw.html.create('td')
			:attr({valign = 'middle'})
			:attr({align = 'left'})
			:attr({width = '5%'})
			:css(styleTrans)
			:wikitext('')
			:done()
		row:node(formattedbefore)
		formattedbefore = mw.html.create('td')
			:attr({width = '1%'})
			:css(styleTrans)
			:wikitext('')
			:done()
		row:node(formattedbefore)
		formattedbefore = mw.html.create('td')
			:attr({align = 'left'})
			:attr({valign = 'middle'})
			:attr({width = widthCell})
			:css(styleTrans)
			:wikitext('')
			:done()
		row:node(formattedbefore)
	end
	
	local formattedcenter
	formattedcenter = mw.html.create('td')
		:attr({width = '1%'})
		:css(styleTrans)
		:wikitext('')
		:done()
	row:node(formattedcenter)
	
	if center then
		formattedcenter = mw.html.create('td')
			:attr({align = 'center'})
			:attr({valign = 'middle'})
			:attr({width = widthCenter})
			:css(style)
			:wikitext(center)
			:done()
		row:node(formattedcenter)
		formattedcenter = mw.html.create('td')
			:attr({width = '1%'})
			:css(styleTrans)
			:wikitext('')
			:done()
		row:node(formattedcenter)
	end
	
	local formattedafter
	if after then
		formattedafter = mw.html.create('td')
			:attr({align = 'right'})
			:attr({valign = 'middle'})
			:attr({width = widthCell})
			:css(style)
			:wikitext(after)
			:done()
		row:node(formattedafter)
		formattedbefore = mw.html.create('td')
			:attr({width = '1%'})
			:css(style)
			:wikitext('')
			:done()
		row:node(formattedbefore)
		formattedafter = mw.html.create('td')
			:attr({align = 'right'})
			:attr({valign = 'middle'})
			:attr({width = '5%'})
			:css(style)
			:wikitext(arrowRight)
			:done()
		row:node(formattedafter)
	else
		formattedafter = mw.html.create('td')
			:attr({align = 'right'})
			:attr({valign = 'middle'})
			:attr({width = widthCell})
			:css(styleTrans)
			:wikitext('')
			:done()
		row:node(formattedafter)
		formattedbefore = mw.html.create('td')
			:attr({width = '1%'})
			:css(styleTrans)
			:wikitext('')
			:done()
		row:node(formattedbefore)
		formattedafter = mw.html.create('td')
			:attr({align = 'right'})
			:attr({valign = 'middle'})
			:attr({width = '5%'})
			:css(styleTrans)
			:wikitext('')
			:done()
		row:node(formattedafter)
	end
	
	row:done()
	tabC:node(row)
	tabC:done()
	cellI:node(tabC)
	cellI:done()
	rowI:node(cellI)
	rowI:allDone()
	
	return rowI
end
p.buildSuccession = p.buildsuccession
 
function p.buildrow1col(params)
	
	if not params.value then
		return nil
	end
		
	--local style = params.style or {}	--style['text-align'] = style['text-align'] or 'center'	--style['color'] = style['color'] or '#000000'	--style['background-color'] = style['background-color'] or '#F9F9F9'	local class = params.class	local rowcolor			if params.color =images ~= 'secondcolor' then		rowcolor = secondcolor	else		rowcolor = params.color	end		local style = {}	style['padding'] = '4px'	style['text-align'] = 'center'	style['background-color'] = rowcolor or '#F9F9F9'	style['color'] = '#000000'		local text = params.value 	local colspan ='2' 	local formattedlabel	formattedlabel = mw.html.create('th')		:attr({colspan = colspan})		:css(style)		:wikitext(text)		:done() 	local row = mw.html.create('tr')		:addClass(class)		:css(style)		:node(formattedlabel)		:done()		return rowendp.buildRow1Col = p.buildrow1col function p.buildtable(params)	local tab invImages ~= mw.html.create('table'):css(params.style or {}) 	local rows = params.rows		-- expand parameters so that we have a list of tables	local i = 1 	while (i <= #rows) do 		local l = rows[i]		if type(l) == 'function' then 			l imageArea = l(localdata, localdataimages .item)		end		if (type(l) == 'table') and (l.type == 'multi') then			table.remove(rows, i)  			for j, row in ipairs(l.rows) do				table.insert(rows, i + j - 1, row) 			end		elseif type(l) == 'nil' then			table.remove(rows, i)		elseif type(l) ~= 'table' then 			return error('les lignes d\'infobox ("rows") doivent être des tables, est n' .. type(l))invImages
			i imageArea = i + 1'none'
	end 
 
	-- CREATE ROW
	local expandedrows = {}
	for k, row in ipairs(rows) do
		local v = p.buildblock(row)
		if v then
			table.insert(expandedrows, v)
		end
	end
	if (#expandedrows == 0) then
		return nil
	end
	rows = expandedrows
 
	-- ADD TITLE
	local title
	if params.title or params.singulartitle or params.pluraltitle then
		local text
		if #rows > 1 and params.pluraltitle then
			text = params.pluraltitle
		elseif #rows == 1 and params.singulartitle then
			text = params.singulartitle
		else
			text = params.title
		end
 
		local style = params.titlestyle or {}
		style['text-align'] = style['text-align'] or 'center'
		style['color'] = style['color'] or thirdcolor
		style['background-color'] = style['background-color'] or maincolor
 
		local colspan ='2'
		title = mw.html.create('caption')
			:attr({colspan = colspan})
			:css(style)
			:wikitext(text)
			:done()
	end
	
	if title then
		tab:node(title)
	end
	
	for i, j in pairs (rows) do
		tab:node(j)
	end
	
	if params.separator then
		local separator = p.separator(params)
		tab:node(separator)
	tab:allDone()	return tabendp.buildTable = p.buildtable function p.buildinvalidblock(args)	addMaintenanceCat(defaultcat)	local text = ''	if type(args) imageArea and imageArea ~= 'tablenone' then		text imageArea = '<div class= "Les blocs d'infobox doivent être des tables-imagearea animated-container">' .. imageArea .. '</div>'
		text imageArea = i18n["invalid block type"] .. ' : ' .. (args.type or '??')	end	return textendp.buildInvalidBlock = p.buildinvalidblock function p.buildmap(params) 	-- paramètre d'affichage 	local maplist = getValue(params.maps)	local pointtype = params.pointtype	local maptype = params.maptype -- choisit le type de carte le plus approprié (relief, administratif, etc.)		if type(maplist) == 'function' then		maplist = maplist(localdata, localdata.item)	end	local width = tonumber(params.width) or 280	if width > 280 then		addMaintenanceCat("Erreur d'Infobox/Image trop grande")		return 'image trop grande, la largeur doit être inférieure ou égale à 280px'	end 	-- récupération des données locales	local pointtable = {}	local globe = params.globe	if params.latitude then		local lat, long		if type(params.latitude) == 'function' then			lat, long = params.latitude(localdata, localdata.item), params.longitude(localdata, localdata.item)		else			lat, long = localdata[params.latitude], localdata[params.longitude] 		end		if lat then			table.insert(pointtable, {latitude = lat, longitude = long})		end	end 	-- récupération des données wikidata	local function processWDval(claim, displayformat)		if not claim then			return nil		end		local val = wd.formatSnak( claim.mainsnak )		return {latitude = val.latitude, longitude = val.longitude, globe = val.globe, marker = displayformat.marker}	end		local function getWDvals(query)		query.excludespecial = true		query.numval = query.numval or 1		query.entity = query.entity or localdata.item		local claims = wd.getClaims(query)		if (not claims) then			return		end		for i, claim in ipairs(claims) do			claim = processWDval(claim, query)			table.insert(pointtable, claim)		end	end		if (#pointtable == 0) and localdata.item and params.wikidata and (params.wikidata ~= '-') then		for i, query in ipairs(params.wikidata) do			if type(query) == 'function' then				query = query()			end			if query then				getWDvals(query)			end		end	end		if (not pointtable) or (#pointtable == 0) then		return nil
	
	
	if type(block) ~= 'table' or (not block.type) or (not blocktypes[block.type]) then
		return blocktypes['invalid'](block)
	end
	return blocktypes[block.type](block) 
end
p.buildBlock = p.buildblock
 
function p.build()
	
	localdata = requirereturn table.concat( 'Module:Infobox/Localdata' )	item = localdata.item 	-- assign rank to the infoboxhtml, "secondary" means special formatting like no displaytitle for coordinates	local infoboxrank = 'main' -- main infobox of the page, with coordinates displayed in title etc.	if page.namespace ~= 0 then		infoboxrank = 'secondary'	end	-- if infobox is linked to another item: rank = secondary	if localdata.item then		local itemlink = mw.wikibase.sitelink(localdata.item.id)		local pagetitle = mw.title.getCurrentTitle().text		if (itemlink or '') ~= pagetitle then			infoboxrank = 'secondary'		end	end	localdata.infoboxrank = infoboxrank 	-- load infobox module page	local moduledata = require('Module:Infobox/' .. localdata.modulename)	moduledata.name = localdata.modulename	-- defines main color	maincolor = localdata['couleur infobox'] or localdata['couleur boîte'] or moduledata.maincolor or maincolor	secondcolor = moduledata.secondcolor or secondcolor	thirdcolor = localdata['texte noir'] or localdata['couleur texte'] or moduledata.thirdcolor or thirdcolor	if maincolor:match( '^%x%x%x%x%x%x$\n' ) or maincolor:match( '^%x%x%x$' ) then		maincolor = '#' .. maincolor	end	if thirdcolor:match ('oui') or thirdcolor:match( 'true' ) then		thirdcolor = '#000'	end	if thirdcolor:match ('non') or thirdcolor:match( 'false' ) then		thirdcolor = '#fff'	end		-- class	local class = 'infobox_v3 large'	if moduledata.class then		class = class .. ' ' .. moduledata.class	end		-- style	local style = moduledata.style or {}		-- build infobox	infobox	:addClass(class)			:css(style)	for i, j in pairs( moduledata.parts ) do		infobox:node( p.buildblock(j) )	end	infobox	:node(p.buildfooter(moduledata.footer))			:done() 	return tostring(infobox) .. externaltext, maintenance
local p = {}
			end
		end
			end
			table.insert( images, '<div>' .. image .. '</div>' )
		end
					end
					end
				end
			end
			end
		end
		else
		end
	end
	else
	end
	local newparams footer = {maplist = maplist, pointtype = pointtype, maptype = maptype, width = width, item = localdataargs.item, pointtable = pointtable, globe = globe, marker=params.marker, default_zoom=params.default_zoom, ids = params.ids, markercolor = params.markercolor, shapecolor = params.shapecolor }footer	if params.params and type(params.params) == 'table' footer then -- paramètres additionnels		for i, j in pairs(params.params) do			newparams[i] footer = j		end	end	return require('Module:Carte').multimap(newparams)endp.buildMap = p.buildmap function p.buildexternaltext(params)	local value = getValue(params.value)	if value and (type(value) | class="infobox-footer" colspan= "2" | 'string') then		externaltext = externaltext .. value	endendp.buildExternalText = p.buildexternaltext function p.buildfooter(params)	if not params then		params = {}footer
	end
	local class = 'navbar noprint bordered ' .. (params.class or '')	local style html = params.style or {}	style['border-top'] = style['border-top'] or '1px solid ' .. maincolor		local backlinkstr = '[' .. tostring( mw.uri.fullUrl( page.name, 'veaction=edit§ion=0' ) ) .. ' ' .. i18n['edit'] .. ']'		.. ' - [' .. tostring( mw.uri.fullUrl( page.name, 'action=edit§ion=0' ) ) .. ' ' .. i18n['edit code'] .. ']' 	local itemlinkstr	if localdata.item then		itemlinkstr = '[[d:' .. localdata.item.id .. '|' .. i18n['edit item'] .. ']]'	end	local editstr = backlinkstr	if itemlinkstr then		editstr = editstr .. ' - ' .. itemlinkstr	end	local editlinkspan =  mw.html.create('span')		:css({['text-align'] <div class= "leftnotaninfobox"})		:addClass(>'plainlinks'),		:wikitext(editstr)		:done()	local doclinkstr = 			'[[Image:Info Simple.svg|12px|link<div class=' .. localdata.templatename .. '|' .. i18n['see doc'] .. ']]'	-"mcwiki- si ce lien ne marche pas toujours, il faut ajouter un variable pour le nom de l'header infobox récupéré par le frame	local doclinkspan = mw.html.create('span')		:css({['text-align'] = title"right"})		:wikitext(doclinkstr)		:done()		local footer = mw.html.create(>'p')		:addClass(class)		:css(style)		:node(editlinkspan)		:node(doclinkspan)	return footerendp.buildFooter = p.buildfooter function ptitle .buildblock(block)	if type(block) == 'function' then		block = block( localdata )	end 	local blocktypes = { -- list of functions for block buildings		['invalid'] = p.buildinvalidblock,		['external text</div>'] = p.buildexternaltext,		['footer'] = p.buildfooter			imageArea,		[			'images'] {| class= p.buildimages,		['map']"infobox-rows" cellspacing= p.buildmap,		['mixed'] "1" cellpadding= p.buildrow,		["4"'navbox'] = p.buildnavbox,		[			'table|-'] = p.buildtable,		['row'] = p			args.buildrow,		[rows or 'row1col'] = p.buildrow1col,		[			footer or 'succession'] = p.buildnavbox,		[			'text|}'] = p.buildtext,		['title</div>'] = p.buildtitle,
	}
end
return p