14 de febrero de 2020

:: Java. Determinar si dos fechas pertenecen al mismo día

Únicamente como recordatorio para determinar si dos fechas son del mismo día (00:01 a 23:59), podemos hacer uso de la siguiente función "isSameDay" de la clase "DateUtils":


if (DateUtils.isSameDay(date1, date2)) {
    System.out.println("Fechas en el mismo día");
} else if (date1.before(date2)) {
    System.out.println("Fecha1 es anterior a la fecha2");
} else {
    System.out.println("Fecha1 es posterior a la fecha2");
}


10 de febrero de 2020

:: Liferay. Comentarios en un workflow

En la definición de un workflow en Liferay, en el que necesitamos que al rechazar una solicitud se envíe un correo al usuario, adjuntando además los motivos, podemos hacer uso de la variable: $taskComments

Dentro del fichero .xml de definición del workflow, tendremos el código al que llamaremos, por ejemplo:


<state>
  <name>reject</name>
  <metadata> <![CDATA[{"xy":[356,225]}]]> </metadata>
  <actions>
   <action>
    <name>denied</name>
    <description/>
    <script> <![CDATA[Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.updateStatus(Packages.com.liferay.portal.kernel.workflow.WorkflowConstants.toStatus("denied"), workflowContext);]]> </script>
    <script-language>javascript</script-language>
    <execution-type>onEntry</execution-type>
   </action>
   <!-- correo al usuario rechazado -->
   <notification>
    <name>Review Notification</name>
    <description>Denegación de solicitud</description>
    <template><![CDATA[<html>

       #set ($workflowHandlerRegistryUtil = $portal.getClass().forName("com.liferay.portal.kernel.workflow.WorkflowHandlerRegistryUtil"))
       #set ($locale = $localeUtil.getDefault())
       #set ($timeZone = $timeZoneUtil.getDefault())
       #set ($workflowHandler = $workflowHandlerRegistryUtil.getWorkflowHandler($entryClassName))
       #set ($classPK = $getterUtil.getInteger($entryClassPK))
       #set ($assetRenderer = $workflowHandler.getAssetRenderer($classPK))
       #set ($emailUser = $assetRenderer.getEmailNotificationDenied($locale, $timeZone, $taskComments))
              
      </html>]]> </template>
    <template-language>velocity</template-language>
    <notification-type>email</notification-type>
    <execution-type>onEntry</execution-type>
   </notification>
  </actions>
 </state>


En la función encargada de realizar el envío de correo tras ser rechazada la solicitud, 
añadiremos los comentarios al cuerpo del mensaje.

5 de febrero de 2020

:: Accesibilidad web. Enlaces adyacentes

Dentro del análisis de accesibilidad web, uno de los puntos comprobados es la existencia de enlaces adyacentes que apuntan al mismo destino.

Se consideran enlaces adyacentes aquellos que están separados por un carácter y/o conjunto de espacios en blanco, o por alguna etiqueta que no pertenezca al grupo de etiquetas en línea: a, abbr, acronym, b, big, code, cite, dfn, em, font, img, ins, label, q, s, small, span, strike, strong, sub, sup, u.


NOTA: No se tienen en cuenta los enlaces que apunten al destino: #

31 de enero de 2020

:: Accesibilidad web. Cambio de contexto

En accesibilidad se llevan a cabo una serie de validaciones, entre las que podemos señalar la existencia de: "Cambios de contexto".

¿Pero a qué hace referencia este término?.

Se entiende por cambio de contexto: una nueva página, ventana, pestaña, aplicación o un cambio de foco (window.location, window.history, window.open, window.focus).

De esta manera, a la hora de evaluar la accesibilidad en un portal web, deberemos tener en cuenta el uso de estas técnicas, para obtener la máxima puntuación posible en los informes.


  • Verificar que no se produzca ningún cambio de contexto en los eventos: onfocus y onblur
  • Verificar que no se produzca ningún cambio de contexto nada más cargarse la página: onload
  • Verficar que no se produzca ningún cambio de contexto en el evento onchange de los elementos select


27 de enero de 2020

:: Velocity. Directivas

En Apache Velocity existen una serie de directivas que podemos utilizar:

set

Utilizada para estableer el valor de una referencia. Este valor se puede asignar a una variable o a una propiedad
#set($variable="hola mundo")
#set($noticia.titulo=$variable)

if else

Utilizada para definir enunciados condicionales dentro de una plantilla velocity
#if ($valor>10)
   Valor mayor que 10
#elseif
  Valor menor o igual que 10
#end

foreach

Utilizada para definir bucles
#foreach($noticia in $noticias)
   $noticia.titulo
#end

include

Utilizada para incluir un fichero correspondiente a una plantilla, pero que no será parseado por el motor de velocity
#include("plantilla.html")

parse

Utilizada para hacer uso de una plantilla, y esta será parseada por el motor de velocity y rederizará su contenidos
#parse("cabecera.vm")

stop

Utilizada para detener la ejecución del motor de plantillas
#stop

20 de enero de 2020

:: Velocity. ¿Qué es una plantilla?

Una plantilla velocity es un fichero con extensión .vm, que contiene el código correspondiente, compuesto por: directivas, condicionales, bucles, variables,...

Por ejemplo a la hora de desarrollar un tema en Liferay 6.2 podemos tener varios ficheros .vm encargados de  mostrar la información oportuna.

Las plantillas velocity - en tiempo de ejecución- son traducidas por el motor de velocity a código html que un navegador puede entender.

<html>
<body>
#set( $foo = "Velocity" )
¡Hola Mundo $foo!
</body>
<html>
</html>

13 de enero de 2020

:: Liferay. Deshabilitar la creación de sitios personales

Liferay crea sitios personales para los usuarios definidos en el CMS, así como para aquellos usauarios que se registran.
De esta manera, a través del fichero: "portal-ext.properties" es posible llevar a cabo una configuración, de forma que no se creen los sitios personales de los usuarios.

Deshabilitar los sitios personales de los usuarios

layout.user.public.layouts.enabled=false
layout.user.private.layouts.enabled=false


Deshabilitar la creación de sitios personales

layout.user.public.layouts.auto.create=false
layout.user.private.layouts.auto.create=false


:: Liferay DXP 2026. Habilitar RSS

En la versión Liferay DXP 2026 para habilitar las fuentes de datos RSS debemos seguir los pasos siguientes: 1.- Accederemos a la Configuraci...