Wikipedya
htwiki
https://ht.wikipedia.org/wiki/Paj_Prensipal
MediaWiki 1.47.0-wmf.22
first-letter
Medya
Espesyal
Diskite
Itilizatè
Diskisyon Itilizatè
Wikipedya
Diskisyon Wikipedya
Fichye
Diskisyon Fichye
MedyaWiki
Diskisyon MedyaWiki
Modèl
Diskisyon Modèl
Èd
Diskisyon Èd
Kategori
Diskisyon Kategori
TimedText
TimedText talk
Module
Discussion module
Event
Event talk
Modèl:Infobox
10
62585
888714
855850
2026-10-06T18:41:58Z
Kitanago
19629
888714
wikitext
text/x-wiki
<includeonly>{{#invoke:Infobox|build|nom={{#invoke:Infobox/Infobox universelle|main|{{{wikidata|}}}}}}}{{Infobox en Lua}}</div></includeonly>
c527saomncswpqtwencqrqga7tbnwx8
888715
888714
2026-10-06T18:42:25Z
Kitanago
19629
888715
wikitext
text/x-wiki
{{#invoke:Infobox|build|nom={{#invoke:Infobox/Infobox universelle|main|{{{wikidata|}}}}}}}{{Infobox en Lua}}</div></includeonly>
nermv6nivplreo3rrpgeqfet1odlrco
888716
888715
2026-10-06T18:46:48Z
Kitanago
19629
888716
wikitext
text/x-wiki
{{#invoke:Infobox|build|nom={{#invoke:Infobox/Infobox universelle|main|{{{wikidata|}}}}}}}<!--
-->{{Infobox en Lua|{{#invoke:Infobox/Infobox universelle|templateName|{{{wikidata|}}}}} via Modèle:Infobox}}</includeonly><noinclude>{{Documentation}}
</noinclude>
johsic2igaax3m7nq0fbqadn39q5ekv
Module:Infobox
828
62631
888717
888253
2026-10-06T21:00:15Z
Kitanago
19629
update, nouvelle copie du fr
888717
Scribunto
text/plain
-- luacheck: globals mw, no max line length
local p = {}
local wikiLang = 'fr'
local localdata = {}-- données concernant les paramètres passés au modèle
-- données concernant la page où est affichée l'infobox
local page = mw.title.getCurrentTitle()
local maincolor, secondcolor, thirdcolor
-- l'objet principal à retourner
local infobox = mw.html.create('div')
-- objets secondaires à retourner
local maintenance = '' -- chaîne retournée avec le module : cats de maintenance
local externaltext = '' -- par exemple coordonnées en titre
-- modules importés
local wd = require 'Module:Wikidata'
local yesno = require 'Module:Yesno'
local valueexpl = wd.translate("activate-query")
-- maintenance des images dupliquées
local usedImages = {}
local i18n = {
['see doc'] = 'Documentation du modèle',
['edit'] = 'modifier',
['edit code'] = 'modifier le code',
['edit item'] = 'modifier Wikidata',
['tracking cat'] = "Page utilisant des données de Wikidata",
['invalid block type'] = "Bloc de données invalide dans le module d'infobox",
['default cat'] = "Maintenance des infobox",
}
local function expandQuery(query)
if not query.entity then
query.entity = localdata.item
end
if not query.conjtype then
query.conjtype = 'comma'
end
local claims = wd.getClaims(query)
if (not claims) then
return nil
end
return wd.formatAndCat(query), wd.getgendernum(claims) -- valeur et code indiquant le genre/nombre pour accorder le libellé
end
local function getWikidataValue(params, wikidataparam)
-- 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 then
return nil
end
if params.blockers then -- blockers are local parameters that disable the wikidata query
local blockers = params.blockers
if (type(blockers) == 'string') then
blockers = {blockers}
end
for i, blocker in ipairs(blockers) do
if localdata[blocker] then
return nil
end
end
end
local v, valgendernum -- la valeur à retourner, et le genre/nombre de de valeurs (pour l'accord grammatical)
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 = 'wikidata'
end
if params.property and not params[wikidataparam] then params[wikidataparam] = {property = params.property} end
if params[wikidataparam] then
if type(params[wikidataparam]) == 'function' then
v, valgendernum = params[wikidataparam](localdata.item)
elseif type(params[wikidataparam]) == 'table' then
v, valgendernum = expandQuery(params[wikidataparam])
else
v, valgendernum = params[wikidataparam]
end
end
if not v then
return nil
end
if(type(valgendernum) == 'number') then
if(valgendernum > 1) then
valgendernum = 'p'
else
valgendernum = 's'
end
end
return v, valgendernum
end
local function getValue(val, params)
if type(val) == 'string' then
return localdata[val]
elseif type(val) == 'function' then
return val(localdata, localdata.item, params)
elseif type(val) == 'table' 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]
end
end
end
end
local function addMaintenanceCat(cat, sortkey)
if page.namespace ~= 0 then
return ''
end
if cat then
local sortkeycode
if sortkey then sortkeycode = '|' .. sortkey else sortkeycode = '' end
maintenance = maintenance .. '[[Category:'.. cat .. sortkeycode .. ']]'
end
end
function p.separator(params)
local classes = params['separator classes']
local style = params['separator style'] or {}
style['background-color'] = style['background-color'] or maincolor
if style['background-color'] then
style.color = 'var( --color-base )'
end
return mw.html.create('hr'):addClass( classes ):css( style )
end
--[=[
Construit le code du bloc de titre de l'infobox
Paramètres (liste partielle) :
- value : Moyen d'obtenir le titre via getValue (nom de paramètre de modèle ou fonction).
- textdefaultvalue : Valeur par défaut du titre.
- icon : Pictogramme d'infobox (voir [[Projet:Infobox/Pictogramme]]).
- italic : Indique si le titre doit être affiché en italique.
Si italic=true, le paramètre "titre en italique" de l'infobox peut forcer la désactivation.
- setdisplaytitle : Indique si le titre de l'article doit être mis en forme comme celui de l'infobox.
Si setdisplaytitle=true, le paramètre "titre article en italique" de l'infobox peut forcer la désactivation.
]=]
function p.buildtitle(params)
local text = getValue(params.value, params) or params.textdefaultvalue or getWikidataValue(params) or page.prefixedText
local lang = localdata['langue du titre'] or ''
if lang ~= '' then
local langueFunction = require( 'Module:Langue' ).langue
text = langueFunction( { lang, text } )
end
local subtext = getValue(params.subtitle) or getWikidataValue(params, 'wikidatasubtitle') or params.subtitledefaultvalue
if subtext and (subtext ~= text) then
text = text .. '<br><small>' .. subtext .. '</small>'
end
local icon = params.icon or ''
if icon ~= '' and icon ~= 'defaut' then
text = text .. mw.getCurrentFrame():extensionTag('templatestyles', '', {src = 'Infobox/Pictogramme/' .. mw.text.trim(icon) .. '.css'})
if not params.large then
icon = 'icon ' .. icon
end
end
local classes = 'entete ' .. icon
local italic = params.italic and yesno(localdata['titre en italique'] or '', true, true)
if italic then
classes = classes .. ' italique'
end
if params.setdisplaytitle and yesno(localdata['titre article en italique'] or '', true, true) then
local formatTitleModule = require( 'Module:Formatage du titre' )
text = text .. formatTitleModule.setDisplayTitle{ args = {
lang = lang,
italic = italic,
options = 'noreplace',
} }
end
-- 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) do
style[i] = j
end
end
local title = mw.html.create('div')
:addClass(classes)
:css(style)
:tag('div')
:wikitext(text)
:allDone()
return title
end
p.buildTitle = p.buildtitle
function p.buildnavigator(params)
-- définition du style
local classes = "overflow infobox-navigateur " .. (params.class or '')
local style = params.style or {}
if params.separated then -- options pour ajouter une ligne de séparation au dessus
classes = classes .. ' bordered'
if maincolor then
style['border-top'] = '1px solid' .. maincolor
end
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')
if previousval == '-' then previousval = nil end
if nextval == '-' then nextval = nil end
local navigator
if params.inner then -- pour celles qui sont à l'intérieur d'une table
navigator = mw.html.create('tr'):tag('th'):attr('colspan', 2)
style['font-weight'] = style['font-weight'] or 'normal'
else
navigator = mw.html.create('div')
end
if previousval or nextval then
navigator
:addClass(classes)
:css(style)
:tag('div')
:addClass('prev_bloc')
:wikitext(previousval)
:done()
:tag('div')
:addClass('next_bloc')
:wikitext(nextval)
:done()
:allDone()
return navigator
end
return nil
end
p.buildNavigator = p.buildnavigator
function p.buildimages(params)
local images = {}
local upright, link, caption, classe, 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 j, k in ipairs(params.imageparameters) do
table.insert(images, localdata[k])
end
-- Images de Wikidata
local iswikidataimage, iswikidatacaption = false
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) == 'table' then
wdq.entity = wdq.entity or localdata.item
wdq.numval = wdq.numval or params.numval or 1
images = wd.getClaims(wdq)
end
if type(wdq) == 'function' then
images = params.wikidata()
if type(images) == 'string' then
return images
end --c'est probablement une erreur dans la requête => afficher le message
end
if (not images) then
images = {}
end
if type(images[1]) == 'table' then
for i, image in pairs(images) do
if image.mainsnak.snaktype ~= 'value' then
return
end
if #images == 1 then -- si une seule image, on utilise la légende (si deux plusieurs images, comment mettre en forme ?)
caption = wd.getFormattedQualifiers(images[i], {'P2096'}, {isinlang = wikiLang})
caption = caption or wd.getFormattedQualifiers(images[i], {'P805'}) --"affirmation détaillée dans"
if params.datecaption and not caption then --légende construite à partir de la date de l'image et d'une table de paramètres spécifiques
local dcparams = params.datecaption
if type(dcparams) ~= 'table' then dcparams = {} end
local numdate = wd.compare.get_claim_date(images[i])
local endclaims = wd.getClaims({entity = wdq.entity, property = dcparams.endproperty, numval = 1})
local endnumdate = ( endclaims and wd.compare.get_claim_date(endclaims[1]) ) or math.huge
if numdate <= endnumdate then
caption = wd.getFormattedDate(images[i],
{precision = dcparams.precision or 'year',
linktopic = dcparams.linktopic or '-',
withpreposition = true})
if caption then
if dcparams.prefix then caption = dcparams.prefix .. ' ' .. caption end
caption = require('Module:Linguistique').ucfirst(caption) .. '.'
addMaintenanceCat("Infobox avec une légende automatique à partir de la date de l'image")
end
end
end
iswikidatacaption = caption ~= nil
end
images[i] = image.mainsnak.datavalue.value
iswikidataimage = true
maintenance = maintenance .. wd.addTrackingCat(image.mainsnak.property)
end
end
end
end
if #images == 0 and getValue(params.captionparameter) ~= nil then
addMaintenanceCat("Infobox avec une légende locale sans image")
end
-- Images par défaut
if #images == 0 then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
if params.defaultimages then
images = params.defaultimages
if type(images) == 'string' then
images = {images}
end
upright = params.defaultimageupright
caption = params.defaultimagecaption
link = params.defaultimagelink
classe = params.defaultimageclass
if not classe and ( images[1] == 'Defaut.svg' or images[1] == 'Defaut 2.svg' ) then
classe = 'skin-invert-image'
end
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
classe = classe or getValue( params.classparameter) or params.defaultclass
alt = alt or getValue( params.altparameter) or params.defaultalt
if iswikidataimage and not iswikidatacaption and getValue(params.captionparameter) ~= nil then
addMaintenanceCat("Infobox avec une légende locale et une image sur Wikidata")
end
-- taille avec "size" (obsolète)
size = size or getValue(params.sizeparameter) or params.defaultsize -- deprecated
if size then
local sizevalue = size:gsub('px$', '')
local widthonly = mw.ustring.gsub(sizevalue, 'x.*', '')
widthonly = tonumber(widthonly)
if type(widthonly) ~= 'number' or widthonly > 280 then
addMaintenanceCat("Infobox avec une image trop grande")
end
if tonumber(sizevalue) then
size = tostring( tonumber(sizevalue) ) .. 'px'
end
end
if tonumber(upright) then
upright = tostring( tonumber(upright) )
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 .. '|frameless'
if size then
imagesString = imagesString .. '|' .. size -- not a mistake, parameter is unnamed
end
if classe then
imagesString = imagesString .. '|class=' .. classe
end
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 and not size then
imagesString = imagesString .. '|upright=' .. ( 1 / #images )
end
if image:sub(-4):lower() == '.svg' then
imagesString = imagesString .. '|lang=' .. wikiLang
end
imagesString = imagesString .. ']]'
if usedImages[image] then
addMaintenanceCat('Infobox avec plusieurs images identiques')
end
usedImages[image] = true
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 = p.separator(params)
end
return mw.html.create('div')
:node(image)
:node(captionobj)
:node(separator)
:done()
end
p.buildImages = p.buildimages
function p.buildtext(params)
local classes = 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 == '-' then
return
end
if not text then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
return nil
end
-- séparateur
local separator
if params.separator then
separator = p.separator(params)
end
local formattedtext = mw.html.create('p')
:addClass(classes)
:css(style)
:wikitext(text)
:node(separator)
:done()
return formattedtext
end
p.buildText = p.buildtext
function p.buildrow(params)
local classes = params.class or ''
local style = params.style or {}
local valueClass = params.valueClass or ''
local valueStyle = params.valueStyle or {}
local value, gendernum = getValue(params.value, params)
if(type(gendernum) == 'number') then
if(gendernum > 1) then
gendernum = 'p'
else
gendernum = 's'
end
end
if type(params.wikidata) == 'table' then
params.wikidata.wikidatalang = localdata.wikidatalang
if (value == valueexpl) then
value = nil
params.wikidata.expl = false
end
end
if (not value) then
value, gendernum = getWikidataValue(params, 'wikidata')
end
if not value then
value = params.defaultvalue
end
if value == '-' then
return nil
end
if not gendernum then
gendernum = 's' --singulier indéfini
end
if not value then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
return nil
end
local label = params.label
if type(label) == 'string' then label = {default = label} end
if type(label) == 'table' then -- Accord en genre et en nombre
local onlynum = {default = 'default', s = 's', ms = 's', fs = 's', p = 'p', mp = 'p', fp = 'p', mixtep = 'p'} -- Accord seulement en nombre par défaut
label['s'] = label['s'] or params.singularlabel or label['default'] or label['ms']
label['p'] = label['p'] or params.plurallabel or label['mp']
label = label[gendernum] or label[onlynum[gendernum]] or label.default
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)
:addClass(valueClass)
:css(valueStyle)
: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(classes)
: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 styleI = {}
local colspan = '2'
styleI['padding'] = '1px'
local cellI = mw.html.create('td')
:attr({colspan = colspan})
:attr({align = 'center'})
:css(styleI)
local styleT = {
margin = '0',
['background-color'] = 'transparent',
color = 'inherit',
width = '100%'
}
local 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 = '[[Fichier:Arrleft.svg|13px|alt=Précédent|link=]]'
local arrowRight = '[[Fichier:Arrright.svg|13px|alt=Suivant|link=]]'
if color ~= 'default' then
style['background-color'] = color
end
local styleTrans = {}
local values = params.value
local before = values['before']
local center = values['center']
local after = values['after']
local widthCenter
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 classes = 'row1col ' .. (params.class or '')
local style = {}
if params.color == 'secondcolor' then
style['background-color'] = secondcolor
elseif params.color and params.color ~= '' then
style['background-color'] = params.color
end
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(classes)
:css(style)
:node(formattedlabel)
:done()
return row
end
p.buildRow1Col = p.buildrow1col
function p.buildtable(params)
local tab = mw.html.create('table'):addClass(params.classes):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 = l(localdata, localdata.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 ' .. type(l))
else
i = i + 1
end
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)
end
tab:allDone()
return tab
end
p.buildTable = p.buildtable
--------------------------------------------------------------------------------
-- Fonction créant une ligne d’en-tête à 2 colonnes (subheader2col)
--------------------------------------------------------------------------------
function p.buildSubheader2col(params)
local row = mw.html.create('tr')
local col1 = mw.html.create('th')
:attr('scope', 'col')
:wikitext(params.col1)
:done()
local col2 = mw.html.create('th')
:attr('scope', 'col')
:wikitext(params.col2)
:done()
row:node(col1)
row:node(col2)
row:done()
return row
end
function p.buildinvalidblock(args)
addMaintenanceCat(i18n['default cat'])
local text = ''
if type(args) ~= 'table' then
text = "Les blocs d'infobox doivent être des tables"
else
text = i18n["invalid block type"] .. ' : ' .. (args.type or '??')
end
return text
end
p.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("Infobox avec une 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
end
local newparams = {maplist = maplist, pointtype = pointtype, maptype = maptype, width = width, item = localdata.item, pointtable = pointtable, globe = globe, marker=params.marker, default_zoom=params.default_zoom, ids = params.ids, markercolor = params.markercolor, shapecolor = params.shapecolor }
if params.params and type(params.params) == 'table' then -- paramètres additionnels
for i, j in pairs(params.params) do
newparams[i] = j
end
end
return require('Module:Carte').multimap(newparams)
end
p.buildMap = p.buildmap
function p.buildexternaltext(params)
local value = getValue(params.value)
if value and (type(value) == 'string') then
externaltext = externaltext .. value
end
end
p.buildExternalText = p.buildexternaltext
function p.buildfooter(params)
if not params then
params = {}
end
local classes = 'navbar noprint bordered navigation-not-searchable ' .. (params.class or '')
local style = params.style or {}
if not style['border-top'] and maincolor then
style['border-top'] = '1px solid' .. maincolor
end
local backlinkstr = '[' .. tostring( mw.uri.fullUrl( page.prefixedText, 'veaction=edit§ion=0' ) ) .. ' ' .. i18n['edit'] .. ']'
.. ' - [' .. tostring( mw.uri.fullUrl( page.prefixedText, 'action=edit§ion=0' ) ) .. ' ' .. i18n['edit code'] .. ']'
local itemlinkstr
if localdata.item and localdata.item ~= '-' then
itemlinkstr = '[[d:' .. localdata.item .. '|' .. i18n['edit item'] .. ']]'
end
local editstr = backlinkstr
if itemlinkstr then
editstr = editstr .. ' - ' .. itemlinkstr
end
local editlinkspan = mw.html.create('span')
:css({['text-align'] = "left"})
:addClass('plainlinks')
:wikitext(editstr)
:done()
local doclinkstr = '[[Fichier:Info Simple.svg|12px|link=' .. localdata.templatename .. '|' .. i18n['see doc'] .. ']]'
-- si ce lien ne marche pas toujours, il faut ajouter un variable pour le nom de l'infobox récupéré par le frame
local doclinkspan = mw.html.create('span')
:css({['text-align'] = "right"})
:wikitext(doclinkstr)
:done()
local footer = mw.html.create('p')
:addClass(classes)
:css(style)
:node(editlinkspan)
:node(doclinkspan)
return footer
end
p.buildFooter = p.buildfooter
function p.buildblock(block)
if type(block) == 'function' then
block = block( localdata )
end
local blocktypes = { -- list of functions for block buildings
['invalid'] = p.buildinvalidblock,
['external text'] = p.buildexternaltext,
['footer'] = p.buildfooter,
['images'] = p.buildimages,
['map']= p.buildmap,
['mixed'] = p.buildrow,
['navigator'] = p.buildnavigator,
['table'] = p.buildtable,
['row'] = p.buildrow,
['row1col'] = p.buildrow1col,
['succession'] = p.buildsuccession,
['text'] = p.buildtext,
['title'] = p.buildtitle,
['subheader2col'] = p.buildSubheader2col,
}
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 = require( 'Module:Infobox/Localdata' )
if type( localdata.item ) == 'table' then
localdata.item = localdata.item.id
end
-- assign rank to the infobox, "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)
local pagetitle = page.prefixedText
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
-- maintenance categories given by the module page
if moduledata.categories then
for i, j in pairs(moduledata.categories) do
if (type(j) == 'string') then addMaintenanceCat(j) end
if (type(j) == 'table') then addMaintenanceCat(j[1],j[2]) end
end
end
-- defines main color
maincolor = localdata['couleur infobox'] or localdata['couleur boîte'] or localdata['couleur boite'] or moduledata.maincolor
secondcolor = moduledata.secondcolor
thirdcolor = localdata['texte noir'] or localdata['couleur texte'] or moduledata.thirdcolor
if maincolor and ( #maincolor == 6 or #maincolor == 3 ) and maincolor:match( '^%x+$' ) then
maincolor = '#' .. maincolor
end
if thirdcolor and (thirdcolor == 'non' or thirdcolor == 'false') then
thirdcolor = '#fff'
end
-- classes
local classes = mw.getCurrentFrame():expandTemplate{ title = 'Classes début infobox', args = { version = '3' } }
classes = classes .. ' large ' .. (moduledata.class or '')
-- style
if moduledata.style then addMaintenanceCat("Infobox en Lua avec un style CSS spécifique") end
local style = moduledata.style or {}
-- templatestyles
local templatestyles = ''
if moduledata.templatestyles then
templatestyles = templatestyles .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = moduledata.templatestyles} }
end
-- build infobox
infobox :addClass(classes)
:css(style)
for i, j in pairs( moduledata.parts ) do
infobox:node( p.buildblock(j) )
end
infobox :node(p.buildfooter(moduledata.footer))
:done()
return templatestyles .. tostring(infobox) .. externaltext, maintenance
end
return p
irrxfhsl6w4n5ho54mkctsy1rcxnz7a
888718
888717
2026-10-06T21:18:18Z
Kitanago
19629
koreksyon
888718
Scribunto
text/plain
-- luacheck: globals mw, no max line length
local p = {}
local wikiLang = 'ht'
local localdata = {}-- données concernant les paramètres passés au modèle
-- données concernant la page où est affichée l'infobox
local page = mw.title.getCurrentTitle()
local maincolor, secondcolor, thirdcolor
-- l'objet principal à retourner
local infobox = mw.html.create('div')
-- objets secondaires à retourner
local maintenance = '' -- chaîne retournée avec le module : cats de maintenance
local externaltext = '' -- par exemple coordonnées en titre
-- modules importés
local wd = require 'Module:Wikidata'
local yesno = require 'Module:Yesno'
local valueexpl = wd.translate("activate-query")
-- maintenance des images dupliquées
local usedImages = {}
local i18n = {
['see doc'] = 'Documentation du modèle',
['edit'] = 'modifier',
['edit code'] = 'modifier le code',
['edit item'] = 'modifier Wikidata',
['tracking cat'] = "Page utilisant des données de Wikidata",
['invalid block type'] = "Bloc de données invalide dans le module d'infobox",
['default cat'] = "Maintenance des infobox",
}
local function expandQuery(query)
if not query.entity then
query.entity = localdata.item
end
if not query.conjtype then
query.conjtype = 'comma'
end
local claims = wd.getClaims(query)
if (not claims) then
return nil
end
return wd.formatAndCat(query), wd.getgendernum(claims) -- valeur et code indiquant le genre/nombre pour accorder le libellé
end
local function getWikidataValue(params, wikidataparam)
-- 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 then
return nil
end
if params.blockers then -- blockers are local parameters that disable the wikidata query
local blockers = params.blockers
if (type(blockers) == 'string') then
blockers = {blockers}
end
for i, blocker in ipairs(blockers) do
if localdata[blocker] then
return nil
end
end
end
local v, valgendernum -- la valeur à retourner, et le genre/nombre de de valeurs (pour l'accord grammatical)
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 = 'wikidata'
end
if params.property and not params[wikidataparam] then params[wikidataparam] = {property = params.property} end
if params[wikidataparam] then
if type(params[wikidataparam]) == 'function' then
v, valgendernum = params[wikidataparam](localdata.item)
elseif type(params[wikidataparam]) == 'table' then
v, valgendernum = expandQuery(params[wikidataparam])
else
v, valgendernum = params[wikidataparam]
end
end
if not v then
return nil
end
if(type(valgendernum) == 'number') then
if(valgendernum > 1) then
valgendernum = 'p'
else
valgendernum = 's'
end
end
return v, valgendernum
end
local function getValue(val, params)
if type(val) == 'string' then
return localdata[val]
elseif type(val) == 'function' then
return val(localdata, localdata.item, params)
elseif type(val) == 'table' 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]
end
end
end
end
local function addMaintenanceCat(cat, sortkey)
if page.namespace ~= 0 then
return ''
end
if cat then
local sortkeycode
if sortkey then sortkeycode = '|' .. sortkey else sortkeycode = '' end
maintenance = maintenance .. '[[Category:'.. cat .. sortkeycode .. ']]'
end
end
function p.separator(params)
local classes = params['separator classes']
local style = params['separator style'] or {}
style['background-color'] = style['background-color'] or maincolor
if style['background-color'] then
style.color = 'var( --color-base )'
end
return mw.html.create('hr'):addClass( classes ):css( style )
end
--[=[
Construit le code du bloc de titre de l'infobox
Paramètres (liste partielle) :
- value : Moyen d'obtenir le titre via getValue (nom de paramètre de modèle ou fonction).
- textdefaultvalue : Valeur par défaut du titre.
- icon : Pictogramme d'infobox (voir [[Projet:Infobox/Pictogramme]]).
- italic : Indique si le titre doit être affiché en italique.
Si italic=true, le paramètre "titre en italique" de l'infobox peut forcer la désactivation.
- setdisplaytitle : Indique si le titre de l'article doit être mis en forme comme celui de l'infobox.
Si setdisplaytitle=true, le paramètre "titre article en italique" de l'infobox peut forcer la désactivation.
]=]
function p.buildtitle(params)
local text = getValue(params.value, params) or params.textdefaultvalue or getWikidataValue(params) or page.prefixedText
local lang = localdata['langue du titre'] or ''
if lang ~= '' then
local langueFunction = require( 'Module:Langue' ).langue
text = langueFunction( { lang, text } )
end
local subtext = getValue(params.subtitle) or getWikidataValue(params, 'wikidatasubtitle') or params.subtitledefaultvalue
if subtext and (subtext ~= text) then
text = text .. '<br><small>' .. subtext .. '</small>'
end
local icon = params.icon or ''
if icon ~= '' and icon ~= 'defaut' then
text = text .. mw.getCurrentFrame():extensionTag('templatestyles', '', {src = 'Infobox/Pictogramme/' .. mw.text.trim(icon) .. '.css'})
if not params.large then
icon = 'icon ' .. icon
end
end
local classes = 'entete ' .. icon
local italic = params.italic and yesno(localdata['titre en italique'] or '', true, true)
if italic then
classes = classes .. ' italique'
end
if params.setdisplaytitle and yesno(localdata['titre article en italique'] or '', true, true) then
local formatTitleModule = require( 'Module:Formatage du titre' )
text = text .. formatTitleModule.setDisplayTitle{ args = {
lang = lang,
italic = italic,
options = 'noreplace',
} }
end
-- 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) do
style[i] = j
end
end
local title = mw.html.create('div')
:addClass(classes)
:css(style)
:tag('div')
:wikitext(text)
:allDone()
return title
end
p.buildTitle = p.buildtitle
function p.buildnavigator(params)
-- définition du style
local classes = "overflow infobox-navigateur " .. (params.class or '')
local style = params.style or {}
if params.separated then -- options pour ajouter une ligne de séparation au dessus
classes = classes .. ' bordered'
if maincolor then
style['border-top'] = '1px solid' .. maincolor
end
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')
if previousval == '-' then previousval = nil end
if nextval == '-' then nextval = nil end
local navigator
if params.inner then -- pour celles qui sont à l'intérieur d'une table
navigator = mw.html.create('tr'):tag('th'):attr('colspan', 2)
style['font-weight'] = style['font-weight'] or 'normal'
else
navigator = mw.html.create('div')
end
if previousval or nextval then
navigator
:addClass(classes)
:css(style)
:tag('div')
:addClass('prev_bloc')
:wikitext(previousval)
:done()
:tag('div')
:addClass('next_bloc')
:wikitext(nextval)
:done()
:allDone()
return navigator
end
return nil
end
p.buildNavigator = p.buildnavigator
function p.buildimages(params)
local images = {}
local upright, link, caption, classe, 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 j, k in ipairs(params.imageparameters) do
table.insert(images, localdata[k])
end
-- Images de Wikidata
local iswikidataimage, iswikidatacaption = false
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) == 'table' then
wdq.entity = wdq.entity or localdata.item
wdq.numval = wdq.numval or params.numval or 1
images = wd.getClaims(wdq)
end
if type(wdq) == 'function' then
images = params.wikidata()
if type(images) == 'string' then
return images
end --c'est probablement une erreur dans la requête => afficher le message
end
if (not images) then
images = {}
end
if type(images[1]) == 'table' then
for i, image in pairs(images) do
if image.mainsnak.snaktype ~= 'value' then
return
end
if #images == 1 then -- si une seule image, on utilise la légende (si deux plusieurs images, comment mettre en forme ?)
caption = wd.getFormattedQualifiers(images[i], {'P2096'}, {isinlang = wikiLang})
caption = caption or wd.getFormattedQualifiers(images[i], {'P805'}) --"affirmation détaillée dans"
if params.datecaption and not caption then --légende construite à partir de la date de l'image et d'une table de paramètres spécifiques
local dcparams = params.datecaption
if type(dcparams) ~= 'table' then dcparams = {} end
local numdate = wd.compare.get_claim_date(images[i])
local endclaims = wd.getClaims({entity = wdq.entity, property = dcparams.endproperty, numval = 1})
local endnumdate = ( endclaims and wd.compare.get_claim_date(endclaims[1]) ) or math.huge
if numdate <= endnumdate then
caption = wd.getFormattedDate(images[i],
{precision = dcparams.precision or 'year',
linktopic = dcparams.linktopic or '-',
withpreposition = true})
if caption then
if dcparams.prefix then caption = dcparams.prefix .. ' ' .. caption end
caption = require('Module:Linguistique').ucfirst(caption) .. '.'
addMaintenanceCat("Infobox avec une légende automatique à partir de la date de l'image")
end
end
end
iswikidatacaption = caption ~= nil
end
images[i] = image.mainsnak.datavalue.value
iswikidataimage = true
maintenance = maintenance .. wd.addTrackingCat(image.mainsnak.property)
end
end
end
end
if #images == 0 and getValue(params.captionparameter) ~= nil then
addMaintenanceCat("Infobox avec une légende locale sans image")
end
-- Images par défaut
if #images == 0 then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
if params.defaultimages then
images = params.defaultimages
if type(images) == 'string' then
images = {images}
end
upright = params.defaultimageupright
caption = params.defaultimagecaption
link = params.defaultimagelink
classe = params.defaultimageclass
if not classe and ( images[1] == 'Defaut.svg' or images[1] == 'Defaut 2.svg' ) then
classe = 'skin-invert-image'
end
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
classe = classe or getValue( params.classparameter) or params.defaultclass
alt = alt or getValue( params.altparameter) or params.defaultalt
if iswikidataimage and not iswikidatacaption and getValue(params.captionparameter) ~= nil then
addMaintenanceCat("Infobox avec une légende locale et une image sur Wikidata")
end
-- taille avec "size" (obsolète)
size = size or getValue(params.sizeparameter) or params.defaultsize -- deprecated
if size then
local sizevalue = size:gsub('px$', '')
local widthonly = mw.ustring.gsub(sizevalue, 'x.*', '')
widthonly = tonumber(widthonly)
if type(widthonly) ~= 'number' or widthonly > 280 then
addMaintenanceCat("Infobox avec une image trop grande")
end
if tonumber(sizevalue) then
size = tostring( tonumber(sizevalue) ) .. 'px'
end
end
if tonumber(upright) then
upright = tostring( tonumber(upright) )
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 .. '[[Fichye:' .. image .. '|frameless'
if size then
imagesString = imagesString .. '|' .. size -- not a mistake, parameter is unnamed
end
if classe then
imagesString = imagesString .. '|class=' .. classe
end
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 and not size then
imagesString = imagesString .. '|upright=' .. ( 1 / #images )
end
if image:sub(-4):lower() == '.svg' then
imagesString = imagesString .. '|lang=' .. wikiLang
end
imagesString = imagesString .. ']]'
if usedImages[image] then
addMaintenanceCat('Infobox avec plusieurs images identiques')
end
usedImages[image] = true
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 = p.separator(params)
end
return mw.html.create('div')
:node(image)
:node(captionobj)
:node(separator)
:done()
end
p.buildImages = p.buildimages
function p.buildtext(params)
local classes = 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 == '-' then
return
end
if not text then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
return nil
end
-- séparateur
local separator
if params.separator then
separator = p.separator(params)
end
local formattedtext = mw.html.create('p')
:addClass(classes)
:css(style)
:wikitext(text)
:node(separator)
:done()
return formattedtext
end
p.buildText = p.buildtext
function p.buildrow(params)
local classes = params.class or ''
local style = params.style or {}
local valueClass = params.valueClass or ''
local valueStyle = params.valueStyle or {}
local value, gendernum = getValue(params.value, params)
if(type(gendernum) == 'number') then
if(gendernum > 1) then
gendernum = 'p'
else
gendernum = 's'
end
end
if type(params.wikidata) == 'table' then
params.wikidata.wikidatalang = localdata.wikidatalang
if (value == valueexpl) then
value = nil
params.wikidata.expl = false
end
end
if (not value) then
value, gendernum = getWikidataValue(params, 'wikidata')
end
if not value then
value = params.defaultvalue
end
if value == '-' then
return nil
end
if not gendernum then
gendernum = 's' --singulier indéfini
end
if not value then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
return nil
end
local label = params.label
if type(label) == 'string' then label = {default = label} end
if type(label) == 'table' then -- Accord en genre et en nombre
local onlynum = {default = 'default', s = 's', ms = 's', fs = 's', p = 'p', mp = 'p', fp = 'p', mixtep = 'p'} -- Accord seulement en nombre par défaut
label['s'] = label['s'] or params.singularlabel or label['default'] or label['ms']
label['p'] = label['p'] or params.plurallabel or label['mp']
label = label[gendernum] or label[onlynum[gendernum]] or label.default
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="[Afiche]/[Kache]", style="border: none; padding: 0;"})
:node(formattedvalue)
end
formattedvalue = mw.html.create('td')
:node(formattedvalue)
:addClass(valueClass)
:css(valueStyle)
: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(classes)
: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 styleI = {}
local colspan = '2'
styleI['padding'] = '1px'
local cellI = mw.html.create('td')
:attr({colspan = colspan})
:attr({align = 'center'})
:css(styleI)
local styleT = {
margin = '0',
['background-color'] = 'transparent',
color = 'inherit',
width = '100%'
}
local 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 = '[[Fichye:Arrleft.svg|13px|alt=Anvan|link=]]'
local arrowRight = '[[Fichye:Arrright.svg|13px|alt=Aprè|link=]]'
if color ~= 'default' then
style['background-color'] = color
end
local styleTrans = {}
local values = params.value
local before = values['before']
local center = values['center']
local after = values['after']
local widthCenter
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 classes = 'row1col ' .. (params.class or '')
local style = {}
if params.color == 'secondcolor' then
style['background-color'] = secondcolor
elseif params.color and params.color ~= '' then
style['background-color'] = params.color
end
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(classes)
:css(style)
:node(formattedlabel)
:done()
return row
end
p.buildRow1Col = p.buildrow1col
function p.buildtable(params)
local tab = mw.html.create('table'):addClass(params.classes):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 = l(localdata, localdata.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 ' .. type(l))
else
i = i + 1
end
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)
end
tab:allDone()
return tab
end
p.buildTable = p.buildtable
--------------------------------------------------------------------------------
-- Fonction créant une ligne d’en-tête à 2 colonnes (subheader2col)
--------------------------------------------------------------------------------
function p.buildSubheader2col(params)
local row = mw.html.create('tr')
local col1 = mw.html.create('th')
:attr('scope', 'col')
:wikitext(params.col1)
:done()
local col2 = mw.html.create('th')
:attr('scope', 'col')
:wikitext(params.col2)
:done()
row:node(col1)
row:node(col2)
row:done()
return row
end
function p.buildinvalidblock(args)
addMaintenanceCat(i18n['default cat'])
local text = ''
if type(args) ~= 'table' then
text = "Les blocs d'infobox doivent être des tables"
else
text = i18n["invalid block type"] .. ' : ' .. (args.type or '??')
end
return text
end
p.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("Infobox avec une 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
end
local newparams = {maplist = maplist, pointtype = pointtype, maptype = maptype, width = width, item = localdata.item, pointtable = pointtable, globe = globe, marker=params.marker, default_zoom=params.default_zoom, ids = params.ids, markercolor = params.markercolor, shapecolor = params.shapecolor }
if params.params and type(params.params) == 'table' then -- paramètres additionnels
for i, j in pairs(params.params) do
newparams[i] = j
end
end
return require('Module:Carte').multimap(newparams)
end
p.buildMap = p.buildmap
function p.buildexternaltext(params)
local value = getValue(params.value)
if value and (type(value) == 'string') then
externaltext = externaltext .. value
end
end
p.buildExternalText = p.buildexternaltext
function p.buildfooter(params)
if not params then
params = {}
end
local classes = 'navbar noprint bordered navigation-not-searchable ' .. (params.class or '')
local style = params.style or {}
if not style['border-top'] and maincolor then
style['border-top'] = '1px solid' .. maincolor
end
local backlinkstr = '[' .. tostring( mw.uri.fullUrl( page.prefixedText, 'veaction=edit§ion=0' ) ) .. ' ' .. i18n['edit'] .. ']'
.. ' - [' .. tostring( mw.uri.fullUrl( page.prefixedText, 'action=edit§ion=0' ) ) .. ' ' .. i18n['edit code'] .. ']'
local itemlinkstr
if localdata.item and localdata.item ~= '-' then
itemlinkstr = '[[d:' .. localdata.item .. '|' .. i18n['edit item'] .. ']]'
end
local editstr = backlinkstr
if itemlinkstr then
editstr = editstr .. ' - ' .. itemlinkstr
end
local editlinkspan = mw.html.create('span')
:css({['text-align'] = "left"})
:addClass('plainlinks')
:wikitext(editstr)
:done()
local doclinkstr = '[[Fichye:Info Simple.svg|12px|link=' .. localdata.templatename .. '|' .. i18n['see doc'] .. ']]'
-- si ce lien ne marche pas toujours, il faut ajouter un variable pour le nom de l'infobox récupéré par le frame
local doclinkspan = mw.html.create('span')
:css({['text-align'] = "right"})
:wikitext(doclinkstr)
:done()
local footer = mw.html.create('p')
:addClass(classes)
:css(style)
:node(editlinkspan)
:node(doclinkspan)
return footer
end
p.buildFooter = p.buildfooter
function p.buildblock(block)
if type(block) == 'function' then
block = block( localdata )
end
local blocktypes = { -- list of functions for block buildings
['invalid'] = p.buildinvalidblock,
['external text'] = p.buildexternaltext,
['footer'] = p.buildfooter,
['images'] = p.buildimages,
['map']= p.buildmap,
['mixed'] = p.buildrow,
['navigator'] = p.buildnavigator,
['table'] = p.buildtable,
['row'] = p.buildrow,
['row1col'] = p.buildrow1col,
['succession'] = p.buildsuccession,
['text'] = p.buildtext,
['title'] = p.buildtitle,
['subheader2col'] = p.buildSubheader2col,
}
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 = require( 'Module:Infobox/Localdata' )
if type( localdata.item ) == 'table' then
localdata.item = localdata.item.id
end
-- assign rank to the infobox, "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)
local pagetitle = page.prefixedText
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
-- maintenance categories given by the module page
if moduledata.categories then
for i, j in pairs(moduledata.categories) do
if (type(j) == 'string') then addMaintenanceCat(j) end
if (type(j) == 'table') then addMaintenanceCat(j[1],j[2]) end
end
end
-- defines main color
maincolor = localdata['couleur infobox'] or localdata['couleur boîte'] or localdata['couleur boite'] or moduledata.maincolor
secondcolor = moduledata.secondcolor
thirdcolor = localdata['texte noir'] or localdata['couleur texte'] or moduledata.thirdcolor
if maincolor and ( #maincolor == 6 or #maincolor == 3 ) and maincolor:match( '^%x+$' ) then
maincolor = '#' .. maincolor
end
if thirdcolor and (thirdcolor == 'non' or thirdcolor == 'false') then
thirdcolor = '#fff'
end
-- classes
local classes = mw.getCurrentFrame():expandTemplate{ title = 'Classes début infobox', args = { version = '3' } }
classes = classes .. ' large ' .. (moduledata.class or '')
-- style
if moduledata.style then addMaintenanceCat("Infobox en Lua avec un style CSS spécifique") end
local style = moduledata.style or {}
-- templatestyles
local templatestyles = ''
if moduledata.templatestyles then
templatestyles = templatestyles .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = moduledata.templatestyles} }
end
-- build infobox
infobox :addClass(classes)
:css(style)
for i, j in pairs( moduledata.parts ) do
infobox:node( p.buildblock(j) )
end
infobox :node(p.buildfooter(moduledata.footer))
:done()
return templatestyles .. tostring(infobox) .. externaltext, maintenance
end
return p
8ydt1ixka46643zwpldu8xrbk6i72il
888720
888718
2026-10-06T21:29:17Z
Kitanago
19629
version ht
888720
Scribunto
text/plain
-- luacheck: globals mw, no max line length
local p = {}
local wikiLang = 'ht'
local localdata = {}-- données concernant les paramètres passés au modèle
-- données concernant la page où est affichée l'infobox
local page = mw.title.getCurrentTitle()
local maincolor, secondcolor, thirdcolor
-- l'objet principal à retourner
local infobox = mw.html.create('div')
-- objets secondaires à retourner
local maintenance = '' -- chaîne retournée avec le module : cats de maintenance
local externaltext = '' -- par exemple coordonnées en titre
-- modules importés
local wd = require 'Module:Wikidata'
local yesno = require 'Module:Yesno'
local valueexpl = wd.translate("activate-query")
-- maintenance des images dupliquées
local usedImages = {}
local i18n = {
['see doc'] = 'Dokimantasyon modèl la',
['edit'] = 'modifye',
['edit code'] = 'modifye kòd la',
['edit item'] = 'modifye Wikidata',
['tracking cat'] = "Paj ki itilize done Wikidata",
['invalid block type'] = "Blòk done ki pa valid nan modil infobox la",
['default cat'] = "Antretyen Infobox",
}
local function expandQuery(query)
if not query.entity then
query.entity = localdata.item
end
if not query.conjtype then
query.conjtype = 'comma'
end
local claims = wd.getClaims(query)
if (not claims) then
return nil
end
return wd.formatAndCat(query), wd.getgendernum(claims) -- valeur et code indiquant le genre/nombre pour accorder le libellé
end
local function getWikidataValue(params, wikidataparam)
-- 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 then
return nil
end
if params.blockers then -- blockers are local parameters that disable the wikidata query
local blockers = params.blockers
if (type(blockers) == 'string') then
blockers = {blockers}
end
for i, blocker in ipairs(blockers) do
if localdata[blocker] then
return nil
end
end
end
local v, valgendernum -- la valeur à retourner, et le genre/nombre de de valeurs (pour l'accord grammatical)
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 = 'wikidata'
end
if params.property and not params[wikidataparam] then params[wikidataparam] = {property = params.property} end
if params[wikidataparam] then
if type(params[wikidataparam]) == 'function' then
v, valgendernum = params[wikidataparam](localdata.item)
elseif type(params[wikidataparam]) == 'table' then
v, valgendernum = expandQuery(params[wikidataparam])
else
v, valgendernum = params[wikidataparam]
end
end
if not v then
return nil
end
if(type(valgendernum) == 'number') then
if(valgendernum > 1) then
valgendernum = 'p'
else
valgendernum = 's'
end
end
return v, valgendernum
end
local function getValue(val, params)
if type(val) == 'string' then
return localdata[val]
elseif type(val) == 'function' then
return val(localdata, localdata.item, params)
elseif type(val) == 'table' 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]
end
end
end
end
local function addMaintenanceCat(cat, sortkey)
if page.namespace ~= 0 then
return ''
end
if cat then
local sortkeycode
if sortkey then sortkeycode = '|' .. sortkey else sortkeycode = '' end
maintenance = maintenance .. '[[Kategori:'.. cat .. sortkeycode .. ']]'
end
end
function p.separator(params)
local classes = params['separator classes']
local style = params['separator style'] or {}
style['background-color'] = style['background-color'] or maincolor
if style['background-color'] then
style.color = 'var( --color-base )'
end
return mw.html.create('hr'):addClass( classes ):css( style )
end
--[=[
Construit le code du bloc de titre de l'infobox
Paramètres (liste partielle) :
- value : Moyen d'obtenir le titre via getValue (nom de paramètre de modèle ou fonction).
- textdefaultvalue : Valeur par défaut du titre.
- icon : Pictogramme d'infobox (voir [[Projet:Infobox/Pictogramme]]).
- italic : Indique si le titre doit être affiché en italique.
Si italic=true, le paramètre "titre en italique" de l'infobox peut forcer la désactivation.
- setdisplaytitle : Indique si le titre de l'article doit être mis en forme comme celui de l'infobox.
Si setdisplaytitle=true, le paramètre "titre article en italique" de l'infobox peut forcer la désactivation.
]=]
function p.buildtitle(params)
local text = getValue(params.value, params) or params.textdefaultvalue or getWikidataValue(params) or page.prefixedText
local lang = localdata['langue du titre'] or ''
if lang ~= '' then
local langueFunction = require( 'Module:Langue' ).langue
text = langueFunction( { lang, text } )
end
local subtext = getValue(params.subtitle) or getWikidataValue(params, 'wikidatasubtitle') or params.subtitledefaultvalue
if subtext and (subtext ~= text) then
text = text .. '<br><small>' .. subtext .. '</small>'
end
local icon = params.icon or ''
if icon ~= '' and icon ~= 'defaut' then
text = text .. mw.getCurrentFrame():extensionTag('templatestyles', '', {src = 'Infobox/Pictogramme/' .. mw.text.trim(icon) .. '.css'})
if not params.large then
icon = 'icon ' .. icon
end
end
local classes = 'entete ' .. icon
local italic = params.italic and yesno(localdata['titre en italique'] or '', true, true)
if italic then
classes = classes .. ' italique'
end
if params.setdisplaytitle and yesno(localdata['titre article en italique'] or '', true, true) then
local formatTitleModule = require( 'Module:Formatage du titre' )
text = text .. formatTitleModule.setDisplayTitle{ args = {
lang = lang,
italic = italic,
options = 'noreplace',
} }
end
-- 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) do
style[i] = j
end
end
local title = mw.html.create('div')
:addClass(classes)
:css(style)
:tag('div')
:wikitext(text)
:allDone()
return title
end
p.buildTitle = p.buildtitle
function p.buildnavigator(params)
-- définition du style
local classes = "overflow infobox-navigateur " .. (params.class or '')
local style = params.style or {}
if params.separated then -- options pour ajouter une ligne de séparation au dessus
classes = classes .. ' bordered'
if maincolor then
style['border-top'] = '1px solid' .. maincolor
end
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')
if previousval == '-' then previousval = nil end
if nextval == '-' then nextval = nil end
local navigator
if params.inner then -- pour celles qui sont à l'intérieur d'une table
navigator = mw.html.create('tr'):tag('th'):attr('colspan', 2)
style['font-weight'] = style['font-weight'] or 'normal'
else
navigator = mw.html.create('div')
end
if previousval or nextval then
navigator
:addClass(classes)
:css(style)
:tag('div')
:addClass('prev_bloc')
:wikitext(previousval)
:done()
:tag('div')
:addClass('next_bloc')
:wikitext(nextval)
:done()
:allDone()
return navigator
end
return nil
end
p.buildNavigator = p.buildnavigator
function p.buildimages(params)
local images = {}
local upright, link, caption, classe, 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 j, k in ipairs(params.imageparameters) do
table.insert(images, localdata[k])
end
-- Images de Wikidata
local iswikidataimage, iswikidatacaption = false
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) == 'table' then
wdq.entity = wdq.entity or localdata.item
wdq.numval = wdq.numval or params.numval or 1
images = wd.getClaims(wdq)
end
if type(wdq) == 'function' then
images = params.wikidata()
if type(images) == 'string' then
return images
end --c'est probablement une erreur dans la requête => afficher le message
end
if (not images) then
images = {}
end
if type(images[1]) == 'table' then
for i, image in pairs(images) do
if image.mainsnak.snaktype ~= 'value' then
return
end
if #images == 1 then -- si une seule image, on utilise la légende (si deux plusieurs images, comment mettre en forme ?)
caption = wd.getFormattedQualifiers(images[i], {'P2096'}, {isinlang = wikiLang})
caption = caption or wd.getFormattedQualifiers(images[i], {'P805'}) --"affirmation détaillée dans"
if params.datecaption and not caption then --légende construite à partir de la date de l'image et d'une table de paramètres spécifiques
local dcparams = params.datecaption
if type(dcparams) ~= 'table' then dcparams = {} end
local numdate = wd.compare.get_claim_date(images[i])
local endclaims = wd.getClaims({entity = wdq.entity, property = dcparams.endproperty, numval = 1})
local endnumdate = ( endclaims and wd.compare.get_claim_date(endclaims[1]) ) or math.huge
if numdate <= endnumdate then
caption = wd.getFormattedDate(images[i],
{precision = dcparams.precision or 'year',
linktopic = dcparams.linktopic or '-',
withpreposition = true})
if caption then
if dcparams.prefix then caption = dcparams.prefix .. ' ' .. caption end
caption = require('Module:Linguistique').ucfirst(caption) .. '.'
addMaintenanceCat("Infobox ak yon lejand otomatik ki soti nan dat imaj la")
end
end
end
iswikidatacaption = caption ~= nil
end
images[i] = image.mainsnak.datavalue.value
iswikidataimage = true
maintenance = maintenance .. wd.addTrackingCat(image.mainsnak.property)
end
end
end
end
if #images == 0 and getValue(params.captionparameter) ~= nil then
addMaintenanceCat("Infobox ak yon lejand lokal san imaj")
end
-- Images par défaut
if #images == 0 then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
if params.defaultimages then
images = params.defaultimages
if type(images) == 'string' then
images = {images}
end
upright = params.defaultimageupright
caption = params.defaultimagecaption
link = params.defaultimagelink
classe = params.defaultimageclass
if not classe and ( images[1] == 'Defaut.svg' or images[1] == 'Defaut 2.svg' ) then
classe = 'skin-invert-image'
end
alt = params.defaultimagealt
if not alt and ( images[1] == 'Defaut.svg' or images[1] == 'Defaut 2.svg' ) then
alt = 'yon ilistrasyon anba lisans lib ta byenvini'
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
classe = classe or getValue( params.classparameter) or params.defaultclass
alt = alt or getValue( params.altparameter) or params.defaultalt
if iswikidataimage and not iswikidatacaption and getValue(params.captionparameter) ~= nil then
addMaintenanceCat("Infobox ak yon lejand lokal ak yon imaj sou Wikidata")
end
-- taille avec "size" (obsolète)
size = size or getValue(params.sizeparameter) or params.defaultsize -- deprecated
if size then
local sizevalue = size:gsub('px$', '')
local widthonly = mw.ustring.gsub(sizevalue, 'x.*', '')
widthonly = tonumber(widthonly)
if type(widthonly) ~= 'number' or widthonly > 280 then
addMaintenanceCat("Infobox ak yon imaj ki twò gwo")
end
if tonumber(sizevalue) then
size = tostring( tonumber(sizevalue) ) .. 'px'
end
end
if tonumber(upright) then
upright = tostring( tonumber(upright) )
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 .. '[[Fichye:' .. image .. '|frameless'
if size then
imagesString = imagesString .. '|' .. size -- not a mistake, parameter is unnamed
end
if classe then
imagesString = imagesString .. '|class=' .. classe
end
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 and not size then
imagesString = imagesString .. '|upright=' .. ( 1 / #images )
end
if image:sub(-4):lower() == '.svg' then
imagesString = imagesString .. '|lang=' .. wikiLang
end
imagesString = imagesString .. ']]'
if usedImages[image] then
addMaintenanceCat('Infobox ak plizyè imaj ki idantik')
end
usedImages[image] = true
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 = p.separator(params)
end
return mw.html.create('div')
:node(image)
:node(captionobj)
:node(separator)
:done()
end
p.buildImages = p.buildimages
function p.buildtext(params)
local classes = 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 == '-' then
return
end
if not text then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
return nil
end
-- séparateur
local separator
if params.separator then
separator = p.separator(params)
end
local formattedtext = mw.html.create('p')
:addClass(classes)
:css(style)
:wikitext(text)
:node(separator)
:done()
return formattedtext
end
p.buildText = p.buildtext
function p.buildrow(params)
local classes = params.class or ''
local style = params.style or {}
local valueClass = params.valueClass or ''
local valueStyle = params.valueStyle or {}
local value, gendernum = getValue(params.value, params)
if(type(gendernum) == 'number') then
if(gendernum > 1) then
gendernum = 'p'
else
gendernum = 's'
end
end
if type(params.wikidata) == 'table' then
params.wikidata.wikidatalang = localdata.wikidatalang
if (value == valueexpl) then
value = nil
params.wikidata.expl = false
end
end
if (not value) then
value, gendernum = getWikidataValue(params, 'wikidata')
end
if not value then
value = params.defaultvalue
end
if value == '-' then
return nil
end
if not gendernum then
gendernum = 's' --singulier indéfini
end
if not value then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
return nil
end
local label = params.label
if type(label) == 'string' then label = {default = label} end
if type(label) == 'table' then -- Accord en genre et en nombre
local onlynum = {default = 'default', s = 's', ms = 's', fs = 's', p = 'p', mp = 'p', fp = 'p', mixtep = 'p'} -- Accord seulement en nombre par défaut
label['s'] = label['s'] or params.singularlabel or label['default'] or label['ms']
label['p'] = label['p'] or params.plurallabel or label['mp']
label = label[gendernum] or label[onlynum[gendernum]] or label.default
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="[Afiche]/[Kache]", style="border: none; padding: 0;"})
:node(formattedvalue)
end
formattedvalue = mw.html.create('td')
:node(formattedvalue)
:addClass(valueClass)
:css(valueStyle)
: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(classes)
: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 styleI = {}
local colspan = '2'
styleI['padding'] = '1px'
local cellI = mw.html.create('td')
:attr({colspan = colspan})
:attr({align = 'center'})
:css(styleI)
local styleT = {
margin = '0',
['background-color'] = 'transparent',
color = 'inherit',
width = '100%'
}
local 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 = '[[Fichye:Arrleft.svg|13px|alt=Anvan|link=]]'
local arrowRight = '[[Fichye:Arrright.svg|13px|alt=Aprè|link=]]'
if color ~= 'default' then
style['background-color'] = color
end
local styleTrans = {}
local values = params.value
local before = values['before']
local center = values['center']
local after = values['after']
local widthCenter
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 classes = 'row1col ' .. (params.class or '')
local style = {}
if params.color == 'secondcolor' then
style['background-color'] = secondcolor
elseif params.color and params.color ~= '' then
style['background-color'] = params.color
end
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(classes)
:css(style)
:node(formattedlabel)
:done()
return row
end
p.buildRow1Col = p.buildrow1col
function p.buildtable(params)
local tab = mw.html.create('table'):addClass(params.classes):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 = l(localdata, localdata.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('liy infobox yo ("rows") dwe se tab, men sa a se ' .. type(l))
else
i = i + 1
end
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)
end
tab:allDone()
return tab
end
p.buildTable = p.buildtable
--------------------------------------------------------------------------------
-- Fonction créant une ligne d’en-tête à 2 colonnes (subheader2col)
--------------------------------------------------------------------------------
function p.buildSubheader2col(params)
local row = mw.html.create('tr')
local col1 = mw.html.create('th')
:attr('scope', 'col')
:wikitext(params.col1)
:done()
local col2 = mw.html.create('th')
:attr('scope', 'col')
:wikitext(params.col2)
:done()
row:node(col1)
row:node(col2)
row:done()
return row
end
function p.buildinvalidblock(args)
addMaintenanceCat(i18n['default cat'])
local text = ''
if type(args) ~= 'table' then
text = "Blòk infobox yo dwe se tab"
else
text = i18n["invalid block type"] .. ' : ' .. (args.type or '??')
end
return text
end
p.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("Infobox ak yon imaj ki twò gwo")
return 'imaj la twò gwo, lajè a dwe mwens pase oswa egal a 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
end
local newparams = {maplist = maplist, pointtype = pointtype, maptype = maptype, width = width, item = localdata.item, pointtable = pointtable, globe = globe, marker=params.marker, default_zoom=params.default_zoom, ids = params.ids, markercolor = params.markercolor, shapecolor = params.shapecolor }
if params.params and type(params.params) == 'table' then -- paramètres additionnels
for i, j in pairs(params.params) do
newparams[i] = j
end
end
return require('Module:Carte').multimap(newparams)
end
p.buildMap = p.buildmap
function p.buildexternaltext(params)
local value = getValue(params.value)
if value and (type(value) == 'string') then
externaltext = externaltext .. value
end
end
p.buildExternalText = p.buildexternaltext
function p.buildfooter(params)
if not params then
params = {}
end
local classes = 'navbar noprint bordered navigation-not-searchable ' .. (params.class or '')
local style = params.style or {}
if not style['border-top'] and maincolor then
style['border-top'] = '1px solid' .. maincolor
end
local backlinkstr = '[' .. tostring( mw.uri.fullUrl( page.prefixedText, 'veaction=edit§ion=0' ) ) .. ' ' .. i18n['edit'] .. ']'
.. ' - [' .. tostring( mw.uri.fullUrl( page.prefixedText, 'action=edit§ion=0' ) ) .. ' ' .. i18n['edit code'] .. ']'
local itemlinkstr
if localdata.item and localdata.item ~= '-' then
itemlinkstr = '[[d:' .. localdata.item .. '|' .. i18n['edit item'] .. ']]'
end
local editstr = backlinkstr
if itemlinkstr then
editstr = editstr .. ' - ' .. itemlinkstr
end
local editlinkspan = mw.html.create('span')
:css({['text-align'] = "left"})
:addClass('plainlinks')
:wikitext(editstr)
:done()
local doclinkstr = '[[Fichye:Info Simple.svg|12px|link=' .. localdata.templatename .. '|' .. i18n['see doc'] .. ']]'
-- si ce lien ne marche pas toujours, il faut ajouter un variable pour le nom de l'infobox récupéré par le frame
local doclinkspan = mw.html.create('span')
:css({['text-align'] = "right"})
:wikitext(doclinkstr)
:done()
local footer = mw.html.create('p')
:addClass(classes)
:css(style)
:node(editlinkspan)
:node(doclinkspan)
return footer
end
p.buildFooter = p.buildfooter
function p.buildblock(block)
if type(block) == 'function' then
block = block( localdata )
end
local blocktypes = { -- list of functions for block buildings
['invalid'] = p.buildinvalidblock,
['external text'] = p.buildexternaltext,
['footer'] = p.buildfooter,
['images'] = p.buildimages,
['map']= p.buildmap,
['mixed'] = p.buildrow,
['navigator'] = p.buildnavigator,
['table'] = p.buildtable,
['row'] = p.buildrow,
['row1col'] = p.buildrow1col,
['succession'] = p.buildsuccession,
['text'] = p.buildtext,
['title'] = p.buildtitle,
['subheader2col'] = p.buildSubheader2col,
}
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 = require( 'Module:Infobox/Localdata' )
if type( localdata.item ) == 'table' then
localdata.item = localdata.item.id
end
-- assign rank to the infobox, "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)
local pagetitle = page.prefixedText
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
-- maintenance categories given by the module page
if moduledata.categories then
for i, j in pairs(moduledata.categories) do
if (type(j) == 'string') then addMaintenanceCat(j) end
if (type(j) == 'table') then addMaintenanceCat(j[1],j[2]) end
end
end
-- defines main color
maincolor = localdata['couleur infobox'] or localdata['couleur boîte'] or localdata['couleur boite'] or moduledata.maincolor
secondcolor = moduledata.secondcolor
thirdcolor = localdata['texte noir'] or localdata['couleur texte'] or moduledata.thirdcolor
if maincolor and ( #maincolor == 6 or #maincolor == 3 ) and maincolor:match( '^%x+$' ) then
maincolor = '#' .. maincolor
end
if thirdcolor and (thirdcolor == 'non' or thirdcolor == 'false') then
thirdcolor = '#fff'
end
-- classes
local classes = mw.getCurrentFrame():expandTemplate{ title = 'Classes début infobox', args = { version = '3' } }
classes = classes .. ' large ' .. (moduledata.class or '')
-- style
if moduledata.style then addMaintenanceCat("Infobox Lua ak yon style CSS espesifik") end
local style = moduledata.style or {}
-- templatestyles
local templatestyles = ''
if moduledata.templatestyles then
templatestyles = templatestyles .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = moduledata.templatestyles} }
end
-- build infobox
infobox :addClass(classes)
:css(style)
for i, j in pairs( moduledata.parts ) do
infobox:node( p.buildblock(j) )
end
infobox :node(p.buildfooter(moduledata.footer))
:done()
return templatestyles .. tostring(infobox) .. externaltext, maintenance
end
return p
g8cuy26qqdixzwlstlne17t867fevci
888722
888720
2026-10-06T21:40:03Z
Kitanago
19629
888722
Scribunto
text/plain
-- luacheck: globals mw, no max line length
local p = {}
local wikiLang = 'ht'
local localdata = {}-- données concernant les paramètres passés au modèle
-- données concernant la page où est affichée l'infobox
local page = mw.title.getCurrentTitle()
local maincolor, secondcolor, thirdcolor
-- l'objet principal à retourner
local infobox = mw.html.create('div')
-- objets secondaires à retourner
local maintenance = '' -- chaîne retournée avec le module : cats de maintenance
local externaltext = '' -- par exemple coordonnées en titre
-- modules importés
local wd = require 'Module:Wikidata'
local yesno = require 'Module:Yesno'
local valueexpl = wd.translate("activate-query")
-- maintenance des images dupliquées
local usedImages = {}
local i18n = {
['see doc'] = 'Dokimantasyon modèl la',
['edit'] = 'modifye',
['edit code'] = 'modifye kòd la',
['edit item'] = 'modifye Wikidata',
['tracking cat'] = "Paj ki itilize done Wikidata",
['invalid block type'] = "Blòk done ki pa valid nan modil infobox la",
['default cat'] = "Antretyen infobox",
}
local function expandQuery(query)
if not query.entity then
query.entity = localdata.item
end
if not query.conjtype then
query.conjtype = 'comma'
end
local claims = wd.getClaims(query)
if (not claims) then
return nil
end
return wd.formatAndCat(query), wd.getgendernum(claims) -- valeur et code indiquant le genre/nombre pour accorder le libellé
end
local function getWikidataValue(params, wikidataparam)
-- 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 then
return nil
end
if params.blockers then -- blockers are local parameters that disable the wikidata query
local blockers = params.blockers
if (type(blockers) == 'string') then
blockers = {blockers}
end
for i, blocker in ipairs(blockers) do
if localdata[blocker] then
return nil
end
end
end
local v, valgendernum -- la valeur à retourner, et le genre/nombre de de valeurs (pour l'accord grammatical)
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 = 'wikidata'
end
if params.property and not params[wikidataparam] then params[wikidataparam] = {property = params.property} end
if params[wikidataparam] then
if type(params[wikidataparam]) == 'function' then
v, valgendernum = params[wikidataparam](localdata.item)
elseif type(params[wikidataparam]) == 'table' then
v, valgendernum = expandQuery(params[wikidataparam])
else
v, valgendernum = params[wikidataparam]
end
end
if not v then
return nil
end
if(type(valgendernum) == 'number') then
if(valgendernum > 1) then
valgendernum = 'p'
else
valgendernum = 's'
end
end
return v, valgendernum
end
local function getValue(val, params)
if type(val) == 'string' then
return localdata[val]
elseif type(val) == 'function' then
return val(localdata, localdata.item, params)
elseif type(val) == 'table' 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]
end
end
end
end
local function addMaintenanceCat(cat, sortkey)
if page.namespace ~= 0 then
return ''
end
if cat then
local sortkeycode
if sortkey then sortkeycode = '|' .. sortkey else sortkeycode = '' end
maintenance = maintenance .. '[[Kategori:'.. cat .. sortkeycode .. ']]'
end
end
function p.separator(params)
local classes = params['separator classes']
local style = params['separator style'] or {}
style['background-color'] = style['background-color'] or maincolor
if style['background-color'] then
style.color = 'var( --color-base )'
end
return mw.html.create('hr'):addClass( classes ):css( style )
end
--[=[
Construit le code du bloc de titre de l'infobox
Paramètres (liste partielle) :
- value : Moyen d'obtenir le titre via getValue (nom de paramètre de modèle ou fonction).
- textdefaultvalue : Valeur par défaut du titre.
- icon : Pictogramme d'infobox (voir [[Projet:Infobox/Pictogramme]]).
- italic : Indique si le titre doit être affiché en italique.
Si italic=true, le paramètre "titre en italique" de l'infobox peut forcer la désactivation.
- setdisplaytitle : Indique si le titre de l'article doit être mis en forme comme celui de l'infobox.
Si setdisplaytitle=true, le paramètre "titre article en italique" de l'infobox peut forcer la désactivation.
]=]
function p.buildtitle(params)
local text = getValue(params.value, params) or params.textdefaultvalue or getWikidataValue(params) or page.prefixedText
local lang = localdata['langue du titre'] or ''
if lang ~= '' then
local langueFunction = require( 'Module:Langue' ).langue
text = langueFunction( { lang, text } )
end
local subtext = getValue(params.subtitle) or getWikidataValue(params, 'wikidatasubtitle') or params.subtitledefaultvalue
if subtext and (subtext ~= text) then
text = text .. '<br><small>' .. subtext .. '</small>'
end
local icon = params.icon or ''
if icon ~= '' and icon ~= 'defaut' then
text = text .. mw.getCurrentFrame():extensionTag('templatestyles', '', {src = 'Infobox/Pictogramme/' .. mw.text.trim(icon) .. '.css'})
if not params.large then
icon = 'icon ' .. icon
end
end
local classes = 'entete ' .. icon
local italic = params.italic and yesno(localdata['titre en italique'] or '', true, true)
if italic then
classes = classes .. ' italique'
end
if params.setdisplaytitle and yesno(localdata['titre article en italique'] or '', true, true) then
local formatTitleModule = require( 'Module:Formatage du titre' )
text = text .. formatTitleModule.setDisplayTitle{ args = {
lang = lang,
italic = italic,
options = 'noreplace',
} }
end
-- 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) do
style[i] = j
end
end
local title = mw.html.create('div')
:addClass(classes)
:css(style)
:tag('div')
:wikitext(text)
:allDone()
return title
end
p.buildTitle = p.buildtitle
function p.buildnavigator(params)
-- définition du style
local classes = "overflow infobox-navigateur " .. (params.class or '')
local style = params.style or {}
if params.separated then -- options pour ajouter une ligne de séparation au dessus
classes = classes .. ' bordered'
if maincolor then
style['border-top'] = '1px solid' .. maincolor
end
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')
if previousval == '-' then previousval = nil end
if nextval == '-' then nextval = nil end
local navigator
if params.inner then -- pour celles qui sont à l'intérieur d'une table
navigator = mw.html.create('tr'):tag('th'):attr('colspan', 2)
style['font-weight'] = style['font-weight'] or 'normal'
else
navigator = mw.html.create('div')
end
if previousval or nextval then
navigator
:addClass(classes)
:css(style)
:tag('div')
:addClass('prev_bloc')
:wikitext(previousval)
:done()
:tag('div')
:addClass('next_bloc')
:wikitext(nextval)
:done()
:allDone()
return navigator
end
return nil
end
p.buildNavigator = p.buildnavigator
function p.buildimages(params)
local images = {}
local upright, link, caption, classe, 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 j, k in ipairs(params.imageparameters) do
table.insert(images, localdata[k])
end
-- Images de Wikidata
local iswikidataimage, iswikidatacaption = false
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) == 'table' then
wdq.entity = wdq.entity or localdata.item
wdq.numval = wdq.numval or params.numval or 1
images = wd.getClaims(wdq)
end
if type(wdq) == 'function' then
images = params.wikidata()
if type(images) == 'string' then
return images
end --c'est probablement une erreur dans la requête => afficher le message
end
if (not images) then
images = {}
end
if type(images[1]) == 'table' then
for i, image in pairs(images) do
if image.mainsnak.snaktype ~= 'value' then
return
end
if #images == 1 then -- si une seule image, on utilise la légende (si deux plusieurs images, comment mettre en forme ?)
caption = wd.getFormattedQualifiers(images[i], {'P2096'}, {isinlang = wikiLang})
caption = caption or wd.getFormattedQualifiers(images[i], {'P805'}) --"affirmation détaillée dans"
if params.datecaption and not caption then --légende construite à partir de la date de l'image et d'une table de paramètres spécifiques
local dcparams = params.datecaption
if type(dcparams) ~= 'table' then dcparams = {} end
local numdate = wd.compare.get_claim_date(images[i])
local endclaims = wd.getClaims({entity = wdq.entity, property = dcparams.endproperty, numval = 1})
local endnumdate = ( endclaims and wd.compare.get_claim_date(endclaims[1]) ) or math.huge
if numdate <= endnumdate then
caption = wd.getFormattedDate(images[i],
{precision = dcparams.precision or 'year',
linktopic = dcparams.linktopic or '-',
withpreposition = true})
if caption then
if dcparams.prefix then caption = dcparams.prefix .. ' ' .. caption end
caption = require('Module:Linguistique').ucfirst(caption) .. '.'
addMaintenanceCat("Infobox ak yon lejand otomatik ki soti nan dat imaj la")
end
end
end
iswikidatacaption = caption ~= nil
end
images[i] = image.mainsnak.datavalue.value
iswikidataimage = true
maintenance = maintenance .. wd.addTrackingCat(image.mainsnak.property)
end
end
end
end
if #images == 0 and getValue(params.captionparameter) ~= nil then
addMaintenanceCat("Infobox ak yon lejand lokal san imaj")
end
-- Images par défaut
if #images == 0 then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
if params.defaultimages then
images = params.defaultimages
if type(images) == 'string' then
images = {images}
end
upright = params.defaultimageupright
caption = params.defaultimagecaption
link = params.defaultimagelink
classe = params.defaultimageclass
if not classe and ( images[1] == 'Defaut.svg' or images[1] == 'Defaut 2.svg' ) then
classe = 'skin-invert-image'
end
alt = params.defaultimagealt
if not alt and ( images[1] == 'Defaut.svg' or images[1] == 'Defaut 2.svg' ) then
alt = 'yon ilistrasyon anba lisans lib ta byenvini'
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
classe = classe or getValue( params.classparameter) or params.defaultclass
alt = alt or getValue( params.altparameter) or params.defaultalt
if iswikidataimage and not iswikidatacaption and getValue(params.captionparameter) ~= nil then
addMaintenanceCat("Infobox ak yon lejand lokal ak yon imaj sou Wikidata")
end
-- taille avec "size" (obsolète)
size = size or getValue(params.sizeparameter) or params.defaultsize -- deprecated
if size then
local sizevalue = size:gsub('px$', '')
local widthonly = mw.ustring.gsub(sizevalue, 'x.*', '')
widthonly = tonumber(widthonly)
if type(widthonly) ~= 'number' or widthonly > 280 then
addMaintenanceCat("Infobox ak yon imaj ki twò gwo")
end
if tonumber(sizevalue) then
size = tostring( tonumber(sizevalue) ) .. 'px'
end
end
if tonumber(upright) then
upright = tostring( tonumber(upright) )
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 .. '[[Fichye:' .. image .. '|frameless'
if size then
imagesString = imagesString .. '|' .. size -- not a mistake, parameter is unnamed
end
if classe then
imagesString = imagesString .. '|class=' .. classe
end
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 and not size then
imagesString = imagesString .. '|upright=' .. ( 1 / #images )
end
if image:sub(-4):lower() == '.svg' then
imagesString = imagesString .. '|lang=' .. wikiLang
end
imagesString = imagesString .. ']]'
if usedImages[image] then
addMaintenanceCat('Infobox ak plizyè imaj ki idantik')
end
usedImages[image] = true
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 = p.separator(params)
end
return mw.html.create('div')
:node(image)
:node(captionobj)
:node(separator)
:done()
end
p.buildImages = p.buildimages
function p.buildtext(params)
local classes = 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 == '-' then
return
end
if not text then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
return nil
end
-- séparateur
local separator
if params.separator then
separator = p.separator(params)
end
local formattedtext = mw.html.create('p')
:addClass(classes)
:css(style)
:wikitext(text)
:node(separator)
:done()
return formattedtext
end
p.buildText = p.buildtext
function p.buildrow(params)
local classes = params.class or ''
local style = params.style or {}
local valueClass = params.valueClass or ''
local valueStyle = params.valueStyle or {}
local value, gendernum = getValue(params.value, params)
if(type(gendernum) == 'number') then
if(gendernum > 1) then
gendernum = 'p'
else
gendernum = 's'
end
end
if type(params.wikidata) == 'table' then
params.wikidata.wikidatalang = localdata.wikidatalang
if (value == valueexpl) then
value = nil
params.wikidata.expl = false
end
end
if (not value) then
value, gendernum = getWikidataValue(params, 'wikidata')
end
if not value then
value = params.defaultvalue
end
if value == '-' then
return nil
end
if not gendernum then
gendernum = 's' --singulier indéfini
end
if not value then
if params.maintenancecat then
addMaintenanceCat(params.maintenancecat, params.sortkey)
end
return nil
end
local label = params.label
if type(label) == 'string' then label = {default = label} end
if type(label) == 'table' then -- Accord en genre et en nombre
local onlynum = {default = 'default', s = 's', ms = 's', fs = 's', p = 'p', mp = 'p', fp = 'p', mixtep = 'p'} -- Accord seulement en nombre par défaut
label['s'] = label['s'] or params.singularlabel or label['default'] or label['ms']
label['p'] = label['p'] or params.plurallabel or label['mp']
label = label[gendernum] or label[onlynum[gendernum]] or label.default
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="[Afiche]/[Kache]", style="border: none; padding: 0;"})
:node(formattedvalue)
end
formattedvalue = mw.html.create('td')
:node(formattedvalue)
:addClass(valueClass)
:css(valueStyle)
: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(classes)
: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 styleI = {}
local colspan = '2'
styleI['padding'] = '1px'
local cellI = mw.html.create('td')
:attr({colspan = colspan})
:attr({align = 'center'})
:css(styleI)
local styleT = {
margin = '0',
['background-color'] = 'transparent',
color = 'inherit',
width = '100%'
}
local 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 = '[[Fichye:Arrleft.svg|13px|alt=Anvan|link=]]'
local arrowRight = '[[Fichye:Arrright.svg|13px|alt=Aprè|link=]]'
if color ~= 'default' then
style['background-color'] = color
end
local styleTrans = {}
local values = params.value
local before = values['before']
local center = values['center']
local after = values['after']
local widthCenter
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 classes = 'row1col ' .. (params.class or '')
local style = {}
if params.color == 'secondcolor' then
style['background-color'] = secondcolor
elseif params.color and params.color ~= '' then
style['background-color'] = params.color
end
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(classes)
:css(style)
:node(formattedlabel)
:done()
return row
end
p.buildRow1Col = p.buildrow1col
function p.buildtable(params)
local tab = mw.html.create('table'):addClass(params.classes):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 = l(localdata, localdata.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('liy infobox yo ("rows") dwe se tab, men sa a se ' .. type(l))
else
i = i + 1
end
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)
end
tab:allDone()
return tab
end
p.buildTable = p.buildtable
--------------------------------------------------------------------------------
-- Fonction créant une ligne d’en-tête à 2 colonnes (subheader2col)
--------------------------------------------------------------------------------
function p.buildSubheader2col(params)
local row = mw.html.create('tr')
local col1 = mw.html.create('th')
:attr('scope', 'col')
:wikitext(params.col1)
:done()
local col2 = mw.html.create('th')
:attr('scope', 'col')
:wikitext(params.col2)
:done()
row:node(col1)
row:node(col2)
row:done()
return row
end
function p.buildinvalidblock(args)
addMaintenanceCat(i18n['default cat'])
local text = ''
if type(args) ~= 'table' then
text = "Blòk infobox yo dwe se tab"
else
text = i18n["invalid block type"] .. ' : ' .. (args.type or '??')
end
return text
end
p.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("Infobox ak yon imaj ki twò gwo")
return 'imaj la twò gwo, lajè a dwe mwens pase oswa egal a 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
end
local newparams = {maplist = maplist, pointtype = pointtype, maptype = maptype, width = width, item = localdata.item, pointtable = pointtable, globe = globe, marker=params.marker, default_zoom=params.default_zoom, ids = params.ids, markercolor = params.markercolor, shapecolor = params.shapecolor }
if params.params and type(params.params) == 'table' then -- paramètres additionnels
for i, j in pairs(params.params) do
newparams[i] = j
end
end
return require('Module:Carte').multimap(newparams)
end
p.buildMap = p.buildmap
function p.buildexternaltext(params)
local value = getValue(params.value)
if value and (type(value) == 'string') then
externaltext = externaltext .. value
end
end
p.buildExternalText = p.buildexternaltext
function p.buildfooter(params)
if not params then
params = {}
end
local classes = 'navbar noprint bordered navigation-not-searchable ' .. (params.class or '')
local style = params.style or {}
if not style['border-top'] and maincolor then
style['border-top'] = '1px solid' .. maincolor
end
local backlinkstr = '[' .. tostring( mw.uri.fullUrl( page.prefixedText, 'veaction=edit§ion=0' ) ) .. ' ' .. i18n['edit'] .. ']'
.. ' - [' .. tostring( mw.uri.fullUrl( page.prefixedText, 'action=edit§ion=0' ) ) .. ' ' .. i18n['edit code'] .. ']'
local itemlinkstr
if localdata.item and localdata.item ~= '-' then
itemlinkstr = '[[d:' .. localdata.item .. '|' .. i18n['edit item'] .. ']]'
end
local editstr = backlinkstr
if itemlinkstr then
editstr = editstr .. ' - ' .. itemlinkstr
end
local editlinkspan = mw.html.create('span')
:css({['text-align'] = "left"})
:addClass('plainlinks')
:wikitext(editstr)
:done()
local doclinkstr = '[[Fichye:Info Simple.svg|12px|link=' .. localdata.templatename .. '|' .. i18n['see doc'] .. ']]'
-- si ce lien ne marche pas toujours, il faut ajouter un variable pour le nom de l'infobox récupéré par le frame
local doclinkspan = mw.html.create('span')
:css({['text-align'] = "right"})
:wikitext(doclinkstr)
:done()
local footer = mw.html.create('p')
:addClass(classes)
:css(style)
:node(editlinkspan)
:node(doclinkspan)
return footer
end
p.buildFooter = p.buildfooter
function p.buildblock(block)
if type(block) == 'function' then
block = block( localdata )
end
local blocktypes = { -- list of functions for block buildings
['invalid'] = p.buildinvalidblock,
['external text'] = p.buildexternaltext,
['footer'] = p.buildfooter,
['images'] = p.buildimages,
['map']= p.buildmap,
['mixed'] = p.buildrow,
['navigator'] = p.buildnavigator,
['table'] = p.buildtable,
['row'] = p.buildrow,
['row1col'] = p.buildrow1col,
['succession'] = p.buildsuccession,
['text'] = p.buildtext,
['title'] = p.buildtitle,
['subheader2col'] = p.buildSubheader2col,
}
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 = require( 'Module:Infobox/Localdata' )
if type( localdata.item ) == 'table' then
localdata.item = localdata.item.id
end
-- assign rank to the infobox, "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)
local pagetitle = page.prefixedText
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
-- maintenance categories given by the module page
if moduledata.categories then
for i, j in pairs(moduledata.categories) do
if (type(j) == 'string') then addMaintenanceCat(j) end
if (type(j) == 'table') then addMaintenanceCat(j[1],j[2]) end
end
end
-- defines main color
maincolor = localdata['couleur infobox'] or localdata['couleur boîte'] or localdata['couleur boite'] or moduledata.maincolor
secondcolor = moduledata.secondcolor
thirdcolor = localdata['texte noir'] or localdata['couleur texte'] or moduledata.thirdcolor
if maincolor and ( #maincolor == 6 or #maincolor == 3 ) and maincolor:match( '^%x+$' ) then
maincolor = '#' .. maincolor
end
if thirdcolor and (thirdcolor == 'non' or thirdcolor == 'false') then
thirdcolor = '#fff'
end
-- classes
local classes = mw.getCurrentFrame():expandTemplate{ title = 'Classes début infobox', args = { version = '3' } }
classes = classes .. ' large ' .. (moduledata.class or '')
-- style
if moduledata.style then addMaintenanceCat("Infobox Lua ak yon style CSS espesifik") end
local style = moduledata.style or {}
-- templatestyles
local templatestyles = ''
if moduledata.templatestyles then
templatestyles = templatestyles .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = moduledata.templatestyles} }
end
-- build infobox
infobox :addClass(classes)
:css(style)
for i, j in pairs( moduledata.parts ) do
infobox:node( p.buildblock(j) )
end
infobox :node(p.buildfooter(moduledata.footer))
:done()
return templatestyles .. tostring(infobox) .. externaltext, maintenance
end
return p
tpt2oit8nvgn15lyaui7f0q30qc8sr4
Wikipedya:REJEBECSS-HAITI/BNH/Liste
4
67009
888728
888665
2026-10-07T07:28:56Z
ListeriaBot
19489
Wikidata list updated [V2]
888728
wikitext
text/x-wiki
{{Wikidata list
|sparql=SELECT ?linkcount ?item ?itemLabel WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr" }
{?item wdt:P17 wd:Q790.}
UNION {?item wdt:P131/wdt:P279* wd:Q790 .} UNION {?item wdt:P27 wd:Q790}
?item wikibase:sitelinks ?linkcount .
OPTIONAL {?article schema:about ?item ; schema:isPartOf <https://ht.wikipedia.org/> .}
FILTER (!BOUND(?article))
}
ORDER BY DESC(?linkcount)
LIMIT 200
|sort=
|columns=NUMBER:numéro,P18:Image,label:Nom,P625:Géolocalisation,P131:Lieu
|thumb=128
}}
{| class='wikitable sortable'
! numéro
! Image
! Nom
! Géolocalisation
! Lieu
|-
| style='text-align:right'| 1
| [[Fichye:Sandy 2012-10-25 0320Z.png|center|128px]]
| ''[[:d:Q264|Hurricane Sandy]]''
|
|
|-
| style='text-align:right'| 2
| [[Fichye:MUTCD-MI I2-6 (Eastern Time Zone).svg|center|128px]]
| ''[[:d:Q941023|Eastern Time Zone]]''
|
|
|-
| style='text-align:right'| 3
|
| ''[[:d:Q273894|Piarists]]''
|
|
|-
| style='text-align:right'| 4
| [[Fichye:Monkeypox By Country.svg|center|128px]]
| ''[[:d:Q112070734|2022–2023 mpox outbreak]]''
|
|
|-
| style='text-align:right'| 5
| [[Fichye:Map-Francophone World.svg|center|128px]]
| ''[[:d:Q1003588|Francophonie]]''
|
|
|-
| style='text-align:right'| 6
| [[Fichye:Windwardpassagemap.JPG|center|128px]]
| ''[[:d:Q140265|Windward Passage]]''
| {{Coord|20|-74|display=inline}}
|
|-
| style='text-align:right'| 7
| [[Fichye:Wilson Isidor in 2022.jpg|center|128px]]
| ''[[:d:Q58484930|Wilson Isidor]]''
|
|
|-
| style='text-align:right'| 8
| [[Fichye:John baptist de la salle 1.jpg|center|128px]]
| ''[[:d:Q138579|Institute of the Brothers of the Christian Schools]]''
| {{Coord|41.899|12.423|display=inline}}
| ''[[:d:Q498452|North Caribbean Coast Autonomous Region]]''<br/>''[[:d:Q1008456|Puerto Cabezas]]''
|-
| style='text-align:right'| 9
|
| ''[[:d:Q594254|1973 CONCACAF Championship]]''
| {{Coord|18.5425|-72.3386|display=inline}}
|
|-
| style='text-align:right'| 10
|
| ''[[:d:Q4131845|Ayisyen]]''
|
| [[Ayiti]]
|-
| style='text-align:right'| 11
| [[Fichye:Maracanã, 5 de agosto de 2016- onde o Egito encontra o Haiti... -rio2016 (28778328632).jpg|center|128px]]
| ''[[:d:Q20113758|Haiti at the 2016 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 12
| [[Fichye:RC Lens - FC Nantes (28-10-2023) - Duverne.jpg|center|128px]]
| ''[[:d:Q26251605|Jean-Kévin Duverne]]''
|
|
|-
| style='text-align:right'| 13
| [[Fichye:Hannes Delcroix (cropped).jpg|center|128px]]
| ''[[:d:Q56011432|Hannes Delcroix]]''
|
|
|-
| style='text-align:right'| 14
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q107472171|Haiti at the 2022 Winter Olympics]]''
|
|
|-
| style='text-align:right'| 15
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q126284599|Haiti at the 2024 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 16
|
| ''[[:d:Q20986|ISO 3166-2:HT]]''
|
|
|-
| style='text-align:right'| 17
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q141217|Haiti at the 2012 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 18
|
| ''[[:d:Q1256655|20th parallel north]]''
| {{Coord|20|0|display=inline}}
|
|-
| style='text-align:right'| 19
|
| ''[[:d:Q4435409|list of World Heritage Sites in Haiti]]''
|
|
|-
| style='text-align:right'| 20
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q144034|Haiti at the 1900 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 21
| [[Fichye:Haiti at the opening ceremony of the 1928 Summer Olympics.jpg|center|128px]]
| ''[[:d:Q147174|Haiti at the 1928 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 22
|
| ''[[:d:Q2467445|Ligue Haïtienne]]''
|
|
|-
| style='text-align:right'| 23
|
| ''[[:d:Q3439047|War of Dominican Independence]]''
|
|
|-
| style='text-align:right'| 24
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q42914391|Haiti at the 2020 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 25
| [[Fichye:Jimmy "Barbecue" Cherizier 2024.png|center|128px]]
| ''[[:d:Q101440369|Jimmy Chérizier]]''
|
|
|-
| style='text-align:right'| 26
| [[Fichye:Bennedict Mathurin (cropped).jpg|center|128px]]
| ''[[:d:Q105013647|Bennedict Mathurin]]''
|
|
|-
| style='text-align:right'| 27
| [[Fichye:Vida y viajes de Cristobal Colón, 1851 Construcción de la fortaleza de La Navidad (3819531625).jpg|center|128px]]
| ''[[:d:Q1798978|La Navidad]]''
| {{Coord|19.690556|-72.015833|display=inline}}
|
|-
| style='text-align:right'| 28
| [[Fichye:Flag of Haiti (civil).svg|center|128px]]
| ''[[:d:Q2297885|Haiti at the 1924 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 29
|
| ''[[:d:Q23772079|Yassin Fortuné]]''
|
|
|-
| style='text-align:right'| 30
|
| ''[[:d:Q108000394|Lenny Joseph]]''
|
|
|-
| style='text-align:right'| 31
|
| ''[[:d:Q114355328|Ruben Providence]]''
|
|
|-
| style='text-align:right'| 32
|
| ''[[:d:Q124392516|Dominique Simon]]''
|
|
|-
| style='text-align:right'| 33
|
| ''[[:d:Q136466749|Keeto Thermoncy]]''
|
|
|-
| style='text-align:right'| 34
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q141075|Haiti at the 2008 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 35
|
| ''[[:d:Q21621771|Duke Lacroix]]''
|
|
|-
| style='text-align:right'| 36
|
| ''[[:d:Q72697581|Louicius Don Deedson]]''
|
|
|-
| style='text-align:right'| 37
| [[Fichye:Garven Metusala.jpg|center|128px]]
| ''[[:d:Q107370468|Garven Metusala]]''
|
|
|-
| style='text-align:right'| 38
|
| ''[[:d:Q107426681|Martin Experiénce]]''
|
|
|-
| style='text-align:right'| 39
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q133756484|Haiti at the 2026 Winter Olympics]]''
|
|
|-
| style='text-align:right'| 40
|
| ''[[:d:Q139813358|Woodensky Pierre]]''
|
|
|-
| style='text-align:right'| 41
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q143063|Haiti at the 2000 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 42
|
| ''[[:d:Q1024083|1991 CONCACAF Women's Championship]]''
|
|
|-
| style='text-align:right'| 43
|
| ''[[:d:Q1254997|19th parallel north]]''
| {{Coord|19|0|display=inline}}
|
|-
| style='text-align:right'| 44
| [[Fichye:Port-au-Prince airfield seizure.jpg|center|128px]]
| ''[[:d:Q2026486|Operation Uphold Democracy]]''
|
|
|-
| style='text-align:right'| 45
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q2194097|Haiti at the 1960 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 46
|
| ''[[:d:Q100792937|Josué Casimir]]''
|
|
|-
| style='text-align:right'| 47
|
| ''[[:d:Q112623666|Alexandre Pierre]]''
|
|
|-
| style='text-align:right'| 48
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q1986870|Haiti at the 1988 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 49
| [[Fichye:Flag of Haiti (1964–1986).svg|center|128px]]
| ''[[:d:Q2291898|Haiti at the 1984 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 50
| [[Fichye:Fafà Picault NE Revolution Inter Miami 7.9.25-032 (cropped).jpg|center|128px]]
| ''[[:d:Q5429349|Fafà Picault]]''
|
|
|-
| style='text-align:right'| 51
|
| ''[[:d:Q111345092|Carl Sainté]]''
|
|
|-
| style='text-align:right'| 52
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q145152|Haiti at the 2004 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 53
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q150527|Haiti at the 1996 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 54
| [[Fichye:Flag of Haiti (1964–1986).svg|center|128px]]
| ''[[:d:Q168379|Haiti at the 1972 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 55
| [[Fichye:Flag of Haiti (1964–1986).svg|center|128px]]
| ''[[:d:Q2489822|Haiti at the 1976 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 56
| [[Fichye:Flag of Haiti (civil).svg|center|128px]]
| ''[[:d:Q2651878|Haiti at the 1932 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 57
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q2666070|Haiti at the 1992 Summer Olympics]]''
|
|
|-
| style='text-align:right'| 58
| [[Fichye:Cap-Haitien seen from Morne Jean Explosion.jpg|center|128px]]
| ''[[:d:Q110106709|Cap-Haïtien fuel tanker explosion]]''
| {{Coord|19.751389|-72.205556|display=inline}}
| [[Kap Ayisyen (komin)|Kap Ayisyen]]
|-
| style='text-align:right'| 59
| [[Fichye:2019-07-17 SG Dynamo Dresden vs. Paris Saint-Germain by Sandro Halank–054 (cropped).jpg|center|128px]]
| ''[[:d:Q69948832|Garissone Innocent]]''
|
|
|-
| style='text-align:right'| 60
| [[Fichye:The part is devoted to the contest "Wiki loves folklore".jpg|center|128px]]
| ''[[:d:Q96622031|Wiki Loves Folklore]]''
|
|
|-
| style='text-align:right'| 61
| [[Fichye:Michel Patrick Boisvert 2023 (cropped).jpg|center|128px]]
| ''[[:d:Q114735638|Michel Patrick Boisvert]]''
|
|
|-
| style='text-align:right'| 62
|
| ''[[:d:Q667038|United Nations Mission in Haiti]]''
|
|
|-
| style='text-align:right'| 63
|
| ''[[:d:Q4124963|Armed Forces of Haiti]]''
|
|
|-
| style='text-align:right'| 64
|
| ''[[:d:Q137145245|1974 FIFA World Cup qualification (CONCACAF)]]''
|
|
|-
| style='text-align:right'| 65
|
| ''[[:d:Q861844|André Corvington]]''
|
|
|-
| style='text-align:right'| 66
| [[Fichye:Rafael Estrella Urena Great Grandfather.jpg|center|128px]]
| ''[[:d:Q887837|Rafael Estrella Ureña]]''
|
|
|-
| style='text-align:right'| 67
|
| ''[[:d:Q131478437|Category:2025 in Haiti]]''
|
|
|-
| style='text-align:right'| 68
| [[Fichye:Order of Merit of the Republic of Haiti (Grade of Commander) - IMG 4985.JPG|center|128px]]
| ''[[:d:Q112390|National Order of Honour and Merit]]''
|
|
|-
| style='text-align:right'| 69
|
| ''[[:d:Q1449569|Lee Holdridge]]''
|
|
|-
| style='text-align:right'| 70
|
| ''[[:d:Q1626302|LGBT rights in Haiti]]''
|
|
|-
| style='text-align:right'| 71
|
| ''[[:d:Q1857436|2010–11 Haitian general election]]''
|
|
|-
| style='text-align:right'| 72
| [[Fichye:Trou Caïman.jpg|center|128px]]
| ''[[:d:Q2805779|Trou Caïman]]''
| {{Coord|18.642804|-72.146336|display=inline}}
| [[Tomazo (komin)|Tomazo]]
|-
| style='text-align:right'| 73
| [[Fichye:Danish Air Transport ATR-42-300.jpg|center|128px]]
| ''[[:d:Q7641058|Sunrise Airways]]''
|
|
|-
| style='text-align:right'| 74
|
| ''[[:d:Q10530123|Max Hilaire]]''
|
|
|-
| style='text-align:right'| 75
|
| ''[[:d:Q19702717|Jeppe Simonsen]]''
|
|
|-
| style='text-align:right'| 76
| [[Fichye:Lens - Evian (29-02-2016) 17.jpg|center|128px]]
| ''[[:d:Q22280180|Dylan Saint-Louis]]''
|
|
|-
| style='text-align:right'| 77
|
| ''[[:d:Q49004376|Leverton Pierre]]''
|
|
|-
| style='text-align:right'| 78
|
| ''[[:d:Q60677605|Benji Michel]]''
|
|
|-
| style='text-align:right'| 79
| [[Fichye:Fabre-jeune.jpg|center|128px]]
| ''[[:d:Q110984265|Jacques Fabre]]''
|
|
|-
| style='text-align:right'| 80
|
| ''[[:d:Q111536396|Dany Jean]]''
|
|
|-
| style='text-align:right'| 81
|
| ''[[:d:Q2202375|Catholic Church in Haiti]]''
|
|
|-
| style='text-align:right'| 82
|
| ''[[:d:Q2581074|Coupe d'Haïti]]''
|
|
|-
| style='text-align:right'| 83
| [[Fichye:Hotel Montana.jpg|center|128px]]
| ''[[:d:Q3121455|Hôtel Montana]]''
| {{Coord|18.527222|-72.297778|display=inline}}
| [[Petyonvil (komin)|Petyonvil]]
|-
| style='text-align:right'| 84
| [[Fichye:Hotel Oloffson mars 2007.JPG|center|128px]]
| ''[[:d:Q3365701|Hotel Oloffson]]''
| {{Coord|18.529444|-72.3375|display=inline}}
| ''[[:d:Q47364624|Turgeau]]''
|-
| style='text-align:right'| 85
|
| ''[[:d:Q4116369|Islam in Haiti]]''
|
|
|-
| style='text-align:right'| 86
|
| ''[[:d:Q11821998|Polish Haitian]]''
|
|
|-
| style='text-align:right'| 87
| [[Fichye:Frantz Massenat - Lliga Catalana 2019 - by unnika.jpg|center|128px]]
| ''[[:d:Q16228333|Frantz Massenat]]''
|
|
|-
| style='text-align:right'| 88
|
| ''[[:d:Q19883868|Constitution of Haiti]]''
|
|
|-
| style='text-align:right'| 89
|
| ''[[:d:Q26225095|Caye Sable]]''
| {{Coord|18.7|-72.76667|display=inline}}
| [[Lwès (depatman)|Lwès]]
|-
| style='text-align:right'| 90
|
| ''[[:d:Q60853298|Arcahaie FC]]''
|
|
|-
| style='text-align:right'| 91
| [[Fichye:Danielle Etienne .jpg|center|128px]]
| ''[[:d:Q69803071|Danielle Etienne]]''
|
|
|-
| style='text-align:right'| 92
|
| ''[[:d:Q107122118|Carnejy Antoine]]''
|
|
|-
| style='text-align:right'| 93
| [[Fichye:Grace 2021-08-21 0610Z.jpg|center|128px]]
| ''[[:d:Q108141536|Hurricane Grace]]''
|
|
|-
| style='text-align:right'| 94
|
| ''[[:d:Q110855814|Richardson Viano]]''
|
|
|-
| style='text-align:right'| 95
|
| ''[[:d:Q119952811|Jayro Jean]]''
|
|
|-
| style='text-align:right'| 96
| [[Fichye:UN Haiti - MINUSTAH HQ after 2010 earthquake.jpg|center|128px]]
| ''[[:d:Q166484|Christopher Hotel]]''
| {{Coord|18.5391|-72.3121|display=inline}}
| [[Pòtoprens (komin)|Pòtoprens]]
|-
| style='text-align:right'| 97
|
| ''[[:d:Q1432122|Front for the Advancement and Progress of Haïti]]''
|
|
|-
| style='text-align:right'| 98
|
| ''[[:d:Q3094730|Racing FC]]''
|
|
|-
| style='text-align:right'| 99
|
| ''[[:d:Q3623880|La Gonâve Arrondissement]]''
| {{Coord|18.8322|-72.8658|display=inline}}
| [[Lwès (depatman)|Lwès]]
|-
| style='text-align:right'| 100
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q5639707|Haiti at the Paralympics]]''
|
|
|-
| style='text-align:right'| 101
| [[Fichye:Cathedral of Cap-Haitien.jpg|center|128px]]
| ''[[:d:Q11737318|Our Lady of the Assumption Cathedral, Cap-Haïtien]]''
| {{Coord|19.761|-72.2007|display=inline}}
| [[Kap Ayisyen (komin)|Kap Ayisyen]]
|-
| style='text-align:right'| 102
| [[Fichye:Kenny Chery.jpg|center|128px]]
| ''[[:d:Q26709113|Kenny Chery]]''
|
|
|-
| style='text-align:right'| 103
|
| ''[[:d:Q47571408|Nadine Magloire]]''
|
|
|-
| style='text-align:right'| 104
| [[Fichye:Shan Borgelin (cropped).jpg|center|128px]]
| ''[[:d:Q62078453|Shanyder Borgelin]]''
|
|
|-
| style='text-align:right'| 105
| [[Fichye:Citadelle Laferrière terrace 2.jpg|center|128px]]
| ''[[:d:Q2305026|Ramiers]]''
| {{Coord|19.5736|-72.2442|display=inline}}
| [[Milo (komin)|Milo]]
|-
| style='text-align:right'| 106
| [[Fichye:Route Nationale ^3, Lejene, Haiti - panoramio (7).jpg|center|128px]]
| ''[[:d:Q3043219|deforestation in Haiti]]''
|
|
|-
| style='text-align:right'| 107
|
| ''[[:d:Q3297666|Massif des Montagnes Noires]]''
| {{Coord|19.0833|-72.25|display=inline}}
|
|-
| style='text-align:right'| 108
|
| ''[[:d:Q3504239|Haitian Vodoun Culture Language]]''
|
|
|-
| style='text-align:right'| 109
|
| ''[[:d:Q3589794|Haiti national under-17 football team]]''
|
|
|-
| style='text-align:right'| 110
|
| ''[[:d:Q3873766|Ekip baskètbòl Ayiti]]''
|
|
|-
| style='text-align:right'| 111
| [[Fichye:St. Alexander Nevsky Cathedral - Howell, New Jersey 02.JPG|center|128px]]
| ''[[:d:Q4126487|Russian Orthodox Eparchy of Eastern America and New York]]''
|
|
|-
| style='text-align:right'| 112
| [[Fichye:Michelle Obama and Jill Biden in Haiti 2010.jpg|center|128px]]
| ''[[:d:Q5361449|Elisabeth Delatour Préval]]''
|
|
|-
| style='text-align:right'| 113
|
| ''[[:d:Q5715358|Henri Caesar]]''
|
|
|-
| style='text-align:right'| 114
|
| ''[[:d:Q6771722|Marlena Wesh]]''
|
|
|-
| style='text-align:right'| 115
|
| ''[[:d:Q19881628|2015–16 Haitian parliamentary election]]''
|
|
|-
| style='text-align:right'| 116
|
| ''[[:d:Q26226528|Ilet a Brouee]]''
| {{Coord|18.128333|-73.590556|display=inline}}
| [[Sid (depatman)|Sid]]
|-
| style='text-align:right'| 117
|
| ''[[:d:Q26837183|Mulern Jean]]''
|
|
|-
| style='text-align:right'| 118
| [[Fichye:Bocchit Edmond - 2018 (31046028358) (cropped).jpg|center|128px]]
| ''[[:d:Q56651422|Bocchit Edmond]]''
|
|
|-
| style='text-align:right'| 119
| [[Fichye:Chelsea Surpris.jpg|center|128px]]
| ''[[:d:Q83906425|Chelsea Surpris]]''
|
|
|-
| style='text-align:right'| 120
|
| ''[[:d:Q106205592|Lise-Marie Dejean]]''
|
|
|-
| style='text-align:right'| 121
|
| ''[[:d:Q107476272|Sabiana Anestor]]''
|
|
|-
| style='text-align:right'| 122
|
| ''[[:d:Q113003310|Haiti at the 2022 World Athletics Championships]]''
|
|
|-
| style='text-align:right'| 123
|
| ''[[:d:Q121461135|Haiti at the 2023 World Athletics Championships]]''
|
|
|-
| style='text-align:right'| 124
|
| ''[[:d:Q124742130|2024 Haitian jailbreak]]''
|
|
|-
| style='text-align:right'| 125
|
| ''[[:d:Q134383521|Téo James Michel]]''
|
|
|-
| style='text-align:right'| 126
|
| ''[[:d:Q137183516|Haiti at the 2026 Winter Paralympics]]''
|
|
|-
| style='text-align:right'| 127
|
| ''[[:d:Q4883|Ron Howard]]''
|
|
|-
| style='text-align:right'| 128
|
| ''[[:d:Q110664|Léonard Pétion Laroche]]''
|
|
|-
| style='text-align:right'| 129
| [[Fichye:Hispaniolanpineforest.jpg|center|128px]]
| ''[[:d:Q287885|Hispaniolan pine forests]]''
| {{Coord|18.33|-71.78|display=inline}}
|
|-
| style='text-align:right'| 130
|
| ''[[:d:Q655961|United Nations Transition Mission in Haiti]]''
|
|
|-
| style='text-align:right'| 131
|
| ''[[:d:Q1060772|list of Roman Catholic dioceses in Haiti]]''
|
|
|-
| style='text-align:right'| 132
|
| ''[[:d:Q1353457|Haiti at the 2012 Summer Paralympics]]''
|
|
|-
| style='text-align:right'| 133
|
| ''[[:d:Q1531692|Raboteau Massacre]]''
| {{Coord|19.45|-72.683333|display=inline}}
| [[Gonayiv (awondisman)|Gonayiv]]
|-
| style='text-align:right'| 134
|
| ''[[:d:Q1569605|Haiti Davis Cup team]]''
|
|
|-
| style='text-align:right'| 135
|
| ''[[:d:Q2069340|rail transport in Haiti]]''
|
|
|-
| style='text-align:right'| 136
|
| ''[[:d:Q2299927|Haiti at the 2008 Summer Paralympics]]''
|
|
|-
| style='text-align:right'| 137
| [[Fichye:Flag of Haiti.svg|center|128px]]
| ''[[:d:Q2497054|Haiti at the 2010 Summer Youth Olympics]]''
|
|
|-
| style='text-align:right'| 138
|
| ''[[:d:Q3163953|Janbatis Chavàn]]''
|
|
|-
| style='text-align:right'| 139
| [[Fichye:Lecture-scenique-iphigenie jr-lemoine.jpg|center|128px]]
| ''[[:d:Q3169917|Jean-René Lemoine]]''
|
|
|-
| style='text-align:right'| 140
|
| ''[[:d:Q3316510|Miss Haiti]]''
|
|
|-
| style='text-align:right'| 141
| [[Fichye:Daniele Battaglia.jpg|center|128px]]
| ''[[:d:Q3701868|Daniele Battaglia]]''
|
|
|-
| style='text-align:right'| 142
| [[Fichye:Matthew 2010-09-24 1635Z.jpg|center|128px]]
| ''[[:d:Q4353265|Tropical Storm Matthew]]''
|
|
|-
| style='text-align:right'| 143
|
| ''[[:d:Q5856947|Fe y Alegría]]''
|
|
|-
| style='text-align:right'| 144
| [[Fichye:EL SAIEH Issa 00.jpg|center|128px]]
| ''[[:d:Q5922934|Issa El-Saieh]]''
|
|
|-
| style='text-align:right'| 145
| [[Fichye:Human rights index vdem, HTI.svg|center|128px]]
| ''[[:d:Q5938282|human rights in Haiti]]''
|
|
|-
| style='text-align:right'| 146
|
| ''[[:d:Q6726315|Madame Max Adolphe]]''
|
|
|-
| style='text-align:right'| 147
|
| ''[[:d:Q7136383|Parc St. Victor]]''
| {{Coord|19.753611|-72.2075|display=inline}}
| [[Kap Ayisyen (komin)|Kap Ayisyen]]
|-
| style='text-align:right'| 148
|
| ''[[:d:Q16587373|National Unity Party]]''
|
|
|-
| style='text-align:right'| 149
| [[Fichye:Cathédrale Jérémie Haïti.JPG|center|128px]]
| ''[[:d:Q17608165|St. Louis King of France Cathedral]]''
| {{Coord|18.6447|-74.1146|display=inline}}
| [[Jeremi (komin)|Jeremi]]
|-
| style='text-align:right'| 150
| [[Fichye:Marie-Denise Douyon au maison de la culture Claude-Léveillé.png|center|128px]]
| ''[[:d:Q19666225|Marie-Denise Douyon]]''
|
|
|-
| style='text-align:right'| 151
|
| ''[[:d:Q19895065|French Haitian]]''
|
|
|-
| style='text-align:right'| 152
|
| ''[[:d:Q24744408|2016–17 Haitian Senate election]]''
|
|
|-
| style='text-align:right'| 153
|
| ''[[:d:Q26704937|Frantz Dorsainvil]]''
|
|
|-
| style='text-align:right'| 154
|
| ''[[:d:Q28086332|Ashkanov Apollon]]''
|
|
|-
| style='text-align:right'| 155
|
| ''[[:d:Q28823593|Anne Marie Coriolan]]''
|
|
|-
| style='text-align:right'| 156
|
| ''[[:d:Q28941174|FC Juventus des Cayes]]''
|
|
|-
| style='text-align:right'| 157
|
| ''[[:d:Q30074499|Axel Louissaint]]''
|
|
|-
| style='text-align:right'| 158
|
| ''[[:d:Q34383826|Haiti at the 2017 World Championships in Athletics]]''
|
|
|-
| style='text-align:right'| 159
|
| ''[[:d:Q51120334|Myrlande Constant]]''
|
|
|-
| style='text-align:right'| 160
|
| ''[[:d:Q57037767|Ángel Orelién]]''
|
|
|-
| style='text-align:right'| 161
|
| ''[[:d:Q62653313|Ronaldo Damus]]''
|
|
|-
| style='text-align:right'| 162
|
| ''[[:d:Q68166407|Haiti at the 2019 World Championships in Athletics]]''
|
|
|-
| style='text-align:right'| 163
|
| ''[[:d:Q70531330|Mikerline Saint-Félix]]''
|
|
|-
| style='text-align:right'| 164
|
| ''[[:d:Q83880803|Roseline Éloissaint]]''
|
|
|-
| style='text-align:right'| 165
|
| ''[[:d:Q83887546|Kethna Louis]]''
|
|
|-
| style='text-align:right'| 166
| [[Fichye:Kiki Haiti.JPG|center|128px]]
| ''[[:d:Q118219922|Shwendesky Joseph]]''
|
|
|-
| style='text-align:right'| 167
| [[Fichye:Brooklyn FC vs DC Power FC (Aug 2026) 22 (cropped).jpg|center|128px]]
| ''[[:d:Q118366884|Claire Constant]]''
|
|
|-
| style='text-align:right'| 168
| [[Fichye:82 Stevenson Savart 0211.jpg|center|128px]]
| ''[[:d:Q132831156|Stevenson Savart]]''
|
|
|-
| style='text-align:right'| 169
| [[Fichye:Aleksandr Guboglo CF Montreal NYCFC 6.28.25-016 (cropped).jpg|center|128px]]
| ''[[:d:Q132862176|Aleksandr Guboglo]]''
|
|
|-
| style='text-align:right'| 170
|
| ''[[:d:Q766764|Dieudonné LaMothe]]''
|
|
|-
| style='text-align:right'| 171
|
| ''[[:d:Q1089416|Andre Pascal]]''
|
|
|-
| style='text-align:right'| 172
|
| ''[[:d:Q1149808|Brother Voodoo]]''
|
|
|-
| style='text-align:right'| 173
|
| ''[[:d:Q1654386|Inivèsite Notre Dame Ayiti]]''
| {{Coord|18.528689|-72.335342|display=inline}}
| [[Pòtoprens (komin)|Pòtoprens]]
|-
| style='text-align:right'| 174
| [[Fichye:Les Trois-Rivières en Haïti.jpg|center|128px]]
| ''[[:d:Q1952095|Les Trois Rivières]]''
| {{Coord|19.95|-72.866667|display=inline}}
|
|-
| style='text-align:right'| 175
|
| ''[[:d:Q2036275|Osvaldo Jeanty]]''
|
|
|-
| style='text-align:right'| 176
| [[Fichye:Olympic Athlete.jpg|center|128px]]
| ''[[:d:Q2425878|Ginou Etienne]]''
|
|
|-
| style='text-align:right'| 177
|
| ''[[:d:Q3208335|Montagne Terrible]]''
| {{Coord|18.8897|-72.4008|display=inline}}<br/>{{Coord|18.88972|-72.40028|display=inline}}
| [[Sen Mak (awondisman)|Sen Mak]]
|-
| style='text-align:right'| 178
|
| ''[[:d:Q3366461|Fusion of Haitian Social Democrats]]''
|
|
|-
| style='text-align:right'| 179
| [[Fichye:Fort Saint Joseph - Fort Liberte (Looking South).jpg|center|128px]]
| ''[[:d:Q3403821|Capture of Fort-Dauphin]]''
| {{Coord|19.667778|-71.839722|display=inline}}
|
|-
| style='text-align:right'| 180
|
| ''[[:d:Q3419888|Rally of Progressive National Democrats]]''
|
|
|-
| style='text-align:right'| 181
|
| ''[[:d:Q3485996|Siege of Port-au-Prince]]''
| {{Coord|18.5425|-72.338611|display=inline}}
|
|-
| style='text-align:right'| 182
|
| ''[[:d:Q3532552|Tortug' Air]]''
|
|
|-
| style='text-align:right'| 183
| [[Fichye:Yvette Bonny Entrée principale.jpg|center|128px]]
| ''[[:d:Q3574037|Yvette Bonny]]''
|
|
|-
| style='text-align:right'| 184
|
| ''[[:d:Q3589796|équipe d'Haïti de volley-ball féminin]]''
|
|
|-
| style='text-align:right'| 185
| [[Fichye:Alix Pasquet.jpg|center|128px]]
| ''[[:d:Q4727515|Alix Pasquet]]''
|
|
|-
| style='text-align:right'| 186
| [[Fichye:American University of the Caribbean (Haiti).jpg|center|128px]]
| ''[[:d:Q4745323|American University of the Caribbean, Haiti]]''
| {{Coord|18.2134|-73.7547|display=inline}}
| [[Okay (komin)|Okay]]
|-
| style='text-align:right'| 187
|
| ''[[:d:Q4809359|association football in Haiti]]''
|
|
|-
| style='text-align:right'| 188
| [[Fichye:Haiti-locator.png|center|128px]]
| ''[[:d:Q4871314|Battle of Jean-Rabel]]''
| {{Coord|19.918333|-73.2|display=inline}}
|
|-
| style='text-align:right'| 189
|
| ''[[:d:Q4895878|Bertrand Madsen]]''
|
|
|-
| style='text-align:right'| 190
|
| ''[[:d:Q5354703|elections in Haiti]]''
|
|
|-
| style='text-align:right'| 191
|
| ''[[:d:Q5639691|Haiti Billie Jean King Cup team]]''
|
|
|-
| style='text-align:right'| 192
|
| ''[[:d:Q5639745|1987 Haitian general election]]''
|
|
|}
{{Wikidata list end}}
kd4g3fornyw5jq0546c1eijysr8b3jt
Miss Van
0
89813
888713
868747
2026-10-06T18:17:31Z
CommonsDelinker
161
Removing [[:c:File:Miss_Van_London.jpg|Miss_Van_London.jpg]], it has been deleted from Commons by [[:c:User:The Squirrel Conspiracy|The Squirrel Conspiracy]] because: per [[:c:Commons:Deletion requests/File:Miss Van London.jpg|]].
888713
wikitext
text/x-wiki
{{draft|pèsonalite franse}}
{{Infobox Atis
|imaj=Miss Van (aikijuanma).jpg
|caption=Yon grafiti Miss Van nan Barcelone an 2005.
}}
'''Miss Van''', non reyèl '''Vanessa Alice Bensimon''', ki fèt an 1973<ref>{{Lyen web |language=en |author= |title=Miss Van |url=https: // rkd.nl/en/explore/artists/352238 |date= |site=rkd.nl }}</ref>, se yon [[atis]], [[pent]], atis grafiti ak [[grafiti]]-atis [[ Toulouse |toulouse]].
== Biyografi ==
[[File:Miss Van II (aikijuanma).jpg|thumb|upright=1.1|Yon grafiti Miss Van nan Barcelone an 2006]]
[[File:Miss Van (Ricardo Chico).jpg|thumb|upright=1.1|Yon grafiti Miss Van nan Barcelone an 2005]]
[[File:Miss Van Berlin.jpg|thumb|upright=1.1|Yon grafiti Miss Van nan Bèlen an 2007]]
Miss Van te kòmanse penti nan lari Toulouse a laj de 18 an<ref name="blog.stripart" />{{,}}<ref name="artistikrezo" />{{,}}<ref name ="street -art-avenue" />, nan kòmansman ane [[1990 yo]], ak [[Mademoiselle Kat]], yon lòt atis Toulouse<ref>{{Web link |langue=fr |author= |title= Mademoiselle Kat at anlè ak adwat nan sant afich Toulouse |url= https://france3-regions.francetvinfo.fr/occitanie/haute-garonne/toulouse/mademoiselle-kat-tout-en-haut-et- in-the- centre-of-the-poster-of-toulouse-387081.html |date= |site=france3-regions.francetvinfo.fr }}</ref>{{,}}<ref>{{Web link |langue=fr |author= |title=La Féline de Mademoiselle Kat – Galerie l'Oeil Ouvert |url=https://www.artistikrezo.com/agenda/la-feline-de-mademoiselle-kat-galerie-loeil- open.html | dat=9 Avril 2015 |sit=www.artistikrezo.com }}</ref>{{,}}<ref>{{Lyen Web |langue=fr |author= |title=Mademoiselle Kat |url= https:/ /rose-beton.com/mademoiselle-kat/ |dat=9 avril 2015 |sit=rose-beton.com }}</ref>{{,}}<ref name="rose-beton" /> .
Li fè yon diplòm nan Art vizyèl nan Toulouse<ref name="blog.stripart" />{{,}}<ref name="artistikrezo" />, li ap viv ak travay nan Barcelona<ref name="blog.stripart " />{{,}}<ref name="artistikrezo" />{{,}}<ref name="street-art-avenue" />.
Style inovatè li yo diferansye ak atizay iben, tradisyonèlman maskilen<ref name="street-art-avenue" />. Li ekspoze atravè lemond, soti nan [[Pari]] (nan Galeri [[Magda Danysz]]), rive nan [[New York]], [[Los Angeles]], [[Barcelone]] e menm [[Manila. ]].
== Travay ==
Tandans ki te enfliyanse travay li yo varye soti nan [[figurasyon gratis]] rive nan pin-ups nan ane 1950 yo atravè komik [[Vaughn Bodé]]<ref name="street-art-avenue " /> ak simagri relijye<ref name="street-art-avenue" />. Travay li te evolye sou tan. Liy la te vin pi rafine ak desen an te vin an detay. "Pope" yo stilize nan kòmansman an te vin pi reyalis, fè nwa ak ekspresif.
== Egzibisyon, evènman ak reyalizasyon piblik ==
;1999
* Egzibisyon Miss Van, galeri Diloy, Toulouse ({{date-|Fevriye 1999}})<ref>{{Lyen web |language=fr |author= |title=Toulouse. Miss Van: fanm-pitit la bay lari koulè |url=https://www.ladepeche.fr/article/1999/08/31/207673-miss-van-femme-enfant-donne-couleurs-rue.html |dat=31/08/1999 |sit=www.ladepeche.fr }}</ref>{{,}}<ref>{{Lyen entènèt |langue=fr |otè= |tit=Miss Van egzibisyon |url = http://missvan.free.fr/diloy.htm |date=31/08/1999 |site=missvan.free.fr }}</ref>
;2003
* WebJam aswè, nan kad Art, Code et Mouvement, [[Centre national d'art et de culture Georges-Pompidou]], Paris ({{date-|24 me 2003}})<ref>{{Lyen web |langue=fr |author= |title=Webjam |url=https://www.centrepompidou.fr/fr/programme/agenda/evenement/cez6aAo |site=www.centrepompidou.fr |date=}}</ref>
* Egzibisyon kolektif ak Icon Tada ak [[Nasty (atis grafiti)|Nasty]], Galeri [[Magda Danysz]], nan {{13yèm|awondisman}} Paris ({{dat-|19 mas}} - { { dat-|20 avril 2011}})<ref>{{Lyen web |langue=fr |author= |title=Miss Van Avril-Me 2003 |url=https://www.maquis-art.com/News -311 -Miss-Van-Avril-Me-2003-Graffiti-Tag-Street-Arthtml |sit=www.maquis-art.com |dat=28-02-2003}}</ref>
;2004
* ''Cute and Scary'', gwoup egzibisyon, Flux Factory, New York ([[Etazini]]) ({{date-|20 novanm}} - {{date-|18 desanm 2004}})<ref >{{Lyen entènèt |language=en |otè= |title=Flux Factory prezante ak fyète |url=https://www.fluxfactory.org/cute-scary/ |sit=www.fluxfactory.org |dat=28-02 -2003}}</ref>
;2005
* ''Toma Dame'', egzibisyon solo, Galeri Iguapop, [[Barcelone]] (Espay)
* ''Dont Be Shy'', egzibisyon solo, Jonathan LeVine Gallery, [[New York]] ([[Etazini]])
;2006
* ''Spank the Monkey'', Baltic, Center for Contemporary Art, [[Gateshead]] ({{date-|27 septanm 2006}} - {{date-|7 janvye 2007}}){{sfn|Pedro Alonzo |Peter Doroshenko|Carlo McCormick|Baltic Center for Contemporary Art|2006}}
;2007
* ''Bestial'', egzibisyon gwoup miss Van te òganize nan galri Iguapop nan [[Barcelone]] ([[Espay]]) ({{dat-|2007}})<ref>{{Lyen entènèt |lang= fr |author= |title=Mademoiselle Kat |url=http://www.galerie-ghp.com/les-artistes/mademoiselle-kat/ |site=www.galerie-ghp.com |date=}}</ref >{{,}}<ref>{{Web link |language=es |author=Verónica Rodríguez |title=BESTIAL: Miss Van y Protest, en la Galería Iguapop |url=https://www.dolcecity.com/barcelona /2007/06/bestial-miss-van-y-protest-en-la-galera.asp |site=www.dolcecity.com |date=29 jen 2007}}</ref>
;2008
* ''Still A Little Magic'', due ak Jeremy Fish, FIFTY24SF Gallery, San Francisco ([[Etazini]]) ({{dat-|4 desanm}} - {{dat-|30 desanm 2008}} )<ref>{{Lyen entènèt |language=en |author= |title=Jeremy Fish & Miss Van Exhibition nan FIFTY24SF Gallery |url=https://hypebeast.com/2008/12/jeremy-fish-miss-van- egzibisyon-nan-fifty24sf-galeri |sit=hypebeast.com |dat=}}</ref>
* ''Canto Negro y Brujerias'', egzibisyon an gwoup, Merry Karnowsky Gallery, [[Bèlen]] ([[Almay]]) ({{dat-|26 jiyè}} - {{dat-|23 out 2008} })
;2009
* ''From Style Writing to art (yon street art anthology)'', [[Magda Danysz]] Gallery, Paris ({{dat-|24 oktòb}} - {{dat-|21 novanm 2009}})< ref >{{Lyen web |language=fr |author= |title=De Style Writing rive nan atizay (yon anthology atizay lari) |url=https://www.paris-art.com/from-style-writing-to- art -a-street-art-antology/ |sit=www.paris-art.com |date=}}</ref>{{,}}{{sfn|Magda Danysz|Mary-Noëlle Dana|2009}}{ { ,}}<ref>{{Lyen entènèt |language=fr |author=Stéphanie Courty |tit=De Style Writing rive nan atizay (yon antoloji atizay lari) |url=https://www.paris-art.com/from - style-writing-to-art-a-street-art-antology-2/ |sit=www.paris-art.com |date=02 Nov 2009}}</ref>
* ''StringBreak'', egzibisyon gwoup ak 100% fi (Anne Brunet, Miss Van, Mijn Schatje, Liz McGrath, [[Amandine Urruty]], Darkimey, Cindy Gravelat, [[Caroline Sury]] ak [[Mademoiselle Kat] ]) nan galri GHP (Galerie de la Halle aux Poissons) nan [[Toulouse]] ({{date-|2009}})<ref>{{Web link |langue=fr |author= |title=StringBreak |url =http://www.galerie-ghp.com/tag/stringbreak/ |site=www.galerie-ghp.com |date=2009}}</ref>
;2010
* ''Tout nan! Illustration and figuration'', group exhibition, GHP gallery (Galerie de la Halle aux Poissons), Toulouse ({{date-|Me 22}} - {{date-|jiye 17, 2010}})<ref>''Twinkles'', egzibisyon solo, Galeri [[Magda Danysz]], nan {{11yèm|awondisman}} Pari ({{dat-|19 mas}} - <nowiki>{{dat-|30 avril 2011}}</nowiki> ){{Web link|langue=fr|author=|title=Expo Miss Van|url=https://www.maquis-art.com/News-1367-Expo-Miss-Van-Graffiti-Tag - Street-Art.html|sit=www.maquis-art.com|dat=18-03-2011}}</ref>{{,}}<ref>{{Lyen entènèt |lang=fr |otè= | tit =Twinkles |url=https://www.paris-art.com/twinkles/ |sit=www.paris-art.com |dat=}}</ref>{{,}}<ref>{{Web lyen |language=fr |otè=Leïla Elyaakabi |tit=Twinkles |url=https://www.paris-art.com/twinkles-2/ |sit=www.paris-art.com |dat=19 avril 2011} } </ref>
;2012
* ''Wild at Heart'', egzibisyon solo, Copro Gallery, [[Santa Monica]] ([[Etazini]]) ({{dat-|2012}})<ref>{{Lyen entènèt |langu= ht |otè= |title=Miss Van "Wild at Heart" Egzibisyon @ Copro Gallery |url=https://hypebeast.com/2012/8/miss-van-wild-at-heart-exhibition-copro-gallery |sit = hypebeast.com |date=2012}}</ref>{{,}}{{sfn|Copro Nason Gallery|Miss Van|2012}}
* ''F*ck Art'' 2012, [[Museum of Sex]] (aka MoSex), [[New York]] City's Fifth Avenue ([[Etazini]] ) ({{dat-|8 fevriye}} - {{dat-|10 jen 2012}})
;2013
* ''Women on the Walls'', Miami Wynwood Wall, Art Basel 2013, [[Miami]] ([[Etazini]]) ({{dat-|Desanm 2013}})<ref>{{Lyen entènèt | language=en |author=videos |title=Miss Van /// Women on the Walls, Miami Wynwood Wall |url=https://street-art-avenue.com/2014/08/miss-van-women-on - the-walls-miami-wynwood-wall-8917 |sit=street-art-avenue.com |dat=8 out 2014}}</ref>
* ''Room for Cream'', Soze Gallery, [[Los Angeles]] ([[Etazini]]) ({{date-|Oktòb 2013}})<ref name="blog.st ripart" />
* Beco do Batman, miray ki pentire ak Ciro Schu, [[Vila Madalena]], [[São Paulo]] (Brezil) ({{dat-|2013}})<ref>{{Lyen entènèt |lang=en |otè =vidos |title=Miss Van x Ciro Schu /// Beco do Batman, Sao Paulo |url=https://street-art-avenue.com/2017/01/miss-van-x-ciro-schu-beco- do-batman-sao-paulo-18195 |sit=street-art-avenue.com |dat=29 janvye 2017}}</ref>
* ''F*ck Art'' 2013, [[Museum of Eroticism (New York)|Museum of Sex]] (aka MoSex), [[New York]] City's Fifth Avenue ([[Etazini]] ) ({ {dat-|8 fevriye}} - {{dat-|17 mas 2013}})<ref>{{Lyen entènèt |language=en |otè= |tit=Kounye a nan View nan NYC > F*ck Art |url =https://www.museumofsex.com/exhibitions/fck-art/ |sit=www.museumofsex.com |dat=}}</ref>
;2014
* ''Bien Bonitas de Paris'', [[Le MUR]], Paris ({{date-|Jen 2014}})<ref>{{Web link |language=en |author=Monsieur Mitri |title=Miss Van “Bien Bonitas de Paris” / Le MUR Oberkampf Paris |url=https://streetartunitedstates.com/miss-van-bien-bonitas-de-paris-le-mur/ |site=streetartunitedstates.com |date=2014}} </ref>
* ''Miss Van: Glamorous Darkness'', egzibisyon solo, , StolenSpace Gallery, [[London]] ([[Wayòm Ini]]) ({{dat-|Me 2014}})<ref>{{Lyen entènèt | language=en |author= |title=Miss Van: Glamorous Darkness - 8 me - 31 me 2014 |url=https://www.artsy.net/show/stolenspace-gallery-miss-van-glamorous-darkness | sit =www.artsy.net |dat=2014}}</ref>
;2016
* ''Artmossphere'', Street art biennial, [[Moskou]] ([[Larisi]]) ({{dat-|30 out 2016}} - {{dat-|18 janvye 2017}})<ref > {{Lyen entènèt |language=en |author=Jaime Rojo & Steven Harrington, Contributor |title=A Moscow Street Art Biennale: Artmossphere 2016 |url=https://www.huffpost.com/entry/moscow-street-art - biennal_b_12187586 |sit=/www.huffpost.com |dat=28 septanm 2016}}</ref>
* ''La Symphonie des Songes'', Festival Rose Béton de Toulouse ({{date-|Out 2016}})<ref>{{Web link |langue=fr |author= |title="Rose Béton" - La symphonie des Songes |url=http://www.street-heart.com/PM-D31000-09%20Miss_Van%20Toulouse.htm |site=www.street-heart.com |date=2016}}</ref>{{ ,}}<ref>{{Web link |langue=fr |author= |title=Pi bon plas kote atizay lari kite mak li nan Toulouse |url=https://www.grizette.com/street-art-a - toulouse-pi bon-spots/ |sit=www.grizette.com |date=2016}}</ref>
* ''En el cielo en mi pelo'', egzibisyon solo, mize CAC (Centro de Arte Contemporáneo de [[Málaga]]), [[Malaga]] ({{date-|21 jen}} - {{date-|18 septanm, 2016 }})<ref>{{Lyen web |language=en |author= |title=Miss Van nan CAC Malaga - 21 jen. 2016 |url=https://matthewnamour.com/miss-van-au-cac-malaga/ |site=matthewnamour.com |date=2016}}</ref>{{,}}{{sfn|Fernando Frances| Miss Van|2016}}{{,}}<ref>{{Lyen Entènèt |language=en |author=Carol Civre |title=Premye Show Mize Lejand Atizay Lari Miss Van Ouvè nan CAC Málaga |url=https:// news.artnet.com/art-world/miss-van-first-museum-show-malaga-525146 |site=news.artnet.com |dat=24 jen 2016}}</ref>
* ''The Expulsion Of The Limbo'', egzibisyon an gwoup, Fousion Gallery, Barcelona ({{dat-|10 jen}} - {{dat-|20 jiyè 2016}})
;2017
* Grafiti nan chanm otèl Villa du Taur, [[rue du Taur]], nan [[Toulouse]] ({{date-|2017}})<ref>{{Web link |langue=fr |author= Silvana Grasso |tit=Toulouse. Miss Van grafiti chanm otèl Toulouse |url=https://www.ladepeche.fr/article/2017/11/29/2694187-miss-van-graffe-les-chambres-d-hotels-toulousains.html | site=www .ladepeche.fr |date=29/11/2017}}</ref>
* ''Urbain.es'', Condition Publique, egzibisyon an gwoup, Street Generations, Roubaix ({{dat-|31 mas}} - {{dat-|18 jen 2017}})<ref>{{Lyen entènèt | lang =fr |author= |title=Urbain.es |url=https://danyszgallery.com/fr/viewing-room/31-urbain.es/ |site=danyszgallery.com |date=2017}}</ref >
* ''Flor de Piel'', egzibisyon solo, Victor Lope Gallery, Barcelona ({{dat-|26 janvye}} - {{dat-|11 mas 2017}})
;2018
* ''Kaleidoscope'', egzibisyon an gwoup, Enstiti Bernard Magrez ({{date-|8 desanm 2018}} - {{date-|17 fevriye 2019}})<ref>{{Lyen web |language=fr | otè= Élodie Cabrera |titre=3 Enstiti Kiltirèl Bernard Magrez pran sou atizay iben |url=https://www.beauxarts.com/lifestyle/tour-dhorizon-des-nouveaux-lieux-du-street- art-en- france/ |sit=www.beauxarts.com |dat=12 janvye 2019}}</ref>
* ''Altered Reality'', egzibisyon an gwoup (Robert Proch, Bezt, Will Barras, Andrew Hem, Miss Van, Doze Green, Éric Lacan, Dulk), galri Chenis Longhi, Paris ({{date-|8 septanm}} - {{dat-|13 oktòb 2018}})<ref name="chenuslonghi" />
* Retrospektiv sou 15 ane kreyasyon, egzibisyon solo, Galeri Openspace, [[Pari]] ({{dat-|19 me}} - {{dat-|16 jen 2018}})<ref>{{Lyen entènèt | language =fr |author=Hélène Planquelle |title=Miss Van, retounen sou 15 ane kreyasyon |url=https://urbanart-paris.fr/2018/06/miss-van-inverse-sur-15-ans-de - kreyasyon/ |sit=urbanart-paris.fr |date=2018}}</ref>
* ''Festin de arte'', egzibisyon kolektif, galeri Isabel Croxatto, [[Santiago|Santiago de Chile]] ({{dat-|fevriye 2018}})
* ''Convulsive Beauty, Then & Now'', due ak [[Leonor Fini]], Weinsten gallery, [[San Francisco]] ([[Etazini]]) ({{dat-|janvye}} - {{dat-|fevriye 2018}})
;2019
* ''Urban Conquest'', Street Art nan mize a, [[Mizeum of Fine Arts of Calais]], Calais ({{dat-|6 avril}} - {{dat-|3 novanm 2019}})
* ''The muse of the night'', [[fresco]], Ostend ([[Bèljik]]) ({{date-|Avril 2019}})<ref>{{Lyen entènèt |language=fr |author= |title=Muse nan mitan lannwit lan |url=https://www.trompe-l-oeil.info/street-art-wrld/details.php?image_id=10623 |site=www.trompe-l-oeil.info |date=2019} }</ref>
;2020
* ''Fair Play'', egzibisyon an gwoup (Doze Green, Miss Van, Andrew Hem, Augustine Kofie, [[Levalet]], Rafael Gerlach/SatOne, Dan Rawlings, Mist, [[Rouge Hartley]]), galri Chenis Longhi , Pari ({{dat-|24 oktòb}} - {{dat-|14 novanm 2020}})<ref name="chenuslonghi" />
* ''Ansanm'', egzibisyon an gwoup (Doze Green, Miss Van, Andrew Hem, Mist, Augustine Kofie, Dan Rawlings, Rafael Gerlach/SatOne, Éric Lacan, [[Madame (atis)|Madame]], [[Levalet] ], Philippe Hérard), galri Chenis Longhi, Pari ({{dat-|6 jen}} - {{dat-|11 jiyè 2020}})<ref name="chenuslonghi" />
;2021
* Fousion Finest 2021, egzibisyon an gwoup, Fousion Gallery, [[Barcelone]] ({{date-|14 oktòb}} - {{dat-|31 oktòb 2021}})
* ''Pale Moonlight Muses'', egzibisyon solo, Dorothy Circus Gallery, [[Lonn|Lond]] ({{dat-|Avril 2021}})
* ''Masquerade ball'', egzibisyon an gwoup, Ruby Gallery, [[Bruxèl]] ({{dat-|28 janvye}} - {{dat-|21 mas 2021}})
;2022
* ''Terrae Novae'', ekspozisyon gwoup (Mono Cieza, Miss Van, David de la Mano, Victor Castillo, Bruno Pontiroli, Dilka Bear, Will Barras, Peca & Ilia Mayer), Fousion Gallery, [[Barcelone]] (Espay). ) ({{dat-|24 novanm 2022}} - {{dat-|15 janvye 2023}})<ref>{{Lyen Entènèt |language=en |otè= |tit=Fousion Gallery |url=https: // fousiongallery.com/event/terrae-novae |sit=fousiongallery.com |dat=}}</ref>
* ''Evanescent Splendor'', Harman Projects, New York ([[Etazini]]) ({{date-|3 septanm}} - {{date-|24 septanm 2022}})<ref>{{Link web |language=en |author= |title=Miss Van "Evanescent Splendor" - 3 septanm – 24 septanm 2022 - Fèmen |url=https://www.artsy.net/show/harman-projects-miss-van- evanescent-splendor?sort=partner_show_position |sit=www.artsy.net |dat=}}</ref>
== Nòt ak referans ==
{{referans|referans=
<ref name="artistikrezo">{{Lyen Web |language=fr |author= |title=Miss Van |url=https://www.artistikrezo.com/art/miss-van.html |date= |sit= www.artistikrezo.com }}</ref>
<ref name="blog.stripart">{{Lyen entènèt |language=fr |author= |title=Atis iben Miss Van a tantalize je pasan yo |url=https://www.blog.stripart.com / art-urbain/lart-urbain-de-miss-van-emoustille-le-regard-des-passants/ |date= |site=www.blog.stripart.com }}</ref>
<ref name="chenuslonghi">{{Lyen entènèt |language=fr |author=Hélène Planquelle |tit=ekspozisyon ki sot pase yo |url=https://chenuslonghi.bigcartel.com/expositions |date= |sit=chenuslonghi.bigcartel. com }}</ref>
<ref name="rose-beton">{{Lyen entènèt |language=fr, nan |otè= |title=Miss Van |url=https://rose-beton.com/miss-van/ |dat= |sit =rose-beton.com }}</ref>
<ref name="street-art-avenue">{{Lyen entènèt |language=fr |author= |title=Biyografi Miss Van |url=https://street-art-avenue.com/biographie-de-miss -van |date= |sit=street-art-avenue.com }}</ref>
}}
== Bibliyografi ==
* {{Liv |otè1=Alessandra Mattanza |responsablite1=otè |otè2= Stephanie Utz |responsabilite2=prefas |tit=Street Art |soustit=regard yon fanm |editè= |Koleksyon an inatandi=|nimewo nan koleksyon= |mwa= | ane=2022 |paj total=240 |isbn=979-10-295-0986-5 |prezantasyon sou entènèt=https://livre.fnac.com/a17000152/Alessandra-Mattanza-Street-Art-un -gaze-of- fanm-24-pòtrè-atis-fiyanse |language=fr |paj=172 a 179}}
* {{Travay |otè1=Samantha Longhi |responsabilite1=tèks |otè2=Natacha Bensimon |responsabilite2=Prefas powèm |tit=Miss Van ak muz li yo |soustit= |editè=Edisyon Kritè|koleksyon=Opus Délits |nimewo nan koleksyon =80 |mwa= |ane=2018 |total paj=96 |isbn=9782370260673 |prezantasyon sou entènèt=https://www.criteres-editions.com/accueil/201-80-miss-van-et-ses-muses -9782370260673. html |langue=fr |paj=}}
* {{Travay |otè1=Fernando Frances |responsablite1=tèks |otè2=Miss Van |responsabilite2=atizay |tit=El Viento En Mi Pelo |subtitle= |editè=CAC Málaga |koleksyon= |nimewo nan koleksyon= |mwa = | ane=2016 |total paj=100 |isbn=9788494435461 |prezantasyon sou entènèt= |language=es,en |paj=}}
* {{Liv |otè1=Asosyasyon Le Mur |responsablite1= |otè2= |responsabilite2= |tit=LE MUR - MIYA A |subtitle=2010 - 2015 |editè=Hermann |mwa=Novanm |ane=2016 |total paj = 264 |isbn=9782705692902 |prezantasyon sou entènèt=https://www.mollat.com/livres/896855/le-mur-2010-2015-125-performances-d-artistes-urbains-the-wall-2010-2015 -125- street-art-performances }}
* {{Liv |otè1=Dorothy Circus Gallery |responsablite1= |otè2= |responsabilite2= |tit=Walk on the Wild Side |subtitle= |editè= Drago |koleksyon=|nimewo nan koleksyon= |mwa= |ane=2013 |total paj=146 |isbn=978-88-88493-95-4 |prezantasyon sou entènèt= |lang =en | paj=}}
* {{Liv |otè1=Copro Nason Gallery |responsabilite1= |otè2=Miss Van |responsabilite2= |tit=Wild at heart |subtitle=Miss Van |editè= Drago |koleksyon=|nimewo nan koleksyon= |mwa= | ane= 2012 |total paj=56 |isbn=978-88-88493-93-0 |prezantasyon sou entènèt= |lang=en |paj=}}
* {{Travay |otè1=Miss Van |responsabilite1= |otè2=Magda Danysz |responsabilite2=entwodiksyon |tit=Twinkles |soustit=Miss Van |editè= Drago |koleksyon=|nimewo nan koleksyon= |mwa= |ane= 2011 | total paj=80 |isbn=978-88-88493-78-7 |prezantasyon sou entènèt=https://artoyz.com/products/miss-van-twinkles |language=en |paj=}}
* {{Liv |otè1=Maximiliano Ruiz |responsablite1= |otè2= |rèsponsablite2= |tit=Mi ak ankadreman |subtitle=atis ki soti nan lari |editè= Gestalten |koleksyon=|kantite koleksyon= |mwa= | ane= 2011 |total paj=269 |isbn= |prezantasyon sou entènèt=|language=en |paj=}}
* {{Liv |otè1=Dorothy Circus Gallery |responsablite1= |otè2= |responsablite2= |tit=Pop Surrealism |subtitle=Ala yon mond mèvèy |editè= Drago |koleksyon=|nimewo nan koleksyon= |mwa= |ane =2010 |total paj=91 |isbn=978-88-88493-69-5 |prezantasyon sou entènèt=https://www.amazon.com/Pop-Surrealism-What-Wonderfool-World/dp/8888493697 |langu= nan |paj =}}
* {{Liv |otè1=Magda Danysz |responsablite1=otè |otè2=Mary-Noëlle Dana |responsabilite2=kolaborasyon |tit=Soti nan ekriti style rive nan atizay |subtitle=yon antoloji Street Art |editè=Drago Arts & Communication |koleksyon =| nimewo nan koleksyon= |mwa=Novanm |ane=2009 |total paj=400 |isbn=978-8888493527 |prezantasyon sou entènèt= |lang=en |paj=}}
* <nowiki>{{Liv |otè1=Pedro Alonzo |responsablite1=otè |otè2=Peter Doroshenko |responsablite2=otè |otè3=Carlo McCormick |responsabilite3=otè |otè4= Baltic Center for Contemporary Art |responsablite4=Enstitisyon akòde |tit=Spank the monkey |subtitle= |editè= Die Gestalten Verlag, Berlin |koleksyon=|nimewo nan koleksyon= |mwa= |ane=2006 |total paj=175 |isbn=9783899551747 |prezantasyon sou entènèt= |lang=en |paj=}}</nowiki>
=== Videyo ===
* {{YouTube |id=miNp58ZuYZc |title=VNA - Miss Van nan Sao Paulo |language=en |channel=VNAMagazine |dat=22 novanm 2013 |accessed= }}
== Apendis ==
{{Lòt pwojè
|Komen=Kategori:Miss Van
}}
=== Atik ki gen rapò ===
* [[Galeri Magda Danysz]]
=== Lyen ekstèn ===
{{Koneksyon}}
{{CLEDETRI:Mis Van}}
[[Kategori:Atis grafiti franse]]
[[Kategori:Nesans an Jiyè 1973]]
[[Kategori:Nesans nan Toulouse]]
[[Kategori:Pseudonym]]
[[Kategori:Fi atis lari]]
[[Kategori:Atis franse kontanporen]]
[[Kategori:Atis iben]]
[[Kategori:Grafiti-atis]]
[[Kategori:MUR Kolaboratè]]
[[Kategori:Atis feminis]]
pzp5oa1obnxdtpgudbq777430u0mxng
Anaide Beiriz
0
95806
888723
888702
2026-10-06T21:44:49Z
Kitanago
19629
koreksyon lyen
888723
wikitext
text/x-wiki
[[Fichye:Anayde Beiriz.jpg|vignette|Anaíde Beiriz]]
'''Anaíde Beiriz''' , se te yon pwofesè ak [[Pwezi|powèt]] [[Brezil|brezilyen]] .Non li te lye ak Istwa Paraíba, akòz de yon trajedi li te enplike, ansanm ak avoka ak yon [[jounalis]] João Duarte Dantas, ki se moun li te gen yon relasyon fanm ak gason <ref name="MdoBrasil" >{{Lien|lang=pt|trad=João Duarte Dantas|fr=João Duarte Dantas}}</ref> <ref>'''Anayde Beiriz''', selon l'écriture de son époque, '''Anaíde Beiriz''' aujourd'hui.</ref>
== Jan nou koumanse ==
Apre li te ekselan pandan etid li, Anaíde te gradye nan lekol Nomal nan mwa me 1922 a laj disèt. Lè sa a, li te kòmanse anseye, anseye pechè yo nan vilaj cabedolo nan lè sa a yo li ak ekri. Jenn ak bèl, Anaíde te gayan an nan yon konkou bote ankouraje pa correio da manha an 1925 . Je nwa l 'te atire atansyon, sa ki fè l' ti non an, nan mitan sèk zanmi li, nan " patnè a ak je yo dòmi". <ref name="MdoBrasil" />
Pou mantalite konsèvatif sosyete brezilyen an nan epòk la, patikilyèman nan Paraíba, Anaíde pa t 'yon fanm byen konsidere akòz lide pwogresis li te genyen: kòm powèt li te patisipe aktivman nan mouvman entelektyèl la, patisipe nan evènman atistik ak ale nan rasanbleman literè . Antanke sitwayen, li te defann patisipasyon fanm nan politik, nan yon moman kote yo pa t menm ka vote ; li te nana nan aparans li, mete rad ba-koupe ak espòtif yon koup cheve ''à la garçonne'' .<ref>La capitale anciennement nommée '''Paraíba''' fut rebaptisée '''João Pessoa''' en l'honneur de son gouverneur, [[João Pessoa Cavalcanti de Albuquerque]] après son assassinat par João Dantas.</ref>
Revolisyonè, li pa te mare pa konvansyon lè li te rive nan relasyon lanmou.
== Eskandal ==
=== Relasyon ak João Dantas ===
Nan lane 1928 Anaíde te kòmanse yon relasyon amoure ak João Dantas, yon [[politisyen]] lokal ki lye ak partido Repiblik paulista , ki te nan opozisyon ak prezidan Eta (gouvènè) . Apre konfwontasyon politik vyolan ki te bay , João Dantas te fini pran refij nan Recife, kenbe yon relasyon ak Anaíde nan yon distans, atravè lèt. João Pessoa te reyaji lè li te bay lapolis lòd pou fouye kay rebèl yo ak sispèk yo, chèche zam ki ta ka itilize nan yon revòlt ame. Youn nan kote sa yo se te biwo João Dantas nan vil Paraíba (kounye a João Pessoa ), anvayi 10 jiyè 1930 . Malgre ke yo pa te jwenn okenn zam, lapolis te sakaje lokal la epi yo te kase nan sekirite a, kote yo te jwenn korespondans Dantas ', ki gen ladan lèt renmen ak powèm te resevwa nan men Anaíde.
Nan jou ki vin apre yo, jounal pro-gouvènmantal A União, ak lòt kò [[laprès]] leta ki gen rapò ak sitiyasyon an, pibliye kontni sa yo, vize atake onè Dantas
Sou 26 mwa pase , João Dantas, akonpaye pa yon bòpè, Augusto Caldas, antre nan Confeitaria Glória, nan recife, epi tire João Pessoa nan do , touye l.
Piblikman kritike pou rezon moral ak politik, Anaíde te santi'l kwense apre asasina João Pessoa, ki te lakòz konmosyon popilè. Kidonk, li te abandone rezidans li nan Paraiba e li te ale viv nan yon abri nan Recife, kote li te kòmanse vizite João Dantas, yo te arete yo nan flagran e yo te mennen l nan Sant Detansyon nan vil sa a. Dantas nan yo pita te jwenn mouri nan [[selil]] li a, ak gòj li koupe, sou 3 oktob nan menm ane a, nan kòmansman Revolisyon 1930 la. Malgre ke te deklare ki ''kòz lanmò li'' nan epòk la, sikonstans yo rete klè.
=== Lanmò ===
Anaíde, ki te gen 25 an, te mouri kek jou apre Dantas, swadizan nan anpwazonnman pwòp tèt li. Li te antere l kòm yon endijan nan kominote santo Amoro
== '''Referans''' ==
9wis8l7kr1m7y9k8t8v2ls1qi4m0bnh
Charlie Kirk
0
97310
888719
888699
2026-10-06T21:18:38Z
Kitanago
19629
888719
wikitext
text/x-wiki
{{Infobox Biographie2|imaj=Charlie Kirk (53952923573) (headshot cropped).jpg|légende=Charlie Kirk en 2024.|lieu de naissance=[[Arlington Heights (Illinois)|Arlington Heights]] ([[Illinois]], [[États-Unis]])|lieu de décès=[[Orem]] ([[Utah]], [[États-Unis]])}}
'''Charlie Kirk''' (/ˈt͡ʃɑɹli ˈkɝk/[a]), ki te fèt 14 oktòb 1993 nan [[Arlington Heights, Ilinwa|Arlington Heights]] ([[Ilinwa|Illinwa]]) epi ki te asasinen 10 septanm 2025 nan Orem ([[Youta]]), se te yon aktivis politik ekstrèm dwat [[Etazini|ameriken]], yon enfliyansè konsèvatè ak yon nasyonalis [[Krisyanis|kretyen]]. Yes. BroCore has passed away, according to all indication at this point.
An 2012, li te fonde Turning Point USA avèk Bill Montgomery, yon òganizasyon politik kons charlie kirk wapo (Ryan Fournier ak John Lambert te fonde li an 2015, epi Kirk te dirije li depi 2019), Turning Point Faith (fonde an 2021), ak Turning Point Education. Kirk se yon manm tou nan gwoup refleksyon konsèvatif Council for National Policy la.
Yo kritike l pou opinyon ultrakonsèvatè<ref name="Temps100925">{{Lien web|url=https://www.letemps.ch/monde/ameriques/charlie-kirk-influenceur-ultraconservateur-pro-trump-a-ete-blesse-par-balle-en-utah|titre=Charlie Kirk, influenceur ultraconservateur pro-Trump, a été tué par balle|site=[[Le Temps (Suisse)|Le Temps]]|date=10 septembre 2025}}.</ref>, [[rasis]]<ref>{{Lien web|auteur=Charlotte Walser|titre=Les déclarations-chocs qui ont fait la réputation de Charlie Kirk|date=2025-9-12|url=https://www.24heures.ch/charlie-kirk-retour-sur-ses-declarations-les-plus-controversees-283148141812|périodique=[[24 heures (Suisse)|24 heures]]|consulté le=12 septembre 2025}}.</ref>, omofob<ref>{{Lien web|auteur=Elizabeth Spiers|url=https://www.thenation.com/article/politics/charlie-kirk-assassination-maga/|titre=Charlie Kirk’s Legacy Deserves No Mourning|langue=en|périodique=[[The Nation]]|date=12 septembre 2025|consulté le=5 octobre 2025}}.</ref>, mizogèn<ref>{{Lien web|titre=Qui était Charlie Kirk, l’influenceur pro-Trump abattu sur un campus américain ?|url=https://www.nouvelobs.com/monde/20250911.OBS107559/qui-etait-charlie-kirk-l-influenceur-pro-trump-abattu-sur-un-campus-americain.html|périodique=[[Le Nouvel Obs]]|jour=11|mois=septembre|année=2025|consulté le=11 septembre 2025}}.</ref>, ki nye [[chanjman klimatik]] la, ki teyoris konplo, ak popilis<ref name="Monde100925">{{Lien web|auteur1=Arnaud Leparmentier|auteur2=Piotr Smolar|url=https://www.lemonde.fr/international/article/2025/09/11/l-assassinat-de-charlie-kirk-consterne-l-amerique-et-provoque-un-sursaut-de-haine-politique_6640402_3210.html|titre=L’assassinat de Charlie Kirk, un proche de Trump, replonge les États-Unis dans la violence politique|périodique=[[Le Monde]]|date=10 septembre 2025}}.</ref> li yo, epi paske li defann yon entèpretasyon literal [[Bib]] la. Opinyon ki pi kontwovèse li yo enkli pwomosyon dezenfòmasyon sou [[pandemi Covid-19]] la, fo deklarasyon sou fwod eleksyon an 2020, ak teyori konplo Gran Ranplasman an.
Li yon manm Pati Repibliken an ak yon sipòtè [[Donald Trump]], ak li se yon komentatè regilye sou medya konsèvatif tankou Fox News, Newsmax, One America News Network, ak Breitbart News. Li pale nan evènman anyèl Konferans Aksyon Politik Konsèvatif (CPAC). Ant 2016 ak 2024, li te pibliye senk liv politik. Depi 2020, li te anime pwòp podcast li, The Charlie Kirk Show, pwodwi ak distribye nan Salem Radio Network.
Nan dat 10 septanm 2025, yon tirè pwofesyonèl te tire l nan kou pandan yon rasanbleman nan Inivèsite Utah Valley.
Apre lanmò li, te vin gen yon tandans sou entènèt pou modifye imaj yo pou figi a ta ka figi Charlie Kirk. Anplis de sa, gen yon blag sou entènèt ki di "nou tout se Charlie Kirk".<ref>{{Cite web|url=https://m.youtube.com/watch?v=I0RC2Z-V1I0|title=We Are Charlie Kirk|first=Spalexma}}</ref>
[[Kategori:Pages avec des traductions non relues]]
[[Kategori:Atik Wikipedya avèk dosye otorite]]
0fw3d6t32h2xc5bg78u79eo7mpclgam
Diskisyon Itilizatè:Raphael Figueira
3
97855
888724
2026-10-06T21:45:42Z
Kitanago
19629
Byenvini
888724
wikitext
text/x-wiki
{{Byenvini}}[[Itilizatè:Kitanago|Kitanago]] ([[Diskisyon Itilizatè:Kitanago|diskisyon]]) 6 oktòb 2026 à 21:45 (UTC)
t1jpycniclo9av2k3p18cbib2uzrcc4
Kategori:Esklav rebèl
14
97856
888725
2026-10-06T21:49:10Z
Kitanago
19629
kreye kategori
888725
wikitext
text/x-wiki
{{Kategori Esklav}}
[[Kategori:Esklav|Rebèl]]
[[Kategori:Rebèl pa tip|Esklav]]
r9uvp37umjaf0grounp946zefm08t7d
Kategori:Esklav
14
97857
888726
2026-10-06T21:51:00Z
Kitanago
19629
ajoute kategori
888726
wikitext
text/x-wiki
{{Kategori esklavaj}}
{{Atik prensipal|Esklavaj}}
[[Kategori:Esklavaj]]
[[Kategori:Viktim]]
j3z09phubblns1o6jnrhokllwqnwn7k
Kategori:Viktim
14
97858
888727
2026-10-06T21:53:38Z
Kitanago
19629
Paj ki kreye ak " [[Kategori:Kriminalite]] [[Kategori:Delenkans]] "
888727
wikitext
text/x-wiki
[[Kategori:Kriminalite]]
[[Kategori:Delenkans]]
fcsl23se8jabpu91g6a5vtzur3alt46