Archive for the ‘General’ Category

La importancia de comentar código

Wednesday, December 2nd, 2009

En Humofriki podemos encontrar un comic muy interesante y divertido.  El comic habla de la importancia de comentar nuestro código.

Espero que les guste: link

Webinar de Alfresco

Monday, November 30th, 2009

El miercoles 2 de diciembre a las 12 pm (-5GMT) hay un webinar de Alfresco donde se discutira las caracteristicas de las distintas versiones de Alfresco; Enterprise 3.2, Community 3.2 y Traditional ECM.  Esto nos permitira tomar una mejor decisión para tomar una buena decisión para la necesidades de nuestros clientes.

Para registrarse al webinar: link

Utilizar otra base de datos

Tuesday, November 3rd, 2009

En ciertos casos es necesario conectarse a otra base de datos, y utilizar los servicios de Liferay para conectarse a la misma.

Este link muestra como hacerlo.

Nueva funcionalidad para el panel de control en LR 5.2.3

Tuesday, April 14th, 2009

A partir de LR 5.2.3 podremos contar con:

Se podra modificar la configuración para subir archivos, aca podremos definir el tamaño maximo y los tipos de archivos permitidos tanto para Image Gallery, Document Library, Web Content Images y Shopping Cart Images.

También se podra modificar la configuración del servidor de mail a traves del Panel de control.

Fuente

http://www.liferay.com/web/bswaim/blog/-/blogs/configure-your-file-upload-settings-from-control-panel;jsessionid=2D1D5CD386D5137341F407137BDFBC6A

http://www.liferay.com/web/bswaim/blog/-/blogs/new-way-to-change-pop-smtp-settings

Flex [off topic]

Thursday, February 26th, 2009

Dejo un link que me pasaron el otro día un compañero del trabajo, son unos cuantos videos de Flex.  Son muy interesantes, y es para arrancar desde cero.  También proponen unos ejercicios para resolver con su correspondiente corrección.

http://www.adobe.com/devnet/flex/videotraining

Espero que les sirva mucho.

Retomando el Blog

Thursday, February 26th, 2009

Hace tiempo que he dejado este blog colgado, después de unas buenas vacaciones que me tome en enero y ahora que acabo de terminar la facultad y me he recibido de Ingeniero en Sistemas; me gustaria continuar escribiendo en este blog, y tratare de hacerlo periodicamente.

Mi idea es tratar de migrar de Wordpress a Liferay en los próximos días, y estoy buscando colaboradores que se sumen a esta iniciativa, que tengan las ganas de contribuir y escribir.

Comprimir JS y CSS en el inicio del Tomcat

Thursday, January 29th, 2009

En el post Even MORE Performance fixes, me encontre con un nuevo feature muy interesante. Se trata de que cuando se inicia el TOMCAT se comprimen los javascript y css necesarios para obtener un mejor rendimiento de la carga del sitio en el cliente. ¿A que me refiero? A que genera los archivos ***_unpacked.css, ***_packed.css, ***_unpacked.js, ***_packed.js.  Si bien no es complicado generar estos archivos, esta nueva funcionalidad simplica más el trabajo del desarrollador y mantiene siempre los archivos comprimos actualizados.

Aplicaciones web para el IPhone dentro de Liferay

Thursday, January 29th, 2009

Al leer el post Laverage IPhone web applications within Liferay, pense que cuando se accede a un sitio que tenga Liferay desde un IPhone el layout de la pagina se ajustaria a la pantalla del IPhone como pasa cuando se accede desde un celular mediante WAP.  El post simplemente habla de utilizar aplicaciones web de terceros como facebook, digg, twitter, entre otras; dentro de un iframe.  Considero que esto no aporta absolutamente nada de nuevo a Liferay.

¿Alguien accedio desde un IPhone a un sitio de Liferay? ¿Este sitio se muestra como si fuera WAP? ¿O se muestra en forma normal? Haciendo un analisis sin realizar una prueba (porque no tengo el IPhone) creo que se mostraria como una página normal, aunque considero que la página deberia ajustarse a la pantalla del IPhone como funcionan estas aplicaciones web que mencionamos anteriormente, esto serviria para una mejor navegación del sitio.

PortletURL en JavaScript

Monday, December 22nd, 2008

Una funcionalidad que acabo de descubrir en el Blog de Liferay es crear el PortletUrl en JavaScript.

Un ejemplo de PortletUrl es:

http://localhost:8080/web/guest/home?p_p_id=EDITAR_CUENTA&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_EDITAR_CUENTA_struts_action=%2Feditar_cuenta%2Fview

