Módulo:Ficha de centro educativo

Uso


local z = {}

local argumentos    -- Tabla de argumentos con los que se llama a la función 
local argumento={}  -- Argumentos eliminando los argumentos sin datos
local Entidad       -- Tabla con los datos en Wikidata del libro.
--                         Ver Wikidata:WikiProject Books para las propicedades posibles
local algunaPropiedadEnlazaWikidata -- Para alguna propiedad no existe la etiqueta ni el enlace mostrándose algo de la forma d:...

-- Módulos utilizados
local ModuloArgumentos       = require('Módulo:Argumentos')
local ModuloFicha            = require('Módulo:Ficha')
local ModuloFormato          = require('Módulo:Formato texto')
--local ModuloIdentificadores  = require('Módulo:Identificadores')
local ModuloPaginas          = require('Módulo:Páginas')	
--local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')	
local ModuloWikidata         = require('Módulo:Wikidata')
local ModuloTablas           = require('Módulo:Tablas')
--local ModuloURL              = require('Módulo:URL')

-- Constantes
--local enMayusculas    = {['formatoTexto'] = 'mayúscula'}
--local enMayusculasO   = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o '}
--local listaNoOrdenada = {['lista'] = 'no ordenada'} --, ['debeExistir'] = 'sí'
--local lugar           = {['conjunción']=' o ', ['valor-función'] = ModuloWikidataFormatos.formatoLugar}
--local debeExistir     = {['debeExistir'] = 'sí'}
--local conPeriodo      = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo}
	
