<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Liferay Latino Blog &#187; desarrollo</title>
	<atom:link href="http://www.lrlatinoblog.com.ar/tag/desarrollo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lrlatinoblog.com.ar</link>
	<description>La comunidad latina de Liferay</description>
	<lastBuildDate>Wed, 16 Dec 2009 03:33:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Maven</title>
		<link>http://www.lrlatinoblog.com.ar/2009/12/16/maven/</link>
		<comments>http://www.lrlatinoblog.com.ar/2009/12/16/maven/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 03:33:08 +0000</pubDate>
		<dc:creator>joyola83</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.lrlatinoblog.com.ar/?p=113</guid>
		<description><![CDATA[A partir de la version 5.3 de Liferay, va a haber soporte oficial para maven.  En el este post Liferay Maven SDK publicado en el día de ayer en Liferay, se realiza una pequeña explicación de como se crea portlets como plugins con Maven.
También se esta trabajando para crear themes, hooks y layouts.
Para trabajar con [...]]]></description>
			<content:encoded><![CDATA[<p>A partir de la version 5.3 de Liferay, va a haber soporte oficial para maven.  En el este post <a href="http://www.liferay.com/web/mika.koivisto/blog/-/blogs/liferay-maven-sdk" target="_blank">Liferay Maven SDK</a> publicado en el día de ayer en Liferay, se realiza una pequeña explicación de como se crea portlets como plugins con Maven.</p>
<p>También se esta trabajando para crear themes, hooks y layouts.</p>
<p>Para trabajar con Liferay 5.2 existe actualmente una implementación para crear portles en <a href="http://wiki.github.com/azzazzel/liferay-maven-sdk/" target="_blank">GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lrlatinoblog.com.ar/2009/12/16/maven/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>34 trucos para diseñadores y desarrolladores web</title>
		<link>http://www.lrlatinoblog.com.ar/2009/11/27/34-trucos-para-disenadores-y-desarrolladores-web/</link>
		<comments>http://www.lrlatinoblog.com.ar/2009/11/27/34-trucos-para-disenadores-y-desarrolladores-web/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 03:56:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lrlatinoblog.com.ar/?p=99</guid>
		<description><![CDATA[En xyberneticos me entero de una guia de 34 trucos para diseñadores y desarrolladores web; esta guia tiene muchos tips interesantes a tener en cuenta.
Este es el link.
]]></description>
			<content:encoded><![CDATA[<p>En <a title="xyberneticos" href="http://xyberneticos.com/" target="_blank">xyberneticos</a> me entero de una guia de 34 trucos para diseñadores y desarrolladores web; esta guia tiene muchos tips interesantes a tener en cuenta.</p>
<p>Este es el <a title="34 trucos para diseñadores y desarrolladores web" href="http://www.webanddesigners.com/34-cheat-sheets-for-web-designers-and-developers" target="_blank">link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lrlatinoblog.com.ar/2009/11/27/34-trucos-para-disenadores-y-desarrolladores-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PortletURL en JavaScript</title>
		<link>http://www.lrlatinoblog.com.ar/2008/12/22/portleturl-en-javascript/</link>
		<comments>http://www.lrlatinoblog.com.ar/2008/12/22/portleturl-en-javascript/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 03:40:40 +0000</pubDate>
		<dc:creator>joyola83</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.lrlatinoblog.com/?p=71</guid>
		<description><![CDATA[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&#38;p_p_lifecycle=0&#38;p_p_state=maximized&#38;p_p_mode=view&#38;_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 [...]]]></description>
			<content:encoded><![CDATA[<p>Una funcionalidad que acabo de descubrir en el Blog de Liferay es crear el PortletUrl en JavaScript.</p>
<p>Un ejemplo de PortletUrl es:</p>
<p>http://localhost:8080/web/guest/home?p_p_id=EDITAR_CUENTA&amp;p_p_lifecycle=0&amp;p_p_state=maximized&amp;p_p_mode=view&amp;_EDITAR_CUENTA_struts_action=%2Feditar_cuenta%2Fview</p>
<p>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.</p>
<p>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
var portletURL = new Liferay.PortletURL(_PHASE);<br />
portletURL.setParameter(&#8220;key1&#8243;, &#8220;value&#8221;);<br />
portletURL.setParameter(&#8220;key2&#8243;, &#8220;value&#8221;);<br />
portletURL.setPortletId(_PORTLET_ID);<br />
&lt;/script&gt;</p>
<p>&lt;a href=&#8221;javascript: portletURL.toString()&#8221;&gt;Go to&lt;/a&gt;</p>
<p>Los valores que puede tomar _PHASE son:</p>
<ul>
<li>ACTION_PHASE</li>
<li>RENDER_PHASE</li>
<li>RESOURCE_PHASE</li>
</ul>
<p>También existen los siguientes métodos que permiten crear el PortletUrl según _PHASE:</p>
<ul>
<li>Liferay.PortletURL.createActionURL();</li>
<li>Liferay.PortletURL.createRenderURL();</li>
<li>Liferay.PortletURL.createResourceURL();</li>
</ul>
<p>Estos son los métodos restantes de la clase Liferay.PortletURL:</p>
<ul>
<li>setCopyCurrentRenderParameters: function(copyCurrentRenderParameters);</li>
<li>setDoAsUserId: function(doAsUserId);</li>
<li>setEncrypt: function(encrypt);</li>
<li>setEscapeXML: function(escapeXML);</li>
<li>setLifecycle: function(lifecycle);</li>
<li>setName: function(name);</li>
<li>setParameter: function(key, value);</li>
<li>setPlid: function(plid);</li>
<li>setPortletConfiguration: function(portletConfiguration);</li>
<li>setPortletId: function(portletId);</li>
<li>setPortletMode: function(portletMode);</li>
<li>setResourceId: function(resourceId);</li>
<li>setSecure: function(secure);</li>
<li>setWindowState: function(windowState);</li>
<li>toString: function();</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.lrlatinoblog.com.ar/2008/12/22/portleturl-en-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crear una comunidad</title>
		<link>http://www.lrlatinoblog.com.ar/2008/11/20/crear-una-comunidad/</link>
		<comments>http://www.lrlatinoblog.com.ar/2008/11/20/crear-una-comunidad/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 09:41:39 +0000</pubDate>
		<dc:creator>joyola83</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[comunidades]]></category>

		<guid isPermaLink="false">http://www.lrlatinoblog.com/?p=59</guid>
		<description><![CDATA[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(&#8220;/template&#8221;);
Crear una comunidad
String name = ParamUtil.getString(actionRequest, &#8220;name&#8221;);
String description = ParamUtil.getString(actionRequest, &#8220;description&#8221;);
String friendlyURL = ParamUtil.getString(actionRequest, &#8220;friendlyURL&#8221;);
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(), [...]]]></description>
			<content:encoded><![CDATA[<p>A continuación esta el codigo que nos permite crear una comunidad a partir de una comunidad existente,</p>
<p><strong>Obtener comunidad template</strong></p>
<p>Group templateGroup = GroupLocalServiceUtil.getGroupByFriendlyUrl(&#8220;/template&#8221;);</p>
<p><strong>Crear una comunidad</strong></p>
<p>String name = ParamUtil.getString(actionRequest, &#8220;name&#8221;);<br />
String description = ParamUtil.getString(actionRequest, &#8220;description&#8221;);<br />
String friendlyURL = ParamUtil.getString(actionRequest, &#8220;friendlyURL&#8221;);<br />
Group newGroup = GroupServiceUtil.addGroup(name, description,<br />
GroupImpl.TYPE_COMMUNITY_PRIVATE, StringPool.BLANK, true);</p>
<p><strong>Copiar la configuración del LayoutSet</strong></p>
<p>LayoutSet publicLayoutSet = LayoutSetLocalServiceUtil.getLayoutSet(templateGroup.getGroupId(), false);<br />
LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(),<br />
false, publicLayoutSet.getThemeId(), publicLayoutSet<br />
.getColorSchemeId(), publicLayoutSet.getCss(),<br />
false);<br />
LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(),<br />
false, publicLayoutSet.getWapThemeId(), publicLayoutSet<br />
.getWapColorSchemeId(), StringPool.BLANK, true);</p>
<p>LayoutSet privateLayoutSet = LayoutSetLocalServiceUtil.getLayoutSet(templateGroup.getGroupId(), false);<br />
LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(),<br />
false, privateLayoutSet.getThemeId(), privateLayoutSet<br />
.getColorSchemeId(), privateLayoutSet.getCss(),<br />
false);<br />
LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(),<br />
false, privateLayoutSet.getWapThemeId(), privateLayoutSet<br />
.getWapColorSchemeId(), StringPool.BLANK, true);</p>
<p><strong>Definir que copiar</strong></p>
<p>Map&lt;String, String[]&gt; parameterMap = new HashMap&lt;String, String[]&gt;();<br />
parameterMap.put(PortletDataHandlerKeys.PERMISSIONS,<br />
new String[] { Boolean.TRUE.toString() });<br />
parameterMap.put(PortletDataHandlerKeys.USER_PERMISSIONS,<br />
new String[] { Boolean.TRUE.toString() });<br />
parameterMap.put(PortletDataHandlerKeys.PORTLET_DATA,<br />
new String[] { Boolean.TRUE.toString() });<br />
parameterMap.put(PortletDataHandlerKeys.PORTLET_SETUP,<br />
new String[] { Boolean.TRUE.toString() });<br />
parameterMap.put(PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS,<br />
new String[] { Boolean.TRUE.toString() });<br />
parameterMap.put(PortletDataHandlerKeys.PORTLET_USER_PREFERENCES,<br />
new String[] { Boolean.TRUE.toString() });<br />
parameterMap.put(PortletDataHandlerKeys.THEME,<br />
new String[] { Boolean.TRUE.toString() });</p>
<p><strong>Exportar datos de la comunidad template</strong></p>
<p>byte[] publicOriginalGroup = LayoutServiceUtil.exportLayouts(<br />
templateGroupId, false, parameterMap, null, null);<br />
byte[] privateOriginalGroup = LayoutServiceUtil.exportLayouts(<br />
templateGroupId, true, parameterMap, null, null);</p>
<p><strong>Importar datos a la nueva comunidad</strong></p>
<p>LayoutServiceUtil.importLayouts(newGroup.getGroupId(), false,<br />
parameterMap, publicOriginalGroup);<br />
LayoutServiceUtil.importLayouts(newGroup.getGroupId(), true,<br />
parameterMap, privateOriginalGroup);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lrlatinoblog.com.ar/2008/11/20/crear-una-comunidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portlet de sistema</title>
		<link>http://www.lrlatinoblog.com.ar/2008/11/19/portlet-de-sistema/</link>
		<comments>http://www.lrlatinoblog.com.ar/2008/11/19/portlet-de-sistema/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 14:38:35 +0000</pubDate>
		<dc:creator>joyola83</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[portlet]]></category>

		<guid isPermaLink="false">http://www.lrlatinoblog.com/?p=56</guid>
		<description><![CDATA[En varias ocasiones tuve el requerimiento de no mostrar algunos portlets en la lista de portlets disponibles para ser agregados a una página, y este ocultamiento no se podia hacer mediante permisos porque el usuario tenia que usar el portlet y no debia tirar el error de que el portlet no estaba disponibles.  Entonces me [...]]]></description>
			<content:encoded><![CDATA[<p>En varias ocasiones tuve el requerimiento de no mostrar algunos portlets en la lista de portlets disponibles para ser agregados a una página, y este ocultamiento no se podia hacer mediante permisos porque el usuario tenia que usar el portlet y no debia tirar el error de que el portlet no estaba disponibles.  Entonces me di cuenta de que algunos portlets del core de Liferay no estaban disponibles para ser agregados a una página, por ejemplo el portlet de Look and Feel, el My Account o el del Page Setting.  Para esto hay que declarar al portlet como portlet de sistema en liferay-portlet.xml.</p>
<p><strong>liferay-portlet.xml</strong></p>
<p>&lt;portlet&gt;<br />
&lt;portlet-name&gt;MIPORTLET&lt;/portlet-name&gt;<br />
&#8230;<br />
&lt;system&gt;true&lt;/system&gt;<br />
&lt;/portlet&gt;</p>
<p>Desde otro portlet vamos a llamar a MIPORTLET</p>
<p>&lt;%</p>
<p>PortletURL miPortletURL = new PortletURLImpl(<br />
request, &#8220;MIPORTLET&#8221;, plid, PortletRequest.ACTION_PHASE);<br />
miPortletURL.setWindowState(WindowState.MAXIMIZED);<br />
miPortletURL.setPortletMode(PortletMode.VIEW);<br />
miPortletURL.setParameter(&#8220;struts_action&#8221;, &#8220;/miportlet/view&#8221;);</p>
<p>%&gt;</p>
<p>&lt;a href=&#8221;&lt;%= miPortletURL %&gt;&#8221;&gt;IR A MI PORTLET&lt;/a&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lrlatinoblog.com.ar/2008/11/19/portlet-de-sistema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar un portlet en un PopUp</title>
		<link>http://www.lrlatinoblog.com.ar/2008/11/12/mostrar-un-portlet-en-un-popup/</link>
		<comments>http://www.lrlatinoblog.com.ar/2008/11/12/mostrar-un-portlet-en-un-popup/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 02:27:07 +0000</pubDate>
		<dc:creator>joyola83</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[portlet]]></category>

		<guid isPermaLink="false">http://www.lrlatinoblog.com/?p=34</guid>
		<description><![CDATA[
Armo la URL
&#60;portlet:renderURL windowState=&#8221;&#60;%= LiferayWindowState.EXCLUSIVE.toString() %&#62;&#8221; var=&#8221;url&#8221;&#62;
&#60;portlet:param name=&#8221;struts_action&#8221; value=&#8221;/miportlet/popupview&#8221; /&#62;
&#60;/portlet:actionURL&#62;
Llamo al POPUP
&#60;script type=”text/javascript”&#62;
function mostrar_popup() {
var _dialog = Liferay.Popup( 	{
width: 700,
modal: true,
message: &#8216;&#60;div class=&#8221;loading-animation&#8221; /&#62;&#8217;,
position: ['center', 100],
title: &#60;liferay-ui:message key”popup-title”/&#62;,
resizable: false,
draggable: false,
onClose: function() {
// se ejecuta cuando el portle se cierra
}
} );
jQuery.ajax( {
url: “&#60;%= url %&#62;”,
success: function(message) {
_dialog.html(message);
}
} );
}
&#60;/script&#62;
&#60;a href=&#8221;javascript:mostrar_popup();&#8221;&#62;mostrar popup&#60;/a&#62;
Al definir el estado de la ventana [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">Armo la URL</p>
<p style="margin-bottom: 0cm;">&lt;portlet:renderURL windowState=&#8221;&lt;%= LiferayWindowState.EXCLUSIVE.toString() %&gt;&#8221; var=&#8221;url&#8221;&gt;</p>
<p style="margin-bottom: 0cm; padding-left: 30px;">&lt;portlet:param name=&#8221;struts_action&#8221; value=&#8221;/miportlet/popupview&#8221; /&gt;</p>
<p style="margin-bottom: 0cm;">&lt;/portlet:actionURL&gt;</p>
<p style="margin-bottom: 0cm;">Llamo al POPUP</p>
<p style="margin-bottom: 0cm; text-align: left;">&lt;script type=”text/javascript”&gt;</p>
<p style="margin-bottom: 0cm; text-align: left;">function mostrar_popup() {</p>
<p style="margin-bottom: 0cm; padding-left: 30px; text-align: left;">var _dialog = Liferay.Popup( 	{</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">width: 700,</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">modal: true,</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">message: &#8216;&lt;div class=&#8221;loading-animation&#8221; /&gt;&#8217;,</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">position: ['center', 100],</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">title: &lt;liferay-ui:message key”popup-title”/&gt;,</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">resizable: false,</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">draggable: false,</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">onClose: function() {</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">// se ejecuta cuando el portle se cierra</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">}</p>
<p style="margin-bottom: 0cm; padding-left: 30px; text-align: left;">} );</p>
<p style="margin-bottom: 0cm; padding-left: 30px; text-align: left;">jQuery.ajax( {</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">url: “&lt;%= url %&gt;”,</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">success: function(message) {</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">_dialog.html(message);</p>
<p style="margin-bottom: 0cm; padding-left: 60px; text-align: left;">}</p>
<p style="margin-bottom: 0cm; text-align: left; padding-left: 30px;">} );</p>
<p style="margin-bottom: 0cm; text-align: left;">}</p>
<p style="margin-bottom: 0cm; text-align: left;">&lt;/script&gt;</p>
<p style="margin-bottom: 0cm; text-align: left;">&lt;a href=&#8221;javascript:mostrar_popup();&#8221;&gt;mostrar popup&lt;/a&gt;</p>
<p style="margin-bottom: 0cm;">Al definir el estado de la ventana como exclusivo, el resultado de la respuesta solamente va a ser el contenido del portlet al cual se invoca.</p>
<p style="margin-bottom: 0cm;">Ejemplo:</p>
<p style="margin-bottom: 0cm;">:<a href="http://www.lrlatinoblog.com.ar/wp-content/uploads/2008/11/mostrar-popup.png"><img class="alignnone size-medium wp-image-54" title="mostrar-popup" src="http://www.lrlatinoblog.com.ar/wp-content/uploads/2008/11/mostrar-popup-300x208.png" alt="" width="300" height="208" /></a></p>
<p style="margin-bottom: 0cm;">
]]></content:encoded>
			<wfw:commentRss>http://www.lrlatinoblog.com.ar/2008/11/12/mostrar-un-portlet-en-un-popup/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Redirigir a una página despúes de registrarse</title>
		<link>http://www.lrlatinoblog.com.ar/2008/11/11/redirigir-a-una-pagina-despues-de-registrarse/</link>
		<comments>http://www.lrlatinoblog.com.ar/2008/11/11/redirigir-a-una-pagina-despues-de-registrarse/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 17:43:23 +0000</pubDate>
		<dc:creator>joyola83</dc:creator>
				<category><![CDATA[desarrollo]]></category>

		<guid isPermaLink="false">http://www.lrlatinoblog.com/?p=36</guid>
		<description><![CDATA[Para redirigir a una página de una comunidad después de registrarse en Liferay, hay que agregar un Evento, entonces vamos a hacer lo siguiente:
portal-ext.properties
login.events.post=com.liferay.portal.events.MyLoginPostAction,\
com.liferay.portal.events.DefaultLandingPageAction
MyLoginPostAction.java
package com.liferay.portal.events;
import &#8230;.
public class MyLoginPostAction extends Action {
private static Log _log = LogFactory.getLog(MyLoginPostAction.class);
public void run(HttpServletRequest req, HttpServletResponse res) throws ActionException {
try {
Group group = this.getGroup(req);
this.setLastPath(group, req);
} catch(Exception e) {
_log.error(e);
throw new ActionException(e);
}
}
private void [...]]]></description>
			<content:encoded><![CDATA[<p>Para redirigir a una página de una comunidad después de registrarse en Liferay, hay que agregar un Evento, entonces vamos a hacer lo siguiente:</p>
<p><strong>portal-ext.properties</strong></p>
<p>login.events.post=com.liferay.portal.events.MyLoginPostAction,\</p>
<p>com.liferay.portal.events.DefaultLandingPageAction</p>
<p><strong>MyLoginPostAction.java</strong></p>
<p>package com.liferay.portal.events;</p>
<p>import &#8230;.</p>
<p>public class MyLoginPostAction extends Action {<br />
private static Log _log = LogFactory.getLog(MyLoginPostAction.class);</p>
<p>public void run(HttpServletRequest req, HttpServletResponse res) throws ActionException {</p>
<p>try {</p>
<p>Group group = this.getGroup(req);</p>
<p>this.setLastPath(group, req);</p>
<p>} catch(Exception e) {</p>
<p>_log.error(e);</p>
<p>throw new ActionException(e);</p>
<p>}<br />
}</p>
<p>private void getGroup(HttpServletRequest req) {</p>
<p>return null;</p>
<p>}</p>
<p>private void setLastPath(Group group, HttpServletRequest req)<br />
throws PortalException, SystemException {<br />
long defaultPlid = LayoutLocalServiceUtil.getDefaultPlid(group.getGroupId());<br />
Layout defaultLayout = LayoutLocalServiceUtil.getLayout(defaultPlid);<br />
HttpSession ses = req.getSession();<br />
Map&lt;String, String[]&gt; params = new HashMap&lt;String, String[]&gt;();<br />
params.put(&#8220;p_l_id&#8221;, new String[] { Long.toString(defaultLayout.getPlid()) });<br />
LastPath lastPath = new LastPath(&#8220;/c&#8221;, &#8220;/portal/layout&#8221;, params);<br />
ses.setAttribute(WebKeys.LAST_PATH, lastPath);<br />
}<br />
}</p>
<p>En este caso va a redirigir a la primer página publica de la comunidad y si esta no existe la redirige a la primer página privada.</p>
<p>Esto también puede ser para redirigir a una organización o a la página de un usuario.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lrlatinoblog.com.ar/2008/11/11/redirigir-a-una-pagina-despues-de-registrarse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Configurar las preferencias de los Portlets</title>
		<link>http://www.lrlatinoblog.com.ar/2008/11/10/configurar-las-preferencias-de-los-portlets/</link>
		<comments>http://www.lrlatinoblog.com.ar/2008/11/10/configurar-las-preferencias-de-los-portlets/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 02:25:33 +0000</pubDate>
		<dc:creator>joyola83</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[desarrollo]]></category>

		<guid isPermaLink="false">http://www.lrlatinoblog.com/?p=24</guid>
		<description><![CDATA[
En primer lugar vamos a crear un portlet con el Plugin SDK y luego vamos a editar el archivo $SDK_HOME/docroot/WEB-INF/portlet.xml.
En este caso vamos a ver la configuración del Portlet RSS para tener un ejemplo concreto para ver, luego de agregar las propiedades vamos a ver como obtenemos dichos valores.
&#60;portlet&#62;
    &#60;portlet-name&#62;RSS&#60;/portlet-name&#62; 
  [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="0in;">En primer lugar vamos a crear un portlet con el Plugin SDK y luego vamos a editar el archivo <strong>$SDK_HOME/docroot/WEB-INF/portlet.xml</strong>.</p>
<p style="0in;">En este caso vamos a ver la configuración del Portlet RSS para tener un ejemplo concreto para ver, luego de agregar las propiedades vamos a ver como obtenemos dichos valores.</p>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">&lt;portlet&gt;</span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;portlet-name&gt;RSS&lt;/portlet-name&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;display-name&gt;RSS&lt;/display-name&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;portlet-class&gt;com.liferay.portlet.StrutsPortlet&lt;/portlet-class&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;init-param&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">         &lt;name&gt;view-action&lt;/name&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">         &lt;value&gt;/rss/view&lt;/value&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;/init-param&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;expiration-cache&gt;0&lt;/expiration-cache&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;supports&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">          &lt;mime-type&gt;text/html&lt;/mime-type&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;/supports&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;resource-bundle&gt;com.liferay.portlet.StrutsResourceBundle&lt;/resource-bundle&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    <strong>&lt;portlet-preferences&gt; </strong></span></em></span></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">         &lt;preference&gt; </span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">              &lt;name&gt;urls&lt;/name&gt; </span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">              &lt;value&gt;http://rss.news.yahoo.com/rss/tech&lt;/value&gt; </span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">              &lt;value&gt;http://csmonitor.com/rss/scitech.rss&lt;/value&gt; </span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">              &lt;value&gt;http://partners.userland.com/nytRss/technology.xml&lt;/value&gt; </span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">         &lt;/preference&gt; </span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">         &lt;preference&gt; </span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">              &lt;name&gt;items-per-channel&lt;/name&gt; </span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">              &lt;value&gt;2&lt;/value&gt; </span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">         &lt;/preference&gt;</span></em></span></strong></pre>
<pre style="0in;"><strong><span style="#800000;"><em><span style="-moz-initial;">    &lt;/portlet-preferences&gt; </span></em></span></strong></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">    &lt;security-role-ref&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">          &lt;role-name&gt;power-user&lt;/role-name&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">     &lt;/security-role-ref&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">     &lt;security-role-ref&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">          &lt;role-name&gt;user&lt;/role-name&gt; </span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">     &lt;/security-role-ref&gt;</span></em></span></pre>
<pre style="0in;"><span style="#800000;"><em><span style="-moz-initial;">&lt;/portlet&gt;</span></em></span></pre>
<p style="normal;"><span style="#000000;"><span style="-moz-initial;">En ese caso hemos creado 2 preferencias, <strong>urls</strong> y <strong>items-per-channel</strong><span>.</span></span></span></p>
<p style="none;"><span style="#000000;"><span style="-moz-initial;">Para obener estos valores hay que hacer:</span></span></p>
<p><em><strong>PortletPreferences <span style="#800000;"><span style="-moz-initial;">porttletPreferences = renderRequest.getPortletPreferences();<br />
</span></span></strong></em></p>
<p><em><strong><span style="#800000;"><span style="-moz-initial;">String[] urls = porttletPreferences.getValues(“urls”, new String[]());</span></span></strong></em></p>
<p><em><strong><span style="#800000;"><span style="-moz-initial;">long ipc = GetterUtil.getLong(portletPreferences.getValue(“items-per-channel”));</span></span></strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lrlatinoblog.com.ar/2008/11/10/configurar-las-preferencias-de-los-portlets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear un Portlet con el Plugins SDK</title>
		<link>http://www.lrlatinoblog.com.ar/2008/11/08/crear-un-portlet-con-el-plugins-sdk/</link>
		<comments>http://www.lrlatinoblog.com.ar/2008/11/08/crear-un-portlet-con-el-plugins-sdk/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 15:20:13 +0000</pubDate>
		<dc:creator>joyola83</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[portlet]]></category>

		<guid isPermaLink="false">http://www.lrlatinoblog.com/?p=3</guid>
		<description><![CDATA[Para crear un portlet vamos a utilizar la versión 5.1.2 de Liferay, y requerimos los siguientes componentes:

ANT 1.7
JAVA
MySQL (opcional)
liferay-portal-tomcat-5.5-5.1.2
liferay-plugins-sdk-5.1.2

Liferay se puede descargar desde http://sourceforge.net/projects/lportal/.
Paso a seguir:


Variables de entorno

SDK_HOME=/home/joyola/desarrollo/liferay/liferay-plugins-sdk-5.1.2
TOMCAT_HOME=/home/joyola/desarrollo/liferay/liferay-portal-tomcat-5.5-5.1.2

Configuracion del SDK

Creamos el archivo: $SDK_HOME/build.${user.name}.properties
Todas la propiedades utilizadas aca, sobreescriben el valor por default de las propiedades del archivo build.properties.
A continuación se especifican aquellas propiedades necesarias para [...]]]></description>
			<content:encoded><![CDATA[<p>Para crear un portlet vamos a utilizar la versión 5.1.2 de Liferay, y requerimos los siguientes componentes:</p>
<ol>
<li>ANT 1.7</li>
<li>JAVA</li>
<li>MySQL (opcional)</li>
<li>liferay-portal-tomcat-5.5-5.1.2</li>
<li>liferay-plugins-sdk-5.1.2</li>
</ol>
<p>Liferay se puede descargar desde <a href="http://sourceforge.net/projects/lportal/" target="_blank">http://sourceforge.net/projects/lportal/</a>.</p>
<p><strong>Paso a seguir:<br />
</strong></p>
<ul>
<li><em><strong>Variables de entorno</strong></em></li>
</ul>
<p>SDK_HOME=/home/joyola/desarrollo/liferay/liferay-plugins-sdk-5.1.2<br />
TOMCAT_HOME=/home/joyola/desarrollo/liferay/liferay-portal-tomcat-5.5-5.1.2</p>
<ul>
<li><strong><em>Configuracion del SDK</em></strong></li>
</ul>
<p>Creamos el archivo: $SDK_HOME/build.${user.name}.properties<br />
Todas la propiedades utilizadas aca, sobreescriben el valor por default de las propiedades del archivo build.properties.<br />
A continuación se especifican aquellas propiedades necesarias para comenzar.</p>
<p style="30px;">#<br />
# Specify the paths to an unzipped Tomcat 5.5.x bundle.<br />
#<br />
app.server.dir=${project.dir}/../liferay-portal-tomcat-5.5-5.1.2<br />
app.server.portal.dir=${app.server.dir}/webapps/ROOT<br />
app.server.classes.portal.dir=${app.server.portal.dir}/WEB-INF/classes<br />
app.server.lib.portal.dir=${app.server.portal.dir}/WEB-INF/lib<br />
app.server.lib.global.dir=${app.server.dir}/common/lib/ext<br />
#<br />
# Plugins will be deployed to this directory. Make sure that Liferay is<br />
# also set to scan this directory.<br />
#<br />
auto.deploy.dir=${user.home}/liferay/deploy</p>
<ul>
<li><em><strong>Crear el portlet</strong></em></li>
</ul>
<p>Ejecutamos el comando: $SDK_HOME/portlets/create.sh miportlet &#8220;Mi Portlet&#8221;<br />
Este comando tiene 2 parametros:</p>
<ol>
<li>Portlet Id</li>
<li>Display name</li>
</ol>
<ul>
<li><em><strong>Tasks más utilizados</strong></em></li>
</ul>
<ol>
<li>clean: elimina los archivos generados por los otros comandos</li>
<li>compile: compila los java</li>
<li>war: genera el war</li>
<li>deploy: compila, genera el war y lo copia al directorio deploy</li>
</ol>
<ul>
<li><em><strong>Ejecutamos el deploy</strong></em></li>
</ul>
<p>En el directorio $SDK_HOME/portles/miportlet-portlet, ejecutamos el comando: <strong>ant deploy</strong></p>
<p>Acá tenemos un problema con esta versión, el archivo <strong>build.xml</strong> no es copiado cuando se crea el portlet.  Por lo tanto tenemos que copiar el <strong>build.xml</strong> de una versión anterior del plugin, también es necesario agregar el <strong>build.xml</strong> al portlet.zip para que la proxima vez que creamos un portlet no tengamos este mismo error.</p>
<ul>
<li><em><strong>Tomcat</strong></em></li>
</ul>
<p>Iniciamos el TOMCAT, para esto ejecutamos el comando:<br />
$TOMCAT_HOME/bin/startup.sh</p>
<ul>
<li><em><strong>Agregamos el portlet a una página</strong></em></li>
</ul>
<ol>
<li>Entar a http://localhost:8080/c/portal/login</li>
<li>Usuario: test@liferay.com y Password: test</li>
<li>Ir al dock, hacer click en Add Portlet</li>
<li>Buscar el nuevo portlet</li>
<li>Hacer click sobre add</li>
</ol>
<p>Links:</p>
<p><a href="http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Plugins+SDK" target="_blank">http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Plugins+SDK</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lrlatinoblog.com.ar/2008/11/08/crear-un-portlet-con-el-plugins-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
