Módulo:Interproyecto

Documentación del módulo


Uso

Uso en {{Interwiki-Link}}


Esta documentación está transcluida desde Módulo:Interproyecto/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)

local p = {}
local Wikidata = require('Módulo:Wikidata')
local Entidad  = mw.wikibase.getEntityObject() or ''     -- Tabla con los datos en Wikidata
local Str = require('Módulo:String')
local Enlaces = require('Módulo:Enlaces')

--parámetros reconocidos. 1 = vigente, 0 = obsoleto. En orden alfabético:
local params = {['commons']=1,['commonscat']=1,['wikiviajes']=1, ['wikcionario']=1,['wikidata']=1,['wikilibros']=1,['wikinoticias']=1,['wikipedia']=1,['wikiquote']=1,['wikispecies']=1,['wikiversidad']=1}

-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
function propiedad(idPropiedad,opciones)
	
    if Entidad and Entidad.claims   then --and Entidad.claims[idPropiedad] then
    	if not opciones then
    		opciones = {}
    	end
    	idPropiedad = string.upper(idPropiedad)
    	opciones['propiedad'] = idPropiedad
        valorPropiedad = Wikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
        if not valorPropiedad or valorPropiedad == '' then
        	return ''
        end
        return valorPropiedad
    else return ''
    end
end

function p.interproyecto( frame )
	local frame = frame:getParent()
    local titulo = mw.title.getCurrentTitle()
	local argus = {}
	for k,v in pairs(frame.args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
		if v ~= '' and type(k) ~= 'number' then
			argus[mw.ustring.lower(k)] = v -- todos los parámetros en minúsculas por defecto: 
		end
	end

    -- WIKIDATA! --
    if Entidad == '' and argus['wikidata'] then
    	Entidad = mw.wikibase.getEntityObject(argus['wikidata'])
    end
    
    local nombre = frame:preprocess("{{PAGENAME}}")

	-- Lista de enlaces
	if (not argus['wikidata'] or argus['wikidata'] == '') and Entidad~=nil then
		argus['wikidata']=Entidad.id --enlazar a elemento wikidata
	end
	
	---- Enlaces uno por uno ---
	listaenlaces = Enlaces.all(argus)

	listaenlaces["eswiki"]["text"] = "Enciclopedia"
	listaenlaces["eswikiquote"]["text"] = "Citas"
	listaenlaces["eswikinews"]["text"] = "Noticias"
	listaenlaces["commonswiki"]["text"] = "Multimedia"
	listaenlaces["specieswiki"]["text"] = "Especies descritas"
	listaenlaces["wikidata"]["text"] = "Metadatos"
	listaenlaces["eswikibooks"]["text"] = "Libros"
	listaenlaces["eswikiversity"]["text"] = "Clases"
	listaenlaces["eswiktionary"]["text"] = "Diccionario"
	listaenlaces["eswikivoyage"]["text"] = "Viajes"
	orden = { 'eswiki', 'eswikiquote','eswiktionary', 'eswikibooks' , 'eswikiversity' , 'eswikinews', 'commonswiki', 'specieswiki', 'eswikivoyage' ,'wikidata'}
	
	textoenlaces = Enlaces.formattedbiocitas(listaenlaces, orden)
	
	local contenido = mw.html.create( 'div' )
		:addClass( 'ws-noexport' )
		:css( 'margin', '5px')
		:css( 'float', 'right' )
		:css( 'box-sizing', 'border-box')
		:css( 'border', '1px solid #808080')
		:css( 'width', '30%');
		
	local nodoimagen = contenido:tag( 'div' )
			:css(' margin', '5px')
			:css('text-align','center');
	--P41
	if argus['imagen'] ~= '' and argus['imagen'] ~= nil  then
		nodoimagen:wikitext("[[File:"..argus['imagen'].."|frameless|99999x150px|center]]")
	elseif propiedad('p41') ~= '' then
		nodoimagen:wikitext("[[File:"..propiedad('p41',{['uno']='sí'}).."|frameless|99999x150px|Bandera|center]]")
	elseif propiedad('p18') ~= '' then
		nodoimagen:wikitext("[[File:"..propiedad('p18',{['uno']='sí'}).."|frameless|99999x150px|"..propiedad('p18',{['calificador']='P2096',['idioma']='es'}).."|center]]")
	end
	nodoimagen:done()

	local nodonombre = contenido:tag( 'div' )
			:css(' margin', '5px')
			:css( 'text-align' , 'center')
			:css( 'background' , '#6688AA')
			:css('color', 'white')
			:css('font-weight','bold')
			:css('font-size', '120%');
	if argus['nombre'] ~= '' and argus['nombre'] ~= nil  then
		nodonombre:wikitext( argus['nombre'] )
	else
		nodonombre:wikitext( nombre )
	end
	nodonombre:done()
	
	local nodoenlaces = contenido:tag( 'div' )
			:css(' margin', '5px')
			:css('text-align','center');
	nodoenlaces:wikitext(textoenlaces)
	nodoenlaces:done()
	
	return contenido:done()
end

return p