31 de mayo de 2017

:: Liferay. Modificar el tamaño de los campos creados con Service Builder

Más información sobre parametrizaciones que podemos llevar a cabo en el fichero: "portlet-model-hints.xml" en el siguiente enlace: https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-2/customizing-model-entities-with-model-hints

Para modificarlo, tendremos que añadir lo siguiente:

<hint name="max-length">100</hint>

28 de mayo de 2017

:: Geolocalizar una lista de direcciones

A veces necesitamos obtener las coordenadas geográficas (longitud y latitud) de una serie de direcciones. Una forma rápida de llevar a cabo esta tarea, es la que describiremos a continuación.

En Google Drive podemos crear scripts (Google App Script) para llevar a cabo tareas variadas.
Para el caso que nos ocupa, los pasos a seguir son:

1.- Crearemos una hoja de cálculo en Google Drive

2.- En la primera columna insertaremos las direcciones de las que queremos obtener las coordenadas


3.- Pulsamos sobre la entrada de menú "Herramientas" > "Editor de secuencia de comandos" y añadimos el siguiente código

function geoCode() {
var sheet = SpreadsheetApp.getActiveSheet();

var range = sheet.getDataRange();
var cells = range.getValues();

var latitudes = [];
var longitudes = [];

for (var i = 0; i < cells.length; i++) {
var address = cells[i][0];
var geocoder = Maps.newGeocoder().geocode(address);
var res = geocoder.results[0];

latitudes.push([res.geometry.location.lat]);
longitudes.push([res.geometry.location.lng]);
}

sheet.getRange('B1').offset(0, 0, latitudes.length).setValues(latitudes)
sheet.getRange('C1').offset(0, 0, latitudes.length).setValues(longitudes);
}


4.- Le daremos un nombre al proyecto, por ejemplo "Geocodificar direcciones" y lo guardaremos.

5.- Tras guardarlo, ejecutamos el código pulsando sobre el icono: "Ejecutar"

6.- Tendremos que permitir al script la escritura en nuestra hoja de cálculo



7.- Una vez finalizada la ejecución, tendremos en la segunda y tercera columna, la latitud y longitud respectivamente



23 de mayo de 2017

:: Alfresco. Geolocalizar documentos sobre Google Maps

En Alfresco es posible geolocalizar sobre una cartografía de Google Maps aquellos "documentos" (nodos) que tengan información de geolocalización.


Por ejemplo, podríamos ver -sobre un mapa- la geolocalización de un documento correspondiente a una licencia de obra incluido en Alfresco, siempre y cuando este cuente con información de "longitud" y "latitud".

En nuestro caso, todas las licencias de obra disponen de esta meta-información que permite asociarles una ubicación sobre un mapa. De esta manera, cuando consultamos las acciones disponibles sobre este documento, nos aparecerá una nueva entrada denominada: "Ver en Google Maps".
Previamente, sobre la carpeta contenedora, podríamos definir el aspecto "cm:geographic".



Al pulsar sobre esta opción veremos el documento posicionado sobre una cartografía de Google Maps con una vista previa en miniatura del mismo.


En cualquier caso, esta opción no funciona por defecto ya que es necesario contar con la "apikey" de Google Maps. El error javascript mostrado es:

Google Maps API error: MissingKeyMapError https://developers.google.com/maps/documentation/javascript/error-messages#missing-key-map-error _.rb @ maps.google.com/maps/api/js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:38 util.js:220 Google Maps API warning: NoApiKeys https://developers.google.com/maps/documentation/javascript/error-messages#no-api-keys rB.j @ util.js:220 (anonymous) @ js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:139 (anonymous) @ js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:56 (anonymous) @ js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:53 (anonymous) @ js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:56 _.G @ js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:55 (anonymous) @ js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:56 _.v @ js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:35 Yc @ js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:56 (anonymous) @ js?sensor=false&callback=Alfresco.component.GoogleMap.Callback:139

Para solucionarlo, generamos esta clave desde Google. Más información en el siguiente enlace:
https://developers.google.com/maps/documentation/javascript/get-api-key?hl=ES

Una vez tengamos la apikey generada, modificaremos los siguiente ficheros:
  • [Alfresco]\tomcat\webapps\share\components\geographic\google-map.js
  • [Alfresco]\tomcat\webapps\share\components\geographic\google-map-min.js

En estos ficheros, cuando se hace la petición a Google Maps, añadiremos un parámetro "key=NUESTRA_API_KEY", por lo que quedará de la forma:

