27 de febrero de 2018

:: Google Sign in

Una prueba de concepto sobre la integración de Google Sign-in en nuestra web, podría ser un código similar al siguiente:
<html>
<head>
 <meta name="google-signin-client_id" content="xxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com">
 <script src="https://apis.google.com/js/platform.js" async defer></script>
</head>
<body>
 <h1>Integración de Google Sign-in</h1>
 
 <div id="my-signin2"></div>
 <script>
  function onSuccess(googleUser) {
    console.log('Logueado como : ' + googleUser.getBasicProfile().getName());
  }
  function onFailure(error) {
    console.log(error);
  }
  function renderButton() {
    gapi.signin2.render('my-signin2', {
   'scope': 'profile email',
   'width': 240,
   'height': 50,
   'longtitle': true,
   'theme': 'dark',
   'onsuccess': onSuccess,
   'onfailure': onFailure
    });
  }
 </script>

 <script src="https://apis.google.com/js/platform.js?onload=renderButton" async defer></script>
 
</body>
</html>


Tras pulsar sobre el botón de conectarnos con una cuenta de Google, en la consola obtendremos el nombre del perfil asociado a la cuenta de correo. De esta manera podemos integrar el sistema de validación de Google en nuestros desarrollos webs.



20 de febrero de 2018

:: Alfresco. Crear un foro de discusión sobre un documento

En Alfresco es posible crear un foro de discusión sobre un documento para que los usuarios con acceso inserten los comentarios pertinentes.
En la prueba de concepto que realizaremos a continuación, crearemos un tema y foro de discusión sobre cada documento que se suba a una determinada carpeta de Alfresco, por lo que ejecutaremos un script mediante una regla de  contenido.

El código del script podría ser algo similar a esto:

if(!document.hasAspect("fm:discussable")) { 
 document.addAspect("fm:discussable"); 
}
if(!document.hasAspect("fm:commentsRollup")) {
      document.addAspect("fm:commentsRollup");
}
 
var forums = document.childAssocs["fm:discussion"];
var forum;
if(forums.length === 0) {
     forum = document.createNode(document.properties.name + " discusion", "fm:forum", "fm:discussion");
} else {
     forum = forums[0];
}
 
var topics = forum.childAssocs["cm:contains"];
var topic;
if(topics == null || topics.length === 0) {
    topic = forum.createNode("Comments", "fm:topic", [], "cm:contains", "cm:Comments");
} else {
    topic = topics[0];
}

var now = new Date();
var name = "comment-" + now.getTime();
var mypost = topic.createNode(name, "fm:post", [], "cm:contains", name);

mypost.setContent("Contenido del post");

13 de febrero de 2018

:: Alfresco. Herramienta para la creación de un tema

Aunque para la creación de un tema en Alfresco 5.2 seguíamos un proceso más bien manual y un poco artesano, contamos con una utilidad que nos permite generar un tema -más o menos personalizado- generándonos incluso el fichero .amp para su despliegue sobre nuestro servidor de Alfresco.

En la siguiente imagen se muestran los datos que deberemos ir parametrizando para el nuevo tema de Alfresco. Una vez cumplimentados los campos, la herramienta nos remitirá -al correo electrónico especificado- el fichero .amp generado.


La herramienta en cuestión está disponible en la siguiente url: https://www.flex-solution.com/theme/

9 de febrero de 2018

:: ¿Qué es el Geocaching?

El Geocaching consiste en esconder objetos en el campo o en la ciudad y posteriormente apuntar las coordenadas geográficas de ese punto mediante un receptor GPS y hacerlas públicas (por lo general en sitios web especializados) para que otras personas puedan efectuar su búsqueda. En estos lugares donde se publican las coordenadas, la gente puede entrar a consultar tesoros escondidos cerca de su casa o por alguna zona donde vaya a hacer un viaje.

El "tesoro" básico contiene un cuaderno (logbook) donde apuntar tu nombre para que quede registrada tu visita.
Hay tesoros con contenedores más grandes (que suelen ser fiambreras de diferentes tamaños) en los que además del logbook, hay objetos de pequeño valor que puede llevarse el que descubre el tesoro, pero siempre bajo la premisa de que si te llevas algo, tienes que dejar a cambio algo de igual o mayor valor para el siguiente geocachero que lo descubra.

Entre los objetos que pueden dejarse en el contenedor, también están los travelbugs y geocoins, que son "objetos viajeros", es decir, puedes y debes sacarlos del contenedor pero no puedes quedártelos, sino que tienes que llevarlos a otro "geoescondite" para ayudarles a cumplir su misión (para saber la misión de estos objetos hay que meter el código que portan en la página de geocaching). Cada uno de estos contenedores con todo su contenido es a lo que se denomina "cache" o "geocache" en la jerga técnica, cuya interpretación al castellano puede ser "tesoro", o "geoescondite"

También es posible crear geocaches encadenados (normalmente denominados multi-caches), donde el objeto anunciado contiene una nota con las coordenadas del regalo o de otras notas con otras coordenadas. (Fuente Wikipedia) Más información: Guía Geocaching

6 de febrero de 2018

:: Liferay. Error $theme.runtime("145")

En Liferay -en alguna ocasión- ha ocurrido que tras un despliegue este queda en un estado inconsistente y a la hora de loguearnos en el portal no nos aparece la "dockbar" y en su lugar se muestra el siguiente error:

$theme.runtime("145") 

Revisando información en los foros de Liferay una posible solución era la siguiente que consistía en restaurar un backup:
Get a fresh folder of the Liferay bundle you are using
Copy the html folder from the $LIFERAY_HOME/$TOMCAT_HOME/webapps/ROOT/
Move it to the broken instance's ROOT folder, overwriting all files

En nuestro caso, la solución fue la siguiente:
.- Tras revisar el log del servidor determinamos que se había modificado algún fichero .jsp

.- El fichero que detectamos era "view_user_account.jsp" ubicado en: "/opt/liferay-portal-6.2-ee-sp9/tomcat-7.0.42/webapps/ROOT/html/portlet/dockbar"

.- Copiamos el fichero "view_user_account.jsp" del servidor de integración al servidor de producción (donde parecía que no era igual)

Tras esta modificación todo volvió a funcionar con normalidad


:: 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...