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&section=0' ) ) .. ' ' .. i18n['edit'] .. ']' .. ' - [' .. tostring( mw.uri.fullUrl( page.prefixedText, 'action=edit&section=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&section=0' ) ) .. ' ' .. i18n['edit'] .. ']' .. ' - [' .. tostring( mw.uri.fullUrl( page.prefixedText, 'action=edit&section=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&section=0' ) ) .. ' ' .. i18n['edit'] .. ']' .. ' - [' .. tostring( mw.uri.fullUrl( page.prefixedText, 'action=edit&section=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&section=0' ) ) .. ' ' .. i18n['edit'] .. ']' .. ' - [' .. tostring( mw.uri.fullUrl( page.prefixedText, 'action=edit&section=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