« Module:Wikidata/Formatage entité » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
gestion plus logique de labelformat, harmonisation de la mise en forme entre le "d" vers wikidata et le "en" vers enwiki (même si je n'aime pas trop la police)
0x010D (discussion | contributions)
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))
 
(15 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
local defaultlang = mw.getContentLanguage():getCode()
local defaultlang = mw.getContentLanguage():getCode()
local tools = require 'Module:Wikidata/Outils'
local tools = require 'Module:Wikidata/Outils'
local getClaims = require "Module:Wikidata/Récup".getClaims
-- local getClaims = require "Module:Wikidata/Récup".getClaims -- chargé uniquement si nécessaire
local i18n = tools.i18n
local i18n = tools.i18n


Ligne 8 : Ligne 8 :




function p.getLabel(entity, lang, site, labelformat)
function p.getLabel(entity, lang, labelformat)
if (not entity) then
if (not entity) then
return nil -- ou option de gestion des erreurs ?
return nil -- ou option de gestion des erreurs ?
Ligne 14 : Ligne 14 :


lang = lang or defaultlang
lang = lang or defaultlang
site = site or (lang .. 'wiki')
 
if (site == '-') then
return nil
end
if type(labelformat) == 'function' then
if type(labelformat) == 'function' then
return labelformat(entity)
return labelformat(entity)
Ligne 25 : Ligne 20 :
if (type(entity) == 'string') and (lang == defaultlang) then -- le plus économique
if (type(entity) == 'string') and (lang == defaultlang) then -- le plus économique
return mw.wikibase.label(entity)
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


Ligne 32 : Ligne 30 :
end
end
if entity.labels and entity.labels[lang] then
if entity and entity.labels and entity.labels[lang] then
return entity.labels[lang].value, true
return entity.labels[lang].value, true
end
end
Ligne 40 : 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 51 : Ligne 49 :
local speciallabels = params.speciallabels
local speciallabels = params.speciallabels
local displayformat = params.displayformat
local displayformat = params.displayformat
local labelformat = params.labelformat
local defaultlabel = params.defaultlabel or id
local defaultlabel = params.defaultlabel or id
local linktype = params.link
local linktype = params.link
Ligne 68 : Ligne 67 :
label = p.getLabel(entity, lang, labelformat)
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 not label then
Ligne 73 : Ligne 76 :
return nil
return nil
end
end
str = str .. tools.addcat(i18n['to translate'])
link = tools.siteLink(id, 'wikidata')
link = tools.siteLink(id, 'wikidata')
return str .. '[[' .. link .. '|' .. id .. ']]'-- si pas de libellé, on met un lien vers Wikidata pour qu'on comprenne à quoi ça fait référence
return str .. '[[' .. link .. '|' .. 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
end


if (linktype == '-') then
if (linktype == '-') or rendering_entity_on_its_page then
return str .. label
return str .. label
end
end


local link = tools.siteLink(entity, linktype, lang)
local link = tools.siteLink(entity, linktype, lang)
if (not link) and defaultlinkquery then
if (not link) and defaultlinkquery then
defaultlinkquery.excludespecial = true
defaultlinkquery.excludespecial = true
defaultlinkquery.entity = entity
defaultlinkquery.entity = entity
local items = getClaims(defaultlinkquery)
local getClaims = require("Module:Wikidata/Récup").getClaims
if items then
local claims = getClaims(defaultlinkquery)
local id = tools.getMainId(items[1])
if claims then
link = tools.siteLink(id, linktype, lang)
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
end
 
if link then
if link then  
return str .. '[[' .. link .. '|' .. label .. ']]'
return str .. '[[' .. link .. '|' .. label .. ']]'
end
end
-- on est pas sur l'article de l'entité, et on a pas de lien de site
if (defaultlinktype ~= '-') then
if (defaultlinktype ~= '-') then
Ligne 113 : Ligne 126 :
icon, class, title = langcode, "indicateur-langue", tools.translate('see-another-language', mw.language.fetchLanguageName(langcode, defaultlang))
icon, class, title = langcode, "indicateur-langue", tools.translate('see-another-language', mw.language.fetchLanguageName(langcode, defaultlang))
elseif site == 'wikidata' then
elseif site == 'wikidata' then
icon, class, title = 'd',  "indicateur-langue", tools.translate('see-another-project', 'Wikidata')
icon, class, title = 'd',  "indicateur-langue", tools.translate('see-wikidata')
else
else
title = tools.translate('see-another-project', site)
title = tools.translate('see-another-project', site)

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