30 de diciembre de 2021

:: Tip. Liferay Developer Studio: Mostrar números de línea


En el editor de Eclipse para mostrar las líneas de texto debemos seleccionar:

"Window > Preferences > General > Editors > Text Editors" y marcaremos el check: "Show line numbers".


25 de agosto de 2021

:: Liferay 7.1. Error al generar un theme


En Liferay 7.1 desde Developer Studio a la hora de generar un theme, muestra un error ya que no resuelve algunas dependencias.

La solución, es revisar el fichero: "build.gradle" para comprobar las versiones añadidas en las dependencias. Por ejemplo, eliminando la versión específica se generará correctamente.

dependencies {

cssBuilder group: "com.liferay", name: "com.liferay.css.builder", version: "3.0.2"

parentThemes group: "com.liferay", name: "com.liferay.frontend.theme.styled", version: "3.0.16"

parentThemes group: "com.liferay", name: "com.liferay.frontend.theme.unstyled", version: "3.0.22"

  portalCommonCSS group: "com.liferay", name: "com.liferay.frontend.css.common", version: "3.0.1"

  themeBuilder group: "com.liferay", name: "com.liferay.portal.tools.theme.builder", version: "1.1.7"

}


Con esta configuración, en la que no se indican versiones específicas, debería generar correctamente el "theme".

dependencies {

cssBuilder group: "com.liferay", name: "com.liferay.css.builder", version: "3.0.2"

parentThemes group: "com.liferay", name: "com.liferay.frontend.theme.styled"

parentThemes group: "com.liferay", name: "com.liferay.frontend.theme.unstyled"

portalCommonCSS group: "com.liferay", name: "com.liferay.frontend.css.common"

themeBuilder group: "com.liferay", name: "com.liferay.portal.tools.theme.builder", version: "1.1.7"

}

19 de agosto de 2021

:: Alfresco. Consultar la versión de Alfresco instalada


Una forma rápida de recuperar la versión de Alfresco que tenemos instalada, es a través de la API, de la siguiente manera:


https://localhost:8080/share/proxy/alfresco/api/server


Un ejemplo de la salida podría ser la siguiente:

{

   "data":

   {

      "edition": "Community",

      "version": "5.0.0 (d r99759-b2)",

      "schema": "8022"

   }

}

16 de agosto de 2021

:: Liferay. # BridJ: LoadLibrary error when loading C:\Users\USERNAME\AppData\Local\Temp\BridJExtractedLibraries12860114070162595892\liferaysass.dll : A dynamic link library (DLL) initialization routine failed.


En Liferay 7.1, a la hora de generar un módulo se produce el siguiente error:

# BridJ: LoadLibrary error when loading C:\Users\USERNAME\AppData\Local\Temp\BridJExtractedLibraries12860114070162595892\liferaysass.dll : A dynamic link library (DLL) initialization routine failed.

Tras buscar información relacionada, se habla de que este bug está asociado al uso de Java11, pero el problema se da también en Java8.

https://issues.liferay.com/browse/LPS-87211?page=com.atlassian.streams.streams-jira-plugin%3Aactivity-stream-issue-tab


De acuerdo a otras entradas, una alternativa para solventar este error, es hacer uso de Ruby para compilar los ficheros .scss. Esto lo indicaremos en el fichero "gradle.properties" del workspace, con la siguiente línea:

sass.compiler.class.name=ruby

https://issues.liferay.com/browse/LRDOCS-4073


11 de agosto de 2021

SVN :: Obstructed update svn


En ocasiones, a la hora de descargarnos un "theme" de nuestro repositorio de código: SVN, obtenemos el siguiente mensaje:

Obstructed update

svn: 'C:\liferay62\liferay-plugins-sdk-6.2\themes\portlet-theme' is already a working copy for a different URL


El problema es que tenemos una versión en local del proyecto. Una solución (si tenemos todos los cambios subidos al SVN) es eliminar la carpeta de local y hacer un checkout de lo que hay en el repositorio. 

9 de agosto de 2021

:: Liferay. Not updating portlet because version 6.2.5.1 is newer than version 6.2.0.1


A la hora de desplegar un portlet en el log podemos obtener un mensaje indicando que este no se ha actualizado porque la versión desplegada en el servidor es más actual que la que estamos intentando desplegar.

