Module:Infobox/Logiciel
Cette page définit un module d'infobox. Pour les conseils sur l'usage de ce module, voyez Modèle:Infobox Logiciel.
Ce module est destiné à remplacer l’infobox Logiciel. Il n’est pas encore fonctionnel et il ne faut pas l’utiliser dans l’espace principal.
Prochaines étapes
- déplacement des fonctions vers Module:Infobox/Fonctions/Logiciel
- documentation du module (cf. Projet:Infobox/Lua/Documentation)
- documentation du modèle
- tests de quelques semaines avec une deuxième annonce sur discussion projet:Informatique et sur la pdd de l’infobox
- demande de SP pour les deux pages de modules concernées
- remplacement du modèle, si pas d’opposition ni de bug majeur
- suppression de la catégorie de maintenance devenue inutile : Catégorie:Page utilisant l'infobox Logiciel avec une description mais pas d'image
- suppressions des sous-cats inutilisées de Catégorie:Logiciel par langage de programmation (toutes celles avec plus qu’un seul langage)
Paramètres pour l’infobox
Le module reprend tous les paramètres de Modèle:Infobox Logiciel. Les changements sont détaillés sur Discussion_modèle:Infobox_Logiciel#Passage_en_lua (en attendant que je fasse la documentation).
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local general = require "Module:Infobox/Fonctions"
local logiciel = require "Module:Infobox/Fonctions/Logiciel"
local wikidata = require "Module:Wikidata"
local localdata = require "Module:Infobox/Localdata"
return {
maincolor = '#DFEDFF',
parts = {
general.title('informatique'),
-- Illustrations
general.logo('Article à illustrer Logiciel'),
general.mainimage('Article à illustrer Logiciel'),
{
type = 'table', title = 'Informations', rows = {
-- Informations sur l’auteur
{
type = 'row',
label = 'Créateur',
plurallabel ='Créateurs',
value = 'créateur',
wikidata = function()
-- Si le "développeur" est une donnée locale, on ne cherche pas le créateur sur Wikidata
-- pour ne pas risquer de faire un doublon avec la ligne "développeur"
if localdata['développeur'] or localdata['développeurs'] then
return nil, 0
end
return wikidata.formatAndCat {
entity = localdata.item,
property = {'P170', 'P112'},
returnnumberofvalues = true,
}
end,
},
{
type = 'row',
label = '[[Développeur|Développé par]]',
plurallabel ='[[Développeur|Développé par]]',
value = {'développeur', 'développeurs'},
wikidata = function()
-- Si le "créateur" est une donnée locale, on ne cherche pas les devs sur Wikidata
-- pour ne pas risquer de faire un doublon avec la ligne "créateur"
if localdata['créateur'] then
return nil, 0
end
local creators, creatornum = wikidata.formatAndCat {
entity = localdata.item,
property = {'P170', 'P112'},
returnnumberofvalues = true,
}
local devs, devnum = wikidata.formatAndCat {
entity = localdata.item,
property = 'P178',
atdate= "today",
returnnumberofvalues = true,
}
-- On affiche cette ligne que si le créateur est différent du développeur
if (creatornum == devnum) and (creators == devs) then
return nil, 0
end
return devs, devnum
end,
},
{
type = 'row',
label = 'Début du [[Développement de logiciel|développement]]',
value = 'début du développement',
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P571',
linktopic = '-',
-- on peut séparer les dates de début du développement par OS/plateforme
showqualifiers = {'P400','P306'},
returnnumberofvalues = true,
}
end,
},
-- Informations de version
logiciel.firstVersion(),
logiciel.lastStableVersion(),
logiciel.advancedVersion(),
-- informations sur le projet
{
type = 'row',
label = '[[Dépôt (informatique)|Dépôt]]',
plurallabel = '[[Dépôt (informatique)|Dépôts]]',
value = 'dépôt',
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P1324',
atdate= "today", -- ça ne sert à rien d’afficher une adresse qui n’est plus la bonne
returnnumberofvalues = true,
}
end,
},
{
type = 'row',
label = '[[Assurance qualité]]',
value = 'assurance qualité',
property = 'P2992'
},
{
type = 'row',
label = 'État du projet',
value = 'état'
},
logiciel.programmingLanguage(false),
{
type = 'row',
label = '[[Interface graphique|Interface]]',
plurallabel = '[[Interface graphique|Interfaces]]',
value = 'interface',
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P1414',
atdate= "today",
returnnumberofvalues = true,
}
end,
},
{
type = 'row',
label = '[[Langage de programmation|Supporte le langage]]',
plurallabel = '[[Langage de programmation|Supporte les langages]]',
value = 'langages supportés',
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P3985',
atdate= "today",
returnnumberofvalues = true,
}
end,
},
{
type = 'row',
label = "[[Système d'exploitation|Système d’exploitation]]",
plurallabel ="[[Système d'exploitation|Systèmes d’exploitation]]",
value = {"système d'exploitation","systèmes d'exploitation"},
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P306',
atdate= "today",
returnnumberofvalues = true,
}
end,
},
{
type = 'row',
label = '[[Plate-forme (informatique)|Environnement]]',
-- Note: la forme au pluriel "Environnements" est trop longue et empiète sur
-- le contenu de la colonne de droite. Elle a donc été retirée.
value = {'environnement','environnements'},
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P400',
atdate= "today",
returnnumberofvalues = true,
}
end,
},
{
type = 'row',
label = '[[Taille de fichier|Taille des données]]',
value = 'taille des données',
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P3575',
atdate= "today",
returnnumberofvalues = true,
}
end,
},
{
type = 'row',
label = '[[Format de données|Formats]] lus',
value = 'importe',
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P1072',
atdate= "today",
returnnumberofvalues = true,
}
end,
},
{
type = 'row',
label = '[[Format de données|Formats]] écrits',
value = 'exporte',
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P1073',
atdate= "today",
returnnumberofvalues = true,
}
end,
},
logiciel.internationalisation(4),
{
type = 'row',
label = '[[Fichier exécutable|Fichier exécutable]]',
plurallabel ='[[Fichier exécutable|Fichiers exécutables]]',
value = {"exécutable","exécutables"}
},
logiciel.softwareType(),
{
type = 'row',
label = '[[Politique de distribution]]',
value = 'politique de prix'
},
{
type = 'row',
label = '[[Licence de logiciel|Licence]]',
plurallabel ='[[Licence de logiciel|Licences]]',
value = {'licence','licences'},
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
conjtype = 'comma',
property = 'P275',
atdate = 'today',
returnnumberofvalues = true,
labelformat = function(qid)
-- affichage de l’identifiant SPDX qui a l’avantage
-- d’être court et explicite
local label, isset = wikidata.formatStatements {
entity = qid,
numval = 1,
property = 'P2479',
returnnumberofvalues = true,
atdate = 'today', -- les identifiants SPDX ont changé en avril 2015
}
-- fallback sur le label de la licence
if isset == 0 then
label = nil
end
return label
end,
}
end,
},
{
type = 'row',
label = '[[Documentation logicielle|Documentation]]',
value = 'documentation',
wikidata = function()
return wikidata.formatAndCat {
entity = localdata.item,
property = 'P2078',
atdate= "today",
returnnumberofvalues = true,
}
end,
},
general.website() -- site web
},
},
{
type = 'table',
title = 'Chronologie des versions',
rows = {
{
type = 'navbox',
previousLabel = 'Version précédente',
previousval = 'version précédente',
previousproperty= 'P155',
nextLabel = 'Version suivante',
nextval = 'version suivante',
nextproperty = 'P156',
separated = true,
},
}
},
}
}