Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

Module:Bases

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.

 Documentation[voir] [modifier] [historique] [purger]

Utilisation

Ce module permet de renseigner la documentation des modèles thématiques duProjet:Bases.

Pour renseigner la documentation du modèle en insérant ou en remplaçant le contenu de la sectionUtilisation par (exemple donné pour le modèle{{Bases littérature}})
{{#invoke:Bases|documentation|name=littérature|headername=àlalittérature|namebis=lalittérature}}<!-- L'édition du module se fait à la page [[Module:Bases/littérature]] en particulier pour l'édition des colonnes Libellé et URL. Pour renseigner la langue cliquez sur le propriété correspondante, éditez le paramètre ''format de l'URL'' et ajoutez le qualifier ''langue de l'œuvre, du nom ou du terme'' avec la ou les langues voulues.-->
Les paramètresname etheadername doivent être identiques à ceux présents dans le modèle,

le paramètrenamebis doit compléter la phrasebases de données en lien avecxxx

Le paramètrecomplet=faux enlève l'affichage du nombre de pages dans chaque catégorie, l'appel à Pagesincat étant très coûteux, ce paramètre est recommandé pour les bases importantes en taille afin de permettre leur affichage.

v ·m
Modèles générant des liens vers des ressources externes
Généraux
Thématiques

Exemples

Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.

Ladocumentation de cemodule est générée par le modèle{{Documentation module}}.
Elle estincluse depuis sasous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans lebac à sable (modifier).
Voir lesstatistiques d'appel depuis le wikicode sur l'outilwstat et lesappels depuis d'autres modules.

-- luacheck: globals mw, no max line lengthlocalp={}localwikidata=require"Module:Wikidata"locallangue=require"Module:Langue"localOutils=require"Module:Outils"localbasesList={"architecture","art","astronomie","audiovisuel","bande dessinée","géographie","jeu","jeu vidéo","littérature","militaire","mode","multidisciplinaires","musique","organisation","pornographie","recherche","religion","santé","spectacle","sport","tourisme","transport","vie publique","vivant"}localbasesHeadername={["architecture"]="à l'architecture",["art"]="aux beaux-arts",["astronomie"]="à l'astronomie",["audiovisuel"]="à l'audiovisuel",["bande dessinée"]="à la bande dessinée",["géographie"]="à la géographie",["jeu"]="au jeu",["jeu vidéo"]="au jeu vidéo",["littérature"]="à la littérature",["militaire"]="aux militaires",["mode"]="à la mode",["multidisciplinaires"]="à plusieurs domaines",["musique"]="à la musique",["organisation"]="aux organisations",["pornographie"]="à la pornographie",["recherche"]="à la recherche",["religion"]="à la religion",["santé"]="à la santé",["spectacle"]="au spectacle",["sport"]="au sport",["tourisme"]="au tourisme",["transport"]="au transport",["vie publique"]="à la vie publique",["vivant"]="au vivant"}localexistingPropertiesCache={}--- fonctions internes ---localfunctioninBase(base,valueToFind)for_,vinipairs(base)doifv[2]==valueToFindthenreturntrueendendreturnfalseend--- fonctions à ne pas utiliser dans l'espace encyclopédique ---functionp.contient(frame)localproperty=frame.args["propriété"]orframe.args.propertylocalbasesWithProperty={}for_,baseinipairs(basesList)doifinBase(require("Module:Bases/"..base),property)thentable.insert(basesWithProperty,base)endendreturntable.concat(basesWithProperty,",")endfunctionp.count(frame)localTableTools=require('Module:TableTools')localname=frame.args.namelocalbases=require("Module:Bases/"..name)returnTableTools.size(bases)endfunctionp.documentation(frame)localname=frame.args.namelocalheadername=frame.args.headernameornamelocalnamebis=frame.args.namebisorheadernamelocalcategorie="Page pointant vers des bases relatives "..headernamelocalbases=require("Module:Bases/"..name)localpagesincat=require("Module:Pagesincat")localcomplet=not(frame.args.completandframe.args.complet=="faux")localrestrict=frame.args.restrictlocallines={}-- texte d'introductiontable.insert(lines,"Modèle à utiliser principalement dans la section [[WP:LE|Liens externes]] d'une page. Il affiche une liste de liens vers des bases de données en rapport avec "..namebis..", associée à la page wikipédia dans laquelle il est appelé ou à l’'''id''' spécifique appelé par le modèle. Le paramètre optionnel <code>id=</code> peut être utilisé pour désigner un élément Wikidata autre que celui de la page de Wikipédia où le modèle est employé.")table.insert(lines,"")table.insert(lines,"La liste des liens vers les bases est affichée par ordre alphabétique. Les liens vers des bases francophones sont placés en premier.")table.insert(lines,"")table.insert(lines,"La liste est générée automatiquement à partir des données de l'élément Wikidata relié à la page ou à l’'''id''' spécifique appelé par le modèle.")table.insert(lines,"")table.insert(lines,"")table.insert(lines,"Les liens affichables par la base "..name.." sont chacune des '''propriétés''' du tableau. Le '''sujet''' de ces bases est le lien vers la page wikipédia associée à cette base, ou par défaut d'un wiki d'une autre langue quand il existe. Le modèle cible l'élément dans la base de données depuis l’'''url''' de la base, dont le contenu est rédigé dans une ou plusieurs '''langues'''.")table.insert(lines,"")table.insert(lines,"Tout ajout ou suppression de liens dans la base doit passer par [[Wikipédia:Ateliers Bases]].")table.insert(lines,"")table.insert(lines,"La modification du module se fait à la page [[Module:Bases/"..name.."]].")table.insert(lines,"")table.insert(lines,"")table.insert(lines,"Les pages utilisant le modèle sont listées dans la catégorie [[:Catégorie:"..categorie.."|"..categorie.."]], qui contient actuellement "..pagesincat.pagesincat{categorie,type='pages',mise_en_forme='oui'}.." pages.")table.insert(lines,"")table.insert(lines,'{| class="wikitable"')table.insert(lines,'|-')table.insert(lines,'! Propriété')table.insert(lines,'! Sujet')table.insert(lines,'! Libellé')table.insert(lines,'! URL')for_,baseinpairs(bases)dolocaltexte=base[1]localfoundifrestrict~=nilthenlocalrawtext=texteiftype(rawtext)=='table'thenrawtext=rawtext[1]endlocalfirstletter=string.sub(rawtext,1,1)iffirstletter=="'"thenfirstletter=string.sub(rawtext,3,3)endfound=string.find(restrict,string.upper(firstletter))endifrestrict==nilorfound~=niltheniftype(texte)=='table'thentexte=langue.langue{texte[2],texte=texte[1]}endlocallabel=wikidata.getLabel(base[2])localvalifnotlabelthenval='<strong class="error">'..base[2]..' : propriété inconnue</strong>'elseifcompletthenlocalproperty=string.sub(base[2],2)val=frame:expandTemplate{title='WD P',args={property,'pages'}}elseval='[[d:Property:'..base[2]..'|'..base[2]..' <small>(«&nbsp;'..label..'&nbsp;»)</small>]] &nbsp;→&nbsp; <small>[[:Catégorie:Page utilisant '..base[2]..'|catégorie]]</small>'endlocalsubject=wikidata.formatStatements{entity=base[2],property='P1629'}or''table.insert(lines,'|-')table.insert(lines,'| '..val)table.insert(lines,'| '..subject)table.insert(lines,'| '..texte)table.insert(lines,'| '..base[3])endendtable.insert(lines,'|}')returntable.concat(lines,"\n")end--- fonctions pour l'espace encyclopédique ---functionp.tout_comme_table(frame)localargs=Outils.extractArgs(frame)localkeysPrio={}localkeys={}localvalsPrio={}localvals={}localvalsFinal={}localtri=args["tri"]orargs["trie"]orargs["sort"]or"none"localsortBySize=tri=="taille max"localsortBySizeInverse=tri=="taille min"localsortByAlpha=tri=="alphabétique"args.noarchive=trueargs.noinactifcat=truefor_,baseinipairs(basesList)doifargs[base]~="-"thenargs.name=baseargs.headername=basesHeadername[base]localtexte,taille,len=p.main(args,true)iftaillethenifargs[base]thenlocalkey=args[base]*100whilevalsPrio[key]dokey=key+1endtable.insert(keysPrio,key)valsPrio[key]=texteelselocalkey=taille*1000+lenwhilevals[key]dokey=key+1endtable.insert(keys,key)vals[key]=texteendendendendtable.sort(keysPrio)ifsortByAlphathen-- ne rien faireelseifsortBySizeInversethentable.sort(keys)else-- par défaut : if sortBySize thentable.sort(keys,function(a,b)returna>bend)endfor_,kinipairs(keysPrio)dotable.insert(valsFinal,valsPrio[k])endfor_,kinipairs(keys)dotable.insert(valsFinal,vals[k])endreturnvalsFinalendfunctionp.tout(frame)localvalsFinal=p.tout_comme_table(frame)localrendu=table.concat(valsFinal,"\n*")ifrendu==""andmw.title.getCurrentTitle().namespace==0andnotframe:getParent().args.nocatthenreturn"[[Catégorie:Page utilisant un modèle Bases inactif]]"end-- TODO : surveiller [[phab:T280260]], et lorsque le bug sera corrigé, défaire [[Spécial:Diff/181960530]]-- discussion : [[Discussion Projet:Bases#Petite régression d'affichage : ligne à puce parasite]]returnrenduendfunctionp.main(frame,returnSize)localargs=Outils.extractArgs(frame)-- Récupération des paramètres, soit ceux passés par le modèle,-- soit ceux passés au modèlelocalid=Outils.validTextArg(args,'id','wikidata','entity',1)localname=args.namelocalheadername=args.headernameorbasesHeadername[name]localnoarchive=args.noarchivelocalnocat=args.nocatormw.title.getCurrentTitle().namespace~=0localnoinactifcat=nocatorargs.noinactifcatlocallen=0-- Chargement des données de la base souhaitéelocalbases=require("Module:Bases/"..name)-- Détermination de l'id de l'entité wikidata à interrogerlocalentityIdifidthenifmw.wikibase.isValidEntityId(id)andmw.wikibase.entityExists(id)thenentityId=idendelseentityId=mw.wikibase.getEntityIdForCurrentPage()end-- Si un id est spécifié mais est invalide ou inexistant, ou si la page actuelle n'a pas d'élément wikidata associéifnotentityIdthenifnoinactifcatthenreturn""elsereturn"[[Catégorie:Page utilisant le modèle Bases "..name.." inactif]]"endend-- Fonction à appeler pour générer le texte d'une base que l'on essaie d'afficher-- (auparavant les textes de toutes les bases étaient générés, ce qui était coûteux)localfunctiontexteLien(base)iftype(base[1])=='table'thenreturnlangue.langue{base[1][2],texte=base[1][1]}elsereturnbase[1]endend-- Pour chaque base dans notre liste, on vérifie si notre entité la possède-- si c'est le cas, on formate et ajoute un lien vers elle dans une listelocalvals={}for_,baseinpairs(bases)do-- Pour gérer les cas comme sur Module:Bases/art où des tables sont dans-- des tables => langue du titre de la base pour l'accessibilitélocalnomiftype(base[1])=='table'thennom=base[1][1]elsenom=base[1]endlocalvallocalvalue=args[nom]orargs[base[2]]ifvalue~="-"thenifvaluethenlocaltexte=texteLien(base)val=wikidata.getDataValue({snaktype='value',excludespecial=true,datatype='external-id',datavalue={value=value}},{urlpattern=base[3],text=texte})elselocalproperties=existingPropertiesCache[entityId]ifnotpropertiesthenproperties={}localpropertyList=mw.wikibase.getEntity(entityId):getProperties()fori=1,#propertyListdoproperties[propertyList[i]]=trueendexistingPropertiesCache[entityId]=propertiesendifproperties[base[2]]thenlocaltexte=texteLien(base)val=wikidata.formatStatements{entity=entityId,excludespecial=true,text=texte,property=base[2],urlpattern=base[3],numval=1,addcat=notnocat,qualifier='P407',qualifiervalue='Q150'}orwikidata.formatStatements{entity=entityId,text=texte,property=base[2],urlpattern=base[3],numval=1,addcat=notnocat}endendendifvalandval:sub(1,1)~="-"thentable.insert(vals,val)ifreturnSizethenlen=len+string.len(nom)endendend-- On catégorise si l'entité ne possède aucune des bases listéesif#vals==0thenifnoinactifcatthenreturn""elsereturn"[[Catégorie:Page utilisant le modèle Bases "..name.." inactif]]"endend-- Ajout du label si l'id wikidata a été spécifié manuellementlocalentityInfo=''ifidthenlocallabel=mw.wikibase.getLabel(entityId)locallink=wikidata.siteLink(entityId)iflabeltheniflinkthenentityInfo=' (pour [['..link..'|'..label..']])'elseentityInfo=' (pour '..label..')'endelseiflinkthenentityInfo=' (pour [['..link..']])'endend-- Concaténation des liens et formatage finallocalheaderif#vals>1thenheader="Ressources relatives "..headername..entityInfoelseheader="Ressource relative "..headername..entityInfoendlocaltitle=wikidata.addLinkBack(header,entityId,'identifiers')-- Ajout des catégories qui vont bienlocalcategories=''ifnotnocatthencategories="[[Catégorie:Page pointant vers des bases externes]] [[Catégorie:Page pointant vers des bases relatives "..headername.."]]"end-- XXX: c'est invalide de mettre un <ul> (block-level) dans un <span> (inline-level)localelementsHtml=mw.html.create('span'):addClass('liste-horizontale'):addClass(noarchiveand'noarchive'ornil):wikitext(title..' : '):tag('ul')for_,valinipairs(vals)doelementsHtml:tag('li'):wikitext(val):done():wikitext(' ')endifreturnSizethenlen=len+string.len(header)returntostring(elementsHtml:allDone())..categories,#vals,lenelsereturntostring(elementsHtml:allDone())..categoriesendendreturnp
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Module:Bases&oldid=221216220 ».
Catégorie :
Catégorie cachée :

[8]ページ先頭

©2009-2025 Movatter.jp