script.src = window.location.protocol + "//maps.google.com/maps/api/js?sensor=false&key=NUESTRA_API_KEY&callback=Alfresco.component.GoogleMap.Callback";

17 de mayo de 2017

:: Alfresco. Crear documento a partir de plantilla

Es habitual en una empresa o entidad, disponer de una serie de documentos normalizados o plantillas de diversa índole (solicitudes de vacaciones, ofertas técnicas, solicitud de material, hoja de gastos, orden de compra, orden de trabajo,...).
De esta manera, podríamos tener estas plantillas en Alfresco, para que los usuarios con los permisos oportunos pudieran crear documentos a partir de la plantilla seleccionada.

Para que las plantillas estén disponibles para los usuarios de Alfresco, el usuario administrador seguirá los siguientes pasos:
1.- Seleccionará la carpeta siguiente: "Repositorio" > "Diccionario de datos" > "Plantillas de nodos"

2.- Subirá los documentos (plantillas) oportunos a esta ubicación



Una vez copiadas las plantillas de documento en esta ubicación, estarán disponibles a la hora de crear un documento en la biblioteca de documentos, seleccionando:
"Crear" > "Crear documento a partir de plantilla"

De esta manera, el documento creado estará basado en la plantilla seleccionada debiendo el usuario modificarlo con la información pertinente.

12 de mayo de 2017

:: Liferay. Carga múltiple de ficheros no se muestra en Chrome

A la hora de subir contenidos a la biblioteca de documentos y multimedia del gestor de contenidos Liferay, la opción: "Añadir" > "Múltiples documentos" no está disponible en el navegador Chrome.



En algunas noticias, se indica que Chrome ha dejado de dar soporte a Flash, pero aún así el problema se debe a que posiblemente en alguna de las actualizaciones del navegador la configuración es más restrictiva.

Para habilitar flash en nuestro navegador Chrome, seguiremos los pasos siguientes:
.- En la barra de navegación accedemos a la siguiente url: chrome://settings/content



.- Bajo el apartado: "Privacidad" pulsaremos sobre el botón: "Configuración de contenido"


.- En la capa emergente que nos aparece, buscaremos el epígrafe "Flash" y seleccionaremos la opción: "Permitir que los sitios web ejecuten Flash" (si queremos que así sea), ya que por defecto la opción seleccionada era: "Preguntar antes de permitir que los sitios web ejecuten Flash (recomendado)"


.- Una vez seleccionada esta opción, pulsaremos sobre el botón "Listo"

Tras este cambio en nuestro navegador, en la biblioteca de documentos y multimedia se mostrará la opción: "Múltiples documentos".


7 de mayo de 2017

:: Liferay. Tip para determinar si un portal está desarrollado en Liferay

Aunque existen multitud de extensiones que permiten identificar los detalles sobre la plataforma de desarrollo de un portal web, una forma rápida y sencilla de determinar si un portal está desarrollado con este gestor, sería:

.- Abrir la consola en el navegador (F12 en Chrome y seleccionar la pestaña "Console")

.- Escribir en la consola "Liferay" y pulsar Intro

Si esta petición nos devuelve un objeto, indicará que el portal web que nos ocupa está desarrollado con este gestor


Si por el contrario la respuesta obtenida es: "Liferay no está definido", indicará que este portal no está desarrollado con Liferay.

1 de mayo de 2017

:: Liferay. Ocultar detalles de la versión

Es habitual que en los portales desarrollados con el gestor Liferay, no se oculten los detalles de la versión desplegada. Como en otros CMS's quizás sería buena práctica ocultarlos por cuestiones de posibles vulnerabilidades, facilitando de esta manera el trabajo.

En un portal desarrollado en Liferay podemos ver que en las cabeceras aparece toda la información de la versión. Por ejemplo:

Liferay-Portal:Liferay Portal Community Edition 6.2 CE GA6 (Newton / Build 6205 / January 6, 2016)


Para ocultar los detalles de la versión deplegada, debemos añadir la siguiente línea en el fichero "portal-ext.properties".

http.header.version.verbosity=partial

Tras reiniciar el tomcat, la información que veremos en las cabeceras será algo como esto, donde no se dan detalles de la versión del gestor:

Liferay-Portal:Liferay Portal Community Edition


:: Cookies de nuestra página web. ¿Para qué sirve cada una?

A menudo una pregunta que nos hacen es qué cookies se están utilizando en mi página y para qué sirven. Para ver las cookies, podemos selecci...