AnsweredAssumed Answered

NativeDate en plantilla FTL

Question asked by ajv on Jan 10, 2012
Hola a todos y Feliz Año!!

Me he encontrado con un problemilla que no sé muy bien cómo solucionar.
Resulta que he extendido los grupos de Alfresco para tener más propiedades a través de un aspecto, y quiero mostrar esas propiedades en Share.

Para ello, simplemente pensaba modificar el webscript groups.get de Alfresco para disponer de todas las propiedades en share.
El fichero a tocar sería básicamente authority.lib.ftl (lo podeis consultar en WEB-INF/classes/alfresco/templates/webscripts/org/alfresco/repository/groups/authority.lib.ftl).

Lo único que de momento quiero añadir es una fecha que me indica el momento en que se activó el grupo (un metadato nuevo):


<#if authority.groupNode.properties["ds:fechaActivacion"]?exists>
, "fechaActivacion": "${authority.groupNode.properties["ds:fechaActivacion"]?datetime}"
</#if>

El error que obtengo es:
Wrapped Exception (with status template): 00100001 Error durante el procesamiento de la plantilla 'Error: on line 26, column 34 in org\/alfresco\/repository\/groups\/authority.lib.ftl\nThe string doesn't match the expected date\/time format. The string to parse was: \"org.mozilla.javascript.NativeDate@3cfa3d7c\". The expected format was: \"dd-MMM-yyyy H:mm:ss\".'. Por favor, contacte con el administrador del sistema."

Por lo visto, por defecto las propiedades se encapsulan en un NativeDate y para que funcione debería pasarse a Date por parte del javascript….pero no veo una forma de generalizarlo para no tener q reescribir la lógica de los webscripts…
He visto gente que hace cosas del tipo


// Convert it from a "org.mozilla.javascript.NativeDate" to Date so ftl will accept it.
var siteNode = sites[index].getNode();
if (siteNode.hasAspect("hbg:biddingDuration"))
{
          site.duration = new Date(siteNode.properties["hbg:duration"]);
}

Pero si sólo quiero modificar la lib.ftl no veo forma….
¿A alguien le suena este problemilla con Alfresco 4?
Un saludo!

Outcomes