Module:Wikidata/Formatage entité : Différence entre versions
(getLabel : suppression de args, variable globale non utilisée) |
(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)) |
||
Ligne 8 : | Ligne 8 : | ||
− | function p.getLabel(entity, lang, site, | + | function p.getLabel(entity, lang, site, 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 18 : | Ligne 18 : | ||
if (site == '-') then | if (site == '-') then | ||
return nil | return nil | ||
+ | end | ||
+ | |||
+ | if type(labelformat) == 'function' then | ||
+ | return labelformat(entity) | ||
end | end | ||
Ligne 27 : | Ligne 31 : | ||
entity = mw.wikibase.getEntityObject(entity) | entity = mw.wikibase.getEntityObject(entity) | ||
end | end | ||
+ | |||
if 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 | ||
Ligne 62 : | Ligne 67 : | ||
− | label = p.getLabel(entity, lang, | + | label = p.getLabel(entity, lang, labelformat) |
− | + | ||
− | |||
− | |||
if not label then | if not label then | ||
if (defaultlabel == '-') then | if (defaultlabel == '-') then | ||
Ligne 110 : | Ligne 113 : | ||
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, title = 'd', tools.translate('see-another-project', 'Wikidata') | + | icon, class, title = 'd', "indicateur-langue", tools.translate('see-another-project', 'Wikidata') |
else | else | ||
title = tools.translate('see-another-project', site) | title = tools.translate('see-another-project', site) |
Version du 25 février 2016 à 20:31
La documentation pour ce module peut être créée à Module:Wikidata/Formatage entité/doc
local p = {} local defaultlang = mw.getContentLanguage():getCode() local tools = require 'Module:Wikidata/Outils' local getClaims = require "Module:Wikidata/Récup".getClaims local i18n = tools.i18n local formatError = tools.formatError function p.getLabel(entity, lang, site, labelformat) if (not entity) then return nil -- ou option de gestion des erreurs ? end lang = lang or defaultlang site = site or (lang .. 'wiki') if (site == '-') then return nil end if type(labelformat) == 'function' then return labelformat(entity) end if (type(entity) == 'string') and (lang == defaultlang) then -- le plus économique return mw.wikibase.label(entity) end if type(entity) == 'string' then entity = mw.wikibase.getEntityObject(entity) end if 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 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 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) if not label then if (defaultlabel == '-') then return nil end str = str .. tools.addcat(i18n['to translate']) 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 end if (linktype == '-') 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 items = getClaims(defaultlinkquery) if items then local id = tools.getMainId(items[1]) link = tools.siteLink(id, linktype, lang) end end if link then return str .. '[[' .. link .. '|' .. label .. ']]' end 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-another-project', '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 end -- Fonction dépréciée function p.getLink(entity, linktype, lang) return tools.siteLink(entity, linktype, lang) end return p