Aca le estoy pasando el portlet id, el estado del portlet, la fase del ciclo de vida, la acción de struts a ejecutar y 1 parametro (podrian ser muchos más).  Anteriormente la manipulación de esta url era medio complicada, ya que solo se podia generar a traves de JAVA o mediante una concatenación kilometrica de varios strings.  Con esta funcion nos proporciona mayor flexibilidad a la hora de programar.

<script type=”text/javascript”>
var portletURL = new Liferay.PortletURL(_PHASE);
portletURL.setParameter(“key1″, “value”);
portletURL.setParameter(“key2″, “value”);
portletURL.setPortletId(_PORTLET_ID);
</script>

<a href=”javascript: portletURL.toString()”>Go to</a>

Los valores que puede tomar _PHASE son:

  • ACTION_PHASE
  • RENDER_PHASE
  • RESOURCE_PHASE

También existen los siguientes métodos que permiten crear el PortletUrl según _PHASE:

  • Liferay.PortletURL.createActionURL();
  • Liferay.PortletURL.createRenderURL();
  • Liferay.PortletURL.createResourceURL();

Estos son los métodos restantes de la clase Liferay.PortletURL:

  • setCopyCurrentRenderParameters: function(copyCurrentRenderParameters);
  • setDoAsUserId: function(doAsUserId);
  • setEncrypt: function(encrypt);
  • setEscapeXML: function(escapeXML);
  • setLifecycle: function(lifecycle);
  • setName: function(name);
  • setParameter: function(key, value);
  • setPlid: function(plid);
  • setPortletConfiguration: function(portletConfiguration);
  • setPortletId: function(portletId);
  • setPortletMode: function(portletMode);
  • setResourceId: function(resourceId);
  • setSecure: function(secure);
  • setWindowState: function(windowState);
  • toString: function();

Crear una comunidad

Thursday, November 20th, 2008

A continuación esta el codigo que nos permite crear una comunidad a partir de una comunidad existente,

Obtener comunidad template

Group templateGroup = GroupLocalServiceUtil.getGroupByFriendlyUrl(“/template”);

Crear una comunidad

String name = ParamUtil.getString(actionRequest, “name”);
String description = ParamUtil.getString(actionRequest, “description”);
String friendlyURL = ParamUtil.getString(actionRequest, “friendlyURL”);
Group newGroup = GroupServiceUtil.addGroup(name, description,
GroupImpl.TYPE_COMMUNITY_PRIVATE, StringPool.BLANK, true);

Copiar la configuración del LayoutSet

LayoutSet publicLayoutSet = LayoutSetLocalServiceUtil.getLayoutSet(templateGroup.getGroupId(), false);
LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(),
false, publicLayoutSet.getThemeId(), publicLayoutSet
.getColorSchemeId(), publicLayoutSet.getCss(),
false);
LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(),
false, publicLayoutSet.getWapThemeId(), publicLayoutSet
.getWapColorSchemeId(), StringPool.BLANK, true);

LayoutSet privateLayoutSet = LayoutSetLocalServiceUtil.getLayoutSet(templateGroup.getGroupId(), false);
LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(),
false, privateLayoutSet.getThemeId(), privateLayoutSet
.getColorSchemeId(), privateLayoutSet.getCss(),
false);
LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(),
false, privateLayoutSet.getWapThemeId(), privateLayoutSet
.getWapColorSchemeId(), StringPool.BLANK, true);

Definir que copiar

Map<String, String[]> parameterMap = new HashMap<String, String[]>();
parameterMap.put(PortletDataHandlerKeys.PERMISSIONS,
new String[] { Boolean.TRUE.toString() });
parameterMap.put(PortletDataHandlerKeys.USER_PERMISSIONS,
new String[] { Boolean.TRUE.toString() });
parameterMap.put(PortletDataHandlerKeys.PORTLET_DATA,
new String[] { Boolean.TRUE.toString() });
parameterMap.put(PortletDataHandlerKeys.PORTLET_SETUP,
new String[] { Boolean.TRUE.toString() });
parameterMap.put(PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS,
new String[] { Boolean.TRUE.toString() });
parameterMap.put(PortletDataHandlerKeys.PORTLET_USER_PREFERENCES,
new String[] { Boolean.TRUE.toString() });
parameterMap.put(PortletDataHandlerKeys.THEME,
new String[] { Boolean.TRUE.toString() });

Exportar datos de la comunidad template

byte[] publicOriginalGroup = LayoutServiceUtil.exportLayouts(
templateGroupId, false, parameterMap, null, null);
byte[] privateOriginalGroup = LayoutServiceUtil.exportLayouts(
templateGroupId, true, parameterMap, null, null);

Importar datos a la nueva comunidad

LayoutServiceUtil.importLayouts(newGroup.getGroupId(), false,
parameterMap, publicOriginalGroup);
LayoutServiceUtil.importLayouts(newGroup.getGroupId(), true,
parameterMap, privateOriginalGroup);