« Module:Wikidata/Formatage entité » : différence entre les versions
Nouvelle page : local defaultlang = 'fr' local function imageLink(entity) local val = p.formatStatements{property = 'P18', entity = entity, numval = 1} if not val then return nil end retur... |
m A changé le niveau de protection pour « Module:Wikidata/Formatage entité » ([Modifier=Autoriser uniquement les utilisateurs autopatrolled] (infini) [Renommer=Autoriser uniquement les administrateurs] (infini)) |
||
| (40 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
local defaultlang = ' | local p = {} | ||
local defaultlang = mw.getContentLanguage():getCode() | |||
local tools = require 'Module:Wikidata/Outils' | |||
-- local getClaims = require "Module:Wikidata/Récup".getClaims -- chargé uniquement si nécessaire | |||
local i18n = tools.i18n | |||
local | local formatError = tools.formatError | ||
function p.getLabel(entity, lang, labelformat) | |||
if | if (not entity) then | ||
return nil -- ou option de gestion des erreurs ? | |||
return | |||
end | end | ||
lang = lang or defaultlang | lang = lang or defaultlang | ||
if type(labelformat) == 'function' then | |||
if ( | return labelformat(entity) | ||
return | |||
end | end | ||
if (type(entity) == 'string') and (lang == defaultlang) then -- le plus économique | if (type(entity) == 'string') and (lang == defaultlang) then -- le plus économique | ||
local str = mw.wikibase.label(entity) | |||
if str then -- mw.wikibase.label() ne fonctionne pas avec les redirect https://phabricator.wikimedia.org/T157868 | |||
return str | |||
end | |||
end | end | ||
if type(entity) == 'string' then | if type(entity) == 'string' then | ||
entity = | entity = mw.wikibase.getEntityObject(entity) | ||
end | end | ||
if entity and entity.labels and entity.labels[lang] then | |||
if entity.labels and entity.labels[lang] then | |||
return entity.labels[lang].value, true | return entity.labels[lang].value, true | ||
end | end | ||
| Ligne 89 : | Ligne 38 : | ||
if (not entity) then | if (not entity) then | ||
return formatError('entity-not-found') | return nil --formatError('entity-not-found') | ||
end | end | ||
local id = entity | local id = entity | ||
| Ligne 95 : | Ligne 44 : | ||
id = id.id | id = id.id | ||
end | end | ||
params = params or {} | params = params or {} | ||
local lang = params.lang or | local lang = params.lang or defaultlang | ||
local speciallabels = params.speciallabels | local speciallabels = params.speciallabels | ||
local displayformat = params.displayformat | local displayformat = params.displayformat | ||
local defaultlabel = params.defaultlabel | local labelformat = params.labelformat | ||
local defaultlabel = params.defaultlabel or id | |||
local linktype = params.link | local linktype = params.link | ||
local defaultlinktype = params.defaultlink | local defaultlinktype = params.defaultlink | ||
local | local defaultlinkquery = params.defaultlinkquery | ||
if speciallabels and speciallabels[id] then --speciallabels override the standard label + link combination | if speciallabels and speciallabels[id] then --speciallabels override the standard label + link combination | ||
return speciallabels[id] | return speciallabels[id] | ||
end | end | ||
if | if params.displayformat == 'raw' then | ||
return id | return id | ||
end | end | ||
| Ligne 117 : | Ligne 65 : | ||
local str = '' -- l'intégralité du text à retourner | local str = '' -- l'intégralité du text à retourner | ||
label = p.getLabel(entity, lang, | |||
if | label = p.getLabel(entity, lang, labelformat) | ||
-- détermination du fait qu'on soit ou non en train de rendre l'élément sur la page de son article | |||
local rendering_entity_on_its_page = tools.is_page_of_qid(id) | |||
if not label then | |||
if (defaultlabel == '-') then | if (defaultlabel == '-') then | ||
return nil | return nil | ||
end | end | ||
link = tools.siteLink(id, 'wikidata') | |||
link = | return str .. '[[' .. link .. '|' .. id .. ']]' .. tools.addcat(i18n['to translate']) | ||
return str .. '[[' .. link .. '|' .. id .. ']]' | -- si pas de libellé, on met un lien vers Wikidata pour qu'on comprenne à quoi ça fait référence | ||
end | end | ||
if (linktype == '-') or rendering_entity_on_its_page then | |||
if (linktype == '-') then | return str .. label | ||
return str | |||
end | end | ||
local link = tools.siteLink(entity, linktype, lang) | |||
local | |||
if (not link) and defaultlinkquery then | |||
defaultlinkquery.excludespecial = true | |||
defaultlinkquery.entity = entity | |||
local getClaims = require("Module:Wikidata/Récup").getClaims | |||
local claims = getClaims(defaultlinkquery) | |||
if claims then | |||
for i, j in pairs(claims) do | |||
local id = tools.getMainId(j) | |||
link = tools.siteLink(id, linktype, lang) | |||
if link then | |||
break | |||
end | |||
end | |||
end | |||
end | end | ||
if link then | if link then | ||
return str .. '[[' .. link .. '|' .. label .. ']]' | return str .. '[[' .. link .. '|' .. label .. ']]' | ||
end | end | ||
local | -- on est pas sur l'article de l'entité, et on a pas de lien de site | ||
if (defaultlinktype ~= '-') then | |||
local linktype | |||
local sidelink, site, langcode | |||
if defaultlinktype then | |||
sidelink, site, langcode = tools.siteLink(entity, linktype, lang) | |||
else | |||
sidelink, site, langcode = tools.siteLink(entity, 'wiki', 'en') | |||
end | end | ||
if not sidelink then | |||
return str .. label .. ' <small>( | sidelink, site = tools.siteLink(entity, 'wikidata') | ||
end | end | ||
local icon, class, title = site, nil, nil -- le texte affiché du lien | |||
if site == 'wiki' then | |||
icon, class, title = langcode, "indicateur-langue", tools.translate('see-another-language', mw.language.fetchLanguageName(langcode, defaultlang)) | |||
elseif site == 'wikidata' then | |||
icon, class, title = 'd', "indicateur-langue", tools.translate('see-wikidata') | |||
else | |||
title = tools.translate('see-another-project', site) | |||
end | |||
local val = '[[' .. sidelink .. '|' .. '<span class = "' .. (class or '').. '" title = "' .. (title or '') .. '">' .. icon .. '</span>]]' | |||
return str .. label .. '<small> (' .. val .. ')</small>' | |||
end | |||
return str .. label | return str .. label | ||
end | |||
-- Fonction dépréciée | |||
function p.getLink(entity, linktype, lang) | |||
return tools.siteLink(entity, linktype, lang) | |||
end | end | ||
return p | return p | ||
Dernière version du 17 mai 2017 à 13:42
local p = {} local defaultlang = mw.getContentLanguage():getCode() local tools = require 'Module:Wikidata/Outils' -- local getClaims = require "Module:Wikidata/Récup".getClaims -- chargé uniquement si nécessaire local i18n = tools.i18n
local formatError = tools.formatError
function p.getLabel(entity, lang, labelformat)
if (not entity) then
return nil -- ou option de gestion des erreurs ?
end
lang = lang or defaultlang
if type(labelformat) == 'function' then return labelformat(entity) end
if (type(entity) == 'string') and (lang == defaultlang) then -- le plus économique local str = mw.wikibase.label(entity) if str then -- mw.wikibase.label() ne fonctionne pas avec les redirect https://phabricator.wikimedia.org/T157868 return str end end
if type(entity) == 'string' then entity = mw.wikibase.getEntityObject(entity) end
if entity and entity.labels and entity.labels[lang] then return entity.labels[lang].value, true end end
function p.formatEntity( entity, params )
if (not entity) then return nil --formatError('entity-not-found') end local id = entity if type(id) == 'table' then id = id.id end
params = params or {} local lang = params.lang or defaultlang local speciallabels = params.speciallabels local displayformat = params.displayformat local labelformat = params.labelformat local defaultlabel = params.defaultlabel or id local linktype = params.link local defaultlinktype = params.defaultlink local defaultlinkquery = params.defaultlinkquery
if speciallabels and speciallabels[id] then --speciallabels override the standard label + link combination return speciallabels[id] end if params.displayformat == 'raw' then return id end
local link, label local str = -- l'intégralité du text à retourner
label = p.getLabel(entity, lang, labelformat)
-- détermination du fait qu'on soit ou non en train de rendre l'élément sur la page de son article local rendering_entity_on_its_page = tools.is_page_of_qid(id)
if not label then
if (defaultlabel == '-') then
return nil
end
link = tools.siteLink(id, 'wikidata')
return str .. '' .. id .. '' .. tools.addcat(i18n['to translate'])
-- si pas de libellé, on met un lien vers Wikidata pour qu'on comprenne à quoi ça fait référence
end
if (linktype == '-') or rendering_entity_on_its_page then return str .. label end
local link = tools.siteLink(entity, linktype, lang)
if (not link) and defaultlinkquery then
defaultlinkquery.excludespecial = true
defaultlinkquery.entity = entity
local getClaims = require("Module:Wikidata/Récup").getClaims
local claims = getClaims(defaultlinkquery)
if claims then
for i, j in pairs(claims) do
local id = tools.getMainId(j)
link = tools.siteLink(id, linktype, lang)
if link then
break
end
end
end
end
if link then return str .. '' .. label .. '' end
-- on est pas sur l'article de l'entité, et on a pas de lien de site
if (defaultlinktype ~= '-') then local linktype local sidelink, site, langcode if defaultlinktype then sidelink, site, langcode = tools.siteLink(entity, linktype, lang) else sidelink, site, langcode = tools.siteLink(entity, 'wiki', 'en') end if not sidelink then sidelink, site = tools.siteLink(entity, 'wikidata') end
local icon, class, title = site, nil, nil -- le texte affiché du lien if site == 'wiki' then icon, class, title = langcode, "indicateur-langue", tools.translate('see-another-language', mw.language.fetchLanguageName(langcode, defaultlang)) elseif site == 'wikidata' then icon, class, title = 'd', "indicateur-langue", tools.translate('see-wikidata') else title = tools.translate('see-another-project', site) end local val = '' .. '' .. icon .. '' return str .. label .. ' (' .. val .. ')' end return str .. label end
-- Fonction dépréciée function p.getLink(entity, linktype, lang) return tools.siteLink(entity, linktype, lang) end
return p