function z.Ficha(frame)
--  Hacer que funcione la función formatBandera	 y formatoGentilicio
    ModuloWikidata:setFrame(frame)  -- No funciona si se pone ModuloWikidata.setFrame(marco)    
    
    --Obtener una copia de los argumentos eliminando los argumentos sin valor
    local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame)
    
    -- Obtener datos complejos
    
    -- Obtener los datos de la página donde se inserta la ficha de Wikidata.
    Entidad = mw.wikibase.getEntityObject() or {}
    
    --if true then
    --	return ModuloTablas.tostring(Entidad)
    --end
    
    nombre = argumento['nombre'] or
             obtenerEtiquetaWikidata() or 
             ModuloPaginas.nombrePagina({desambiguar='sí'})
    
    -- Para los lemas ver la propiedad P1451, Wharton Business School
    local lema    = ModuloFormato.enCursivas   (argumento['lema']   , argumento['lemaref'])
    local lemaesp = ModuloFormato.entreComillas(argumento['lemaesp'], argumento['lemaespref'])
    
    local tipocabecera = 'libro'
    local estilotitulo = 'background-color:#ffe8b8'
    local tipoCentro = propiedad('P31') or ''
    if tipoCentro:find('universidad') then
    	tipocabecera = 'universidad'
    	estilotitulo = 'background-color:#cddefe'
    end
    
    local estudiantes = argumento['estudiantes']
    local listaEstudiantes = ''
    if estudiantes then
    	listaEstudiantes = ' • '
    end
    
    local Ficha = {
        --clase           = 'biography vcard',

        -- Título
        tipocabecera    = tipocabecera,
        titulo          = nombre,
        estilotitulo    = estilotitulo,
        subtitulo       = argumento['traducción nombre'],
        estilosubtitulo = 'font-style:italic; font-size: 80%;' .. estilotitulo,
        
        estiloseccion   = estilotitulo,
        
        estilopie       = 'font-size: x-small',
        --Imagen
        imagen          = argumento['escudo'] or (
        					(not argumento['escudo'] and not argumento['logo'] and not argumento['imagen']) 
        						and (propiedad('P94', {['uno'] = 'sí'}) or propiedad('P154', {['uno'] = 'sí'}))),
        ['tamañoimagen']= argumento['tamaño escudo'] or '90px',
        pie             = argumento['pie escudo'],
        imagen2         = argumento['imagen']  or 
                          propiedad('P18', {uno='sí'}),                          
        ['tamañoimagen2']= '270px',                          	
        pie2             = argumento['pie de imagen'] or argumento['pie_de_imagen'],
        imageninferior           = argumento['logo'],
        ['tamañoimageninferior'] = argumento['tamaño logo'],
        pieinferior              = argumento['pie logo'],
        
        piedetabla = argumento['notas'] and ('<hr/><span style="font-size:90%">' .. argumento['notas'] .. '</span>'),
        
        {tipo='sección',
        	{'[[Sigla]]'   , argumento['sigla']},
            {'[[Acrónimo]]', argumento['acrónimo']},
            {'[[Sobrenombre]]' , argumento['sobrenombre']},
            {'[[Lema]]'    , ModuloFormato.enVariasLineas({lema, lemaesp})},
            {'Tipo'        , argumento['tipo']},
            --{'Universidad' , argumento['universidad']},
            {'Forma parte de' , argumento['universidad'] or propiedad('P361')},
            {'Fundación'   , argumento['fundación'] or propiedad('P571', {['enlace'] = 'no'})},
            {'Fundador' , argumento['fundador'] or propiedad('P112')},
        },
        
        {tipo='sección',
        	['titulo'] = 'Localización',
        	{'País', argumento['pais']},
        	{'Division', argumento['division_administrativa']},
        	{'Subdivisión', argumento['subdivision_administrativa']},
        	{'Municipio', argumento['municipio']},
            {'Dirección', argumento['localización'] or 
            				 ModuloFormato.enVariasLineas({argumento['dirección'],
            				 							   ModuloFormato.separadosPorComa({argumento['ciudad'], argumento['estado'], argumento['país']})}) or
            	             ModuloFormato.enVariasLineas({propiedad('P969'), --Dirección postal
            	             	                           ModuloFormato.separadosPorComa({propiedad('P131'),propiedad('P17')})})}, --
            {'[[Campus]]'  , argumento['campus']},
            {'Coordenadas' , argumento['coor'] or argumento['coordenadas'] or propiedad('P625', {formato='dms', display='inline,title', tipo='edu', uno='sí'})},
            {'Otras sedes' , argumento['sedes']},
            {'Transporte público', argumento['transporte']},
        },
        
        {tipo='sección',
        	['titulo'] = ModuloFormato.entreParentesis('Administración', argumento['admin_año']),
        	{'[[Rector]]', argumento['rector']},
        	{'[[Rector|Rectora]]', argumento['rectora']},
        	{'Vicerrector', argumento['vicerrector']},
        	{'Vicerrectora', argumento['vicerrectora']},
        	{'Canciller'    , argumento['canciller']},
        	{'Vicecanciller', argumento['vice canciller']},
        	{'Presidente'  , argumento['presidente']},
        	{'Presidenta'  , argumento['presidenta']},
        	{'Director'     , argumento['director']},
        	{'Directora'     , argumento['directora']},
        	{'Decano'     , argumento['decano']},
        	{'Decana'     , argumento['decana']},
        	{'Vicedecana' , argumento['vicedecana']},
        	{'Vicedecano' , argumento['vicedecano']},
        	{argumento['administrador'], argumento['nombre administrador']},
        	{'Afiliaciones', argumento['afiliaciones']},
        	{'[[Dotación financiera|Dotación de capital]]', argumento['dotación de capital']},
        	{'[[Presupuesto]]', argumento['presupuesto']},
        	{'Funcionarios', argumento['funcionarios']},
        	{'Administrativos', argumento['administrativos']},
        	{'Gobierno Estudiantil', argumento['gobiernoestudiantil']},
        	{'Presidente Estudiantil', argumento['presidenteestudiantil']},
        	{'Jefe de Estudios'     , argumento['jefedeestudios']},
        	{'Jefa de Estudios'     , argumento['jefadeestudios']},
        	{'Secretaría'     , argumento['secretaria']},
        	{'[[Asociación de Madres y Padres de Alumnos]]'     , argumento['ampa']},
        	{'Centros asociados', argumento['centrosasociados']},
        },
        
        {tipo='sección',
        	['titulo'] = ModuloFormato.entreParentesis('Academia', argumento['academia_año']),
        	{'[[Profesor]]es'  , argumento['profesores']},
        	{'Empleados'       , argumento['empleados']},
        	{'Docentes'        , argumento['docentes']},
        	{'[[Estudiante]]s', estudiantes},
        	{listaEstudiantes .. '[[Bachillerato]]', argumento['bachillerato']},
        	{listaEstudiantes .. '[[Pregrado]]'    , argumento['pregrado']},
        	{listaEstudiantes .. '[[Posgrado]]'    , argumento['posgrado'] or argumento['postgrado']},
        	{listaEstudiantes .. '[[Doctorado]]'   , argumento['doctorado']},
        	{listaEstudiantes .. 'Colegiales'      , argumento['colegiales']},
        	{listaEstudiantes .. 'Titulados'       , argumento['titulados']},
        	{listaEstudiantes .. 'Otros'           , argumento['otros_estudiantes']},
        	{'[[Mascota (símbolo)|Mascota]]', argumento['mascota']},
        	{'Colores', argumento['colores']},
        	{'Colores académicos', argumento['colores académicos']},
        	{'Colores deportivos', argumento['colores deportivos']},
        },
        
        {tipo='sección', 
        	['titulo'] = 'Sitio web',
        	{'', argumento['sitio web'] or propiedad('P856')},
        },
    }
    categorias = ''
    
    if algunaPropiedadEnlazaWikidata then
    	categorias = '[[Categoría:Wikipedia:Páginas con propiedades de Wikidata sin etiqueta]]'
    end
    
    if  ( mw.title.getCurrentTitle().namespace == 0 ) then
    	if (argumento['coor'] or argumento['coordenadas']) and propiedad('P625', {formato='dms', display='inline', tipo='edu', uno='sí'}) then
    		categorias = categorias .. '[[Categoría:Wikipedia:Artículos con coordenadas locales]]'
    	elseif argumento['coor'] or argumento['coordenadas'] then
    		categorias = categorias .. '[[Categoría:Wikipedia:Artículos con coordenadas por trasladar a Wikidata]]'
    	end
    end
    
    --if educacion and almamater then
    -- 	categorias = categorias .. '[[Categoría:Wikipedia:Páginas que tienen informado el campo educación]]'
    --end
    
    return ModuloFicha.infobox(Ficha) .. categorias
end

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

        valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])

        if valorPropiedad and valorPropiedad:match('%[%[:d:') then
          algunaPropiedadEnlazaWikidata = true
        end

    	return valorPropiedad
    end
end

function obtenerEtiquetaWikidata()
	if Entidad and Entidad.labels and Entidad.labels.es then
        return Entidad.labels.es.value
    end
end

return z