Un ejemplo de mensaje podría ser:

Not updating portlet_name because version 6.2.5.1 is newer than version 6.2.0.1


Para solventarlo, tenemos que generar la versión correcta de nuestro portlet. Para el caso Liferay 6.2, accederemos a la carpeta donde tengamos el SDK (por ejemplo: C:\liferay62\liferay-plugins-sdk-6.2) y aquí encontraremos un fichero: "build.usuario.properties"; es decir, si nuestro usuario es: "netic360", el fichero se llamará: "build.netic360.properties".

Puesto que este es el fichero utilizado para llevar a cabo el "build" del portlet, debemos añadir la línea:

lp.version = 6.2.5

De esta manera, el .war del portlet se generará para la versión especificada.

14 de julio de 2021

:: Video HTML5. Reproducción automática a partir de un punto determinado


Haciendo uso de la etiqueta "video" de HTML5, podemos indicar que se reproduzca de forma automática entre un punto y otro de este.

<video src="url-del-video.mp4#t=10,20" autoplay controls>Vídeo a reproducir</video>

Con el atributo "autoplay" el vídeo comenzará a reproducirse, y al indicar los parámetros en la url del vídeo: #t=10,20, este se reproducirá desde el segundo: "10" hasta el segundo: 20.

2 de julio de 2021

:: Analytics en Liferay 6.0

Aunque la versión 6.0 de Liferay es bastante antigua, aún hay portales con esta versión.

Para insertar el código de seguimiento de Analytics se realiza desde la sección:

Panel de control > Páginas > Configuración > Supervisión.

En este punto insertaremos el código del tipo: UA-XXXXXXXX-XX


30 de junio de 2021

:: Velocity. Comparar strings


Para comparar cadenas de caracteres en plantillas Velocity, podemos hacer uso del método: compareTo

Por ejemplo para comparar dos cadenas de caracteres independientemente de mayúsculas y minúsculas, el método que podríamos utilizar es: compareToIgnoreCase

#if(variableString1.compareToIgnoreCase != variableString2.compareToIgnoreCase)

    Hacer lo que corresponda

#end

 

28 de mayo de 2021

:: Java. Método split


Por ejemplo en el caso de leer un fichero .csv línea a línea, el error obtenido era "indexOutOfBound".

El fichero de ejemplo a leer era del tipo: "valor1;valor2;;;;;;;"


El código para leer el fichero era:

br = new BufferedReader(new FileReader(fichero));

    

while ((line = br.readLine()) != null) {

Scanner scanner = new Scanner(line);

String[] datos = line.split(cvsSplitBy);

}


El problema es que el método split no devuelve el elemento en el caso de que este sea nulo, es decir, al hacer el split de la línea, el valor devuelto era: "valor1;valor2" y al tratar de acceder a la tercera posición del srting devuelve error.

La solución es indicarle al método split que devuelva estos elementos aunque sean nulos:


br = new BufferedReader(new FileReader(fichero));

    

while ((line = br.readLine()) != null) {

Scanner scanner = new Scanner(line);

String[] datos = line.split(cvsSplitBy,-1);

}


El cambio respecto al código anterior es añadir como segundo parámetro al método "split" el valor: "-1"



24 de mayo de 2021

:: Cargar una imagen en Google Colab


Para mostrar una imagen en un notebook de Google Colab, los pasos son:
  1. Subir previamente la imagen a Google Colab
  2. Referenciarla mediante el siguiente código:

from IPython.display import Image
Image('punto-de-rocio.jpg')


A continuación se muestra un ejemplo de cómo quedaría.


:: Liferay. Problemas con drag&drop de un portlet


En Liferay 6.1 en ocasiones existen problemas al arrastrar y reubicar un portlet dentro de un layout.

Los pasos a seguir para solventarlo podría ser:

.- Inspeccionando la página localizamos la capa donde queremos reubicar el portlet

.- A esta capa le aplicamos estilos:

background:red

padding:1em

.- Vamos a la opción ubicada en la esquina superior izquierda  y seleccionando la opción: "añadir".

.- Buscamos el componente, por ejemplo: Visor de contenidos web y lo arrastramos a la capa sobre la que hemos aplicado estilos.


