Módulo:Enlace Wikidata
Apariencia
Esta documentación está transcluida desde Módulo:Enlace Wikidata/doc.
Los editores pueden experimentar en la zona de pruebas
Por favor, añade las categorías a la subpágina de documentación.
(subpáginas - enlaces)
Los editores pueden experimentar en la zona de pruebas
Por favor, añade las categorías a la subpágina de documentación.
(subpáginas - enlaces)
local nsother= require('Módulo:Namespace other')._namespace_other
local p = {}
-- Entrega un enlace a una página de un elemento de Wikidata de los siguientes sitios:
-- 1. Wikisource
-- 2. Wikipedia
-- 3. Commons
-- 4. Reasonator
local function linkwanted(label)
if label ~= nil and label ~= '' then
local args = {target='página'}
args[1]=label..'<span style="color:red;font-size:smaller" title="Posible enlace a Wikidata">*</span>[[Categoría:Páginas con enlaces a elementos por identificar]]'
args[2]=label
return nsother(args)
end
end
local function checkId(ID, label)
if ID == '' then return linkwanted(label) end
if not mw.wikibase.isValidEntityId(ID) then
return "<span class='error'>" .. ID .. " no es un elemento de Wikidata válido</span>"
end
if not mw.wikibase.entityExists(ID) then
return "<span class='error'>" .. ID .. " no existe en Wikidata</span>"
end
end
local function formatlink(itemId, sitename, sitecode, sitelink, description, label)
return '<span data-enlace-wikidata="https://www.wikidata.org/entity/'..itemId..
'" class="enlace-wikidata enlace-wikidata-'..sitename..
'">[[' .. sitecode .. ':' .. sitelink .. '|<span title="'..(description or '')..
'">' .. label .. '</span>]]</span>'
end
function p.worklink(frame)
local workId = frame.args.wikidata
local label = frame.args.label
local error = checkId(workId, label)
if error then return error end
local sitelink = mw.wikibase.getSitelink(workId, 'eswikisource')
if sitelink then
return p.link(frame)
end
local ediciones = mw.wikibase.getBestStatements( workId, 'P747' )
if ediciones then
for i, ed in pairs(ediciones) do
local qid = ed and ed.mainsnak.datavalue.value.id
if qid and mw.wikibase.getSitelink( qid, 'eswikisource' ) then
return p.link({args={wikidata=qid, label=label}})
end
end
end
return p.link(frame)
end
function p.link(frame)
local itemId = frame.args.wikidata
local label = frame.args.label
local error = checkId(itemId, label)
if error then return error end
local description = mw.wikibase.getDescription(itemId)
if label == nil or frame.args.label == '' then
label = mw.wikibase.getLabel(itemId)
end
-- enlace para propiedades
if string.sub(itemId, 1, 1) == 'P' then
return '[[d:Property:'..itemId..'|('..itemId..') '..label..']]'
end
-- enlace para QID
local sitelinks = {'eswikisource', 'eswiki', 'commonswiki'}
local interwikis = {'', 'w', 'commons'}
local sitios = {'wikisource', 'wikipedia', 'commons'}
for i = 1, #sitelinks do
local sitelink = mw.wikibase.getSitelink(itemId, sitelinks[i])
if sitelink then
return formatlink(itemId, sitios[i], interwikis[i], sitelink, description, label)
end
end
-- Si no encuentra .
return '<span data-enlace-wikidata="https://www.wikidata.org/entity/'..itemId..'" class="plainlinks enlace-wikidata enlace-wikidata-reasonator">[https://reasonator.toolforge.org/?q=' .. itemId .. ' ' .. label .. ']</span>'
end
return p