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
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
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
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.
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
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.
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.
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.
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.
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:
También existen los siguientes métodos que permiten crear el PortletUrl según _PHASE:
Estos son los métodos restantes de la clase Liferay.PortletURL:
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);