Con estos pasos, nos permitirá reubicar un portlet en una determinada zona. A partir de que esta "capa" tenga un componente, podremos ubicar en ese punto otros componentes adicionales sin ningún problema.

19 de mayo de 2021

:: Liferay. No carga el contexto "Context initialization failed"


 En Liferay 6.2, no arranca el servidor y en los logs muestra un error similar a este:

[ContextLoader:206] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.liferay.portal.kernel.lar.ExportImportHelper' defined in class path resource [META-INF/util-spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.liferay.portal.lar.ExportImportHelperImpl]: Constructor threw exception; nested exception is java.lang.Error: Unresolved compilation problems: _ The import com.liferay.portal.lar.backgroundtask cannot be resolved_ The import com.liferay.portal.model.impl.LayoutImpl cannot be resolved_ The import com.liferay.portal.util.PropsValues cannot be resolved_ The import com.liferay.portal.util.WebKeys cannot be resolved_ StagingIndexingBackgroundTaskExecutor cannot be resolved to a type_ WebKeys cannot be resolved to a variable_ LayoutImpl cannot be resolved to a type_ PropsValues cannot be resolved to a variable_ PropsValues cannot be resolved to a variable_ PropsValues cannot be resolved to a variable_ AlwaysCurrentUserIdStrategy cannot be resolved to a type_ CurrentUserIdStrategy cannot be resolved to a type_ PropsValues cannot be resolved to a variable_ PropsValues cannot be resolved to a variable_ PropsValues cannot be resolved to a variable_ PropsValues cannot be resolved to a variable_ PropsValues cannot be resolved to a variable_ [Sanitized]

En este caso el error se solucionó des-instalando el plugin-ext y volviendo a desplegarlo en el arranque.


10 de mayo de 2021

:: Liferay. Conectar Excel con Liferay 6.2 sobre MySQL

 


Los pasos para conectar excel con MySQL los pasos a seguir son los siguientes:

.- Datos > Nueva consulta > Desde Base de datos > Desde una base de datos MySQL

.- Cumplimentaremos el formulario correspondiente a la cadena de conexión

    Servidor: nombre_de_servidor_de_base_de_datos

    Base de datos: nombre_de_la_base_de_datos

    En la instrucción SQL podemos especificar una consulta para que nos muestra las tablas de la base de datos, por ejemplo: "show tables;"


Un ejemplo sería:

Servidor: localhost

Base de datos: liferay62

Consulta SQL: show tables;

 




19 de abril de 2021

Liferay :: Añadir pestaña de configuración en un portlet


En Liferay 6.2 para que aparezca una pestaña de configuración en nuestro portlet, debemos añadir la siguiente línea en el fichero: "liferay-portlet-xml"

<configuration-action-class>com.liferay.portal.kernel.portlet.DefaultConfigurationAction</configuration-action-class>


Debe aparecer en el siguiente orden:

<portlet>

     <portlet-name>yourportlet</portlet-name>

     <icon>/icon.png</icon>

     <configuration-action-class>com.liferay.portal.kernel.portlet.DefaultConfigurationAction</configuration-action-class>

     <header-portlet-css>/css/main.css</header-portlet-css>

     ...

 </portlet> 


17 de marzo de 2021

Liferay :: Obtener la última versión de un JournalArticle


Liferay mantiene un versionado de los contenidos, por lo que para acceder -de forma programática- a la última versión, podemos utilizar el siguiente código:


public List getLatestVersionArticle(List totalArticles) {
		List journalList = new ArrayList();
		JournalArticle latestArticle ;
		for (JournalArticle journalArticle : totalArticles) {
			try {
				 latestArticle = JournalArticleLocalServiceUtil.getLatestArticle(journalArticle.getResourcePrimKey());
				if (journalList.contains(latestArticle)) {
					continue;
				} else {
					journalList.add(latestArticle);
				}
			} catch (PortalException | SystemException e) {
				e.printStackTrace();
			}
		}
		return journalList;

	}
Más información: https://liferayiseasy.blogspot.com/2017/05/fetch-latest-version-journal-article-or.html

16 de febrero de 2021

Liferay 7 :: Dónde se incluye el código de seguimiento de Analytics


En Liferay 7 ha cambiado la ubicación para insertar el código de seguimiento de Analytics, y ahora se encuentra -dentro del sitio en:

- Configuración > Ajustes del sitio



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