Liferay. Organizaciones con país.
Importante:
Atención, en la actualidad, las organizaciones con país no son una excepción sino una generalidad. Ya no es necesario realizar esta serie de pasos a partir de la versión 7.
Localizaciones de tipo organización normal con Liferay Portal CE 6.2
Esta herramienta nos permite tener organizaciones con país tal y como se comportan las localizaciones. La ventaja es que además pueden tener organizaciones hijas. Las localizaciones no pueden tenerlas.
En esta entrada en particular, toco un tema que recientemente ha aparecido en uno de los proyectos en los que colaboré con Tracom Consulting S.L. en este caso. Fue necesario planificar con extremo detenimiento el sistema jerárquico que utilizará Liferay en el proyecto. Un grupo de empresas, diferentes localizaciones, organizaciones que contienen a otras, sitios web privados por organización…
Aquí Liferay se ha prestado de manera excepcional para abordar el proyecto gracias a su sistema de sitios, organizaciones, roles, usuarios, etc.
Aún así, nos encontramos con el problema de que no podíamos usar una localización para un país concreto, por el hecho de que una organización normal en Liferay no permite tener organizaciones hijas, un requisito que necesitábamos. La solución: por supuesto usar una organización.
Pero esto nos lleva a otro problema. Por defecto, Liferay no permite asignar un país a una organización normal (regular) y era un requerimiento importante.
Finalmente, organizaciones con país
Podemos modificar esto desde el fichero portal-ext.properties mediante la propiedad:
organizations.country.enabled[regular-organization]=true
El valor entre corchetes [regular-organization], indica el tipo de organización sobre el que tendrá efecto este cambio. En este caso, la organización normal de Liferay.
Como era un requisito imprescindible, también hicimos uso de otra propiedad más, muy similar, que hace que indicar el país para la organización sea necesario:
organizations.country.required[regular-organization]=true
El proyecto nos exigía igualmente obtener el país asignado a la organización, desde un contenido web, por lo que desde una plantilla Velocity, teníamos que obtenerlo:
#if($page.getGroup().isOrganization())
#set($organizationService = $serviceLocator.findService("com.liferay.portal.service.OrganizationLocalService"))
#set($countryService = $serviceLocator.findService("com.liferay.portal.service.CountryService"))
#set($organizacionActual = $organizationService.getOrganization($page.getGroup().getOrganizationId()))
#set($pais = $countryService.getCountry($organizacionActual.getCountryId()))
#end
Teniendo en cuenta que existen variables en el contexto de Velocity que están reservadas en los contenidos web, modificamos otra de las propiedades de portal-ext.properties (con el correspondiente reinicio del servidor de aplicaciones):
journal.template.velocity.restricted.variables=
Con esto, ya no estarán restringidas y todo lo que necesitábamos quedará cubierto.
Importante:
A partir de la versión 6.2, la propiedad journal.template.velocity.restricted.variables ya no existe.
Actualización realizada el 22/01/2015
La propuesta para sustituir la anterior línea obsoleta es esta:
freemarker.engine.restricted.classes=
freemarker.engine.restricted.variables=
velocity.engine.restricted.classes=
velocity.engine.restricted.variables=
// Y para guardar compatibilidad hacia versiones anteriores:
journal.template.freemarker.restricted.variables=
journal.template.velocity.restricted.variables=
Hasta la fecha solamente una entrada adorna este blog. La siguiente entrada pretendía ser una apología al software libre y un reconocimiento público hacia la herramienta Liferay. Sin embargo, he preferido desestimar la idea y reservar esa entrada para otro momento aunque ello suponga tardar un poco más en publicar una nueva entrada. Quería ofrecer algo práctico, útil, que es para lo que realmente decidí crear el blog.
Conclusión
Liferay Portal es una herramienta gigantesca que va evolucionando, cambiando con mucha frecuencia. Es complicado mantenerse al día de todos estos cambios que afectan también (por supuesto) a toda la parte de configuración. Intentaré en el blog ir añadiendo artículos sobre Liferay Portal que hagan que sea un poco más llevadero.
Un cordial saludo y hasta otra ocasión.