Module:Infobox hybride
La documentation de ce module est générée par le modèle {{Documentation module}}.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
--[[
Présente une infobox (simple) dédiée aux hybrides animaux et végétaux.
--]]
-- table locale
local p = {}
-- on réutilise les données et fonctions outil des taxobox
local donnees = require "Module:Taxobox données"
local fnc = require "Module:Taxobox fonctions"
--[[
Génère une infobox d'hybride
Paramètres :
- charte : pour indiquer le groupe biologique (identique aux taxobox). Sélectionne la couleur.
- nom : titre de l'infobox. Si absent utilise le titre de l'article
- parent mâle : le nom du parent mâle
- parent femelle : le nom du parent femelle
- parent A : si mâle/femelle inconnu ou sans impact utiliser parent A et B
- parent B : en ce cas parent mâle/femelle n'est pas utilisé
- origine du nom : d'où vient son nom
- naturel : oui / non. Indique si cette hybridation se produit dans la nature
- fécondité : indique si cet hybride est fertile (et dans quelle condition)
- image : une photo de l'animal
- légende : une légende associée à l'image
- note : une note libre additionnelle
--]]
function p.hybride(frame)
-- données globales
donnees.defauts.frame = frame
donnees.defauts.pframe = frame:getParent()
-- lecture des paramètres
local charte = fnc.lit_parametre("charte", donnees.regnes, false, nil)
if (charte == nil or charte == "") then
-- erreur fatale
return '<span class="error">Charte absente ou invalide (' .. (charte or "<absente>") .. ')</span>'
end
local nom = fnc.lit_parametre("nom", nil, nil, nil)
-- si absent on récupère le titre de l'article
if (nom == nil or nom == "") then
local curarticle = mw.title.getCurrentTitle()
nom = curarticle.text
end
local parent_male = fnc.lit_parametre("parent mâle", nil, nil, nil)
local parent_femelle = fnc.lit_parametre("parent femelle", nil, nil, nil)
local parent_a = fnc.lit_parametre("parent A", nil, nil, nil)
local parent_b = fnc.lit_parametre("parent B", nil, nil, nil)
local origine = fnc.lit_parametre("origine du nom", nil, nil, nil)
local naturel = fnc.lit_parametre("naturel", { "oui", "non" }, nil, nil)
local image = fnc.lit_parametre("image", nil, nil, nil)
local legende = fnc.lit_parametre("légende", nil, nil, nil)
local fecondite = fnc.lit_parametre("fécondité", nil, nil, nil)
local note = fnc.lit_parametre("note", nil, nil, nil)
local ret -- données de retour
local frame = mw.getCurrentFrame()
local templatestyles = frame:extensionTag( 'templatestyles', '', { src = 'MediaWiki:Common.css/taxobox v3.css' } )
local classes = frame:expandTemplate{ title = 'Classes début infobox', args = { version = '3' } }
ret = templatestyles .. '<div class="' .. classes .. ' large taxobox_v3 bordered ' .. donnees.regnes[charte]["classe"] .. '" style="width: 20em">\n' .. '<p class="entete">' .. nom .. '</p>\n'
-- image et légende
if (image ~= nil and image ~= "") then
ret = ret .. fnc.insert_image(image, legende, false, false)
end
if (legende ~= nil) then
ret = ret .. '<p class="legend">' .. legende .. '</p>\n'
end
-- table des infos
ret = ret .. '<table class="taxobox_classification" style="font-style: normal"><caption>[[Hybride]]</caption>'
-- l'origine du nom
if (origine ~= nil and origine ~= "") then
ret = ret .. fnc.tb_ligne_mixte("'''Origine du nom'''", origine)
end
-- si parent A ou B on utilise, sinon parent mâle et femelle
local desc = "'''Parents'''"
local cont = ""
if (parent_a ~= nil) then
if (parent_b == nil) then
cont = parent_a
else
cont = "Parent A<br/>" .. parent_a .. "<br/>×<br/>Parent B<br/>" .. parent_b
end
ret = ret .. fnc.tb_ligne_mixte(desc, "<p class=\"center\">" .. cont .. "</p>")
else
if (parent_femelle == nil) then
cont = parent_male
else
cont = "Parent mâle<br/>" .. parent_male .. "<br/>×<br/>Parent femelle<br/>" .. parent_femelle
end
ret = ret .. fnc.tb_ligne_mixte(desc, "<p class=\"center\">" .. cont .. "</p>")
end
-- présent naturellement ?
if (naturel ~= nil and naturel ~= "") then
ret = ret .. fnc.tb_ligne_mixte("'''Hybride naturel'''", naturel)
end
-- fécondité de l'hybride
if (fecondite ~= nil and fecondite ~= "") then
ret = ret .. fnc.tb_ligne_mixte("'''Fécondité'''", fecondite)
end
-- une note
if (note ~= nil and note ~= "") then
ret = ret .. fnc.tb_ligne_mixte("'''Note'''", note)
end
-- on ferme la table
ret = ret .. '</table>'
-- on ferme l'infobox
ret = ret .. '</div>'
return ret -- retour
end
-- on retourne le module
return p