Encontro Técnico Liferay São Paulo User Group

General Blogs April 25, 2014 By Paulo Fernandes Staff

Olá pessoal

 

Como combinado fizemos o Encontro no iMasters onde o Fernando Tadashi apresentou sobre Como extender plugins da Marketplace e fez uma demo.

 

Depois do Pizza-Break fizemos um bate papo bem legal falando sobre as funcionalidades do Liferay e como os presentes estavam usando o Liferay.

 

Quem não foi perdeu e espero vê-los no próximo.

 

Para saber sobre os nossos eventos, faça a inscrição no http://www.meetup.com/liferay-sao-paulo-user-group


Abraços

Creating a Post on Message Boards Programmatically

Company Blogs April 23, 2014 By Paulo Fernandes Staff

Hi guys

Recently I created programmatically a post on the Message Boards Portlet and I would like to share this knowledge with you.

The following code retrieve all categories from the Message Boards Portlet.

List categories = MBCategoryLocalServiceUtil.getCategories(themeDisplay.getScopeGroupId());
for(MBCategory category : categories ){
     category.getName(); // prints category name
}

To create a post we need the category id, so with the code above you can iterate the categories and select the appropriated category id.

When you have the category, you only need two more parameters, the title and the content of the post. Both are strings.

final long categoryId =	ParamUtil.get(request, "category_id", 0);
final String title = ParamUtil.get(request, "title", StringPool.BLANK);
final String question = ParamUtil.get(request, "question", StringPool.BLANK);

ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
MBMessage message = MBMessageServiceUtil.addMessage( themeDisplay.getScopeGroupId(), categoryId, title, question, "html", new ArrayList>(), false, 3.0, false, ServiceContextFactory.getInstance(request));	
System.out.println( message.getPrimaryKey() );	

 I recommend you to see the method signature.

If you have any doubts, please post in our forum.

Good luck

#07 Liferay São Paulo User Group

General Blogs April 15, 2014 By Paulo Fernandes Staff

Olá pessoal
 
Realizaremos o #07 meetup sobre Liferay no dia 24/04/2014 e le será no iMasters e já temos uma palestra confirmada do Fernando Tadashi (Consultor Liferay) que falará sobre como extender plugins da Marketplace.
Gostaria de saber se alguém está afim de palestrar sobre algo que fez com Liferay. Temos um slot disponível ainda.
A agenda será a de sempre:
19:15 - Abertura
19:30 - Palestra 1 - Fernando Tadashi - Como extender Plugins da Marketplace
20:15 - Break
20:45 - Palestra 2 - A definir
21:30 - Encerramento
 
Conto com a presença de vocês.
Até lá
 
Se inscreva no grupo para ficar sabendo sobre novos eventos.
 
 
 
Abraços

#01 Meetup no Rio de Janeiro foi um sucesso!

General Blogs March 12, 2014 By Paulo Fernandes Staff

Olá pessoal
 
Realizamos o primeiro meetup no Rio de Janeiro na Caelum e foi um sucesso. 
Conversamos bastante sobre Liferay e quem estava presente, que até então, não tinha visto a versão 6.2 do Liferay ficou impressionado com as melhorias que a ferramenta teve.
 
O próximo evento será algo mais informal para conversarmos sobre Liferay. O evento será em algum bar que permita conversarmos e bebermos/comermos algo. Estamos aceitando sugestões de locais.
 
 
Apresentações
 
Não se esqueça de se inscrever no meetup.com para facilitar a comunicação de novos eventos. http://www.meetup.com/Liferay-Rio-de-Janeiro-User-Group
 
Abraços e até o próximo :)
 

#06 Liferay São Paulo User Group

General Blogs March 7, 2014 By Paulo Fernandes Staff

Olá pessoal

Realizamos mais um meetup informal sobre Liferay no dia 06/03/2014.

 

Ele foi extremamente produtivo e quem não foi perdeu cheeky

 

Não deixe de comparecer no próximo.

 

Não se esqueça de se inscrever no meetup.com para facilitar a comunicação de novos eventos. http://www.meetup.com/Liferay-Sao-Paulo-User-Group

 

Abraços

 

#01 Meetup Liferay Rio de Janeiro User Group

General Blogs February 25, 2014 By Paulo Fernandes Staff

Olá pessoal,

Dia 11/03/2014 realizaremos um encontro técnico para falar de Liferay na Caelum aqui no Rio de Janeiro.

Gostaria de convidá-los para o evento e caso alguém tenha interesse em contar algum case ou fazer alguma palestra no Liferay Rio de Janeiro User Group, por favor, entre em contato comigo paulo.fernandes@liferay.com 

Para mais informações sobre novos eventos, faça parte da nossa comunidade no Meetup.com

Mais informações do evento.

Não esqueçam de fazer o RSVP pois a quantidade de pessoas é limitada.

Nós vemos lá

Abraço!

#06 Meetup Liferay São Paulo User Group

General Blogs February 25, 2014 By Paulo Fernandes Staff

Olá pessoal,

Dia 06/03/2014 realizaremos um happy hour para falar de Liferay no Galetos da Alameda Santos com a Rua Augusta.

Gostaria de convidá-los para o evento e caso alguém tenha interesse em contar algum case ou fazer alguma palestra no Liferay São Paulo User Group, por favor, entre em contato comigo paulo.fernandes@liferay.com 

Para mais informações, faça parte da nossa comunidade no Meetup.com

Mais informações do evento.

Não esqueçam de fazer o RSVP para reservarmos a mesa de acordo com a quantidade de pessoas

Nós vemos lá

Abraço!

Accessing a Web Content Structure from Application Display Template

Company Blogs February 14, 2014 By Paulo Fernandes Staff

In my experience working with Liferay projects, the most used component is Web Content, not only the Basic Web Content. A lot of times the customer needs to create a structure and a template to achieve his goal. In previous Liferay Portal version (aka 6.1) we need to create a hook to create new Asset Display View, but with Liferay Portal 6.2, we can create a simple Application Display Template (ADT) for Asset Publisher and everything is working in a great way and easily.

For this article I created a simple structure with the following fields: Title, SubTitle and Content.

Let's create the ADT to show the Title, SubTitle and a Link to read the full structure.

 

Solution

The following code access the Web Content Structure in two different ways. Choose which is better to you.

#if (!$entries.isEmpty())

    #foreach ($entry in $entries)
        #set($renderer = $entry.getAssetRenderer() )
        #set($className = $renderer.getClassName() )

        #if( $className == "com.liferay.portlet.journal.model.JournalArticle" )
            #set( $journalArticle = $renderer.getArticle() )
            #set( $document = $saxReaderUtil.read($journalArticle.getContent()) )
            #set( $rootElement = $document.getRootElement() )


            ## first alternative            
            #foreach( $dynamicElement in $rootElement.elements() )
                #if( "subTitle" == $dynamicElement.attributeValue("name") )
                    #set( $subTitle1 = $dynamicElement.element("dynamic-content").getText() )
                    first alternative -> $subTitle1 <br />
                #end
            #end


            ## second alternative
            #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='subTitle']") )
            #set( $subTitle2 = $xPathSelector.selectSingleNode($rootElement).getStringValue() ) 
            second alternative -> $subTitle2 <br />
        #end
    #end
#end

Choose which one is better to you. A improve that you could do for this code is check, if the WebContent (JournalArticle) is the same that the Structure that you are accessing. I didn't to that because I have only one Strucutre.

Let's see the final code.

#if (!$entries.isEmpty())
    <div class="news">
    #foreach ($entry in $entries)
        #set($renderer = $entry.getAssetRenderer() )
        #set($className = $renderer.getClassName() )
        #if( $className == "com.liferay.portlet.journal.model.JournalArticle" )
            #set( $journalArticle = $renderer.getArticle() )
            #set( $document = $saxReaderUtil.read($journalArticle.getContent()) )
            #set( $rootElement = $document.getRootElement() )
            #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='subTitle']") )
            #set( $subTitle = $xPathSelector.selectSingleNode($rootElement).getStringValue() )
            #set( $link = $renderer.getURLViewInContext($renderRequest, $renderResponse, '') )
            
            <div class="new">
                <h1 class="title">$entry.getTitle($locale)</h1>
                <h3 class="sub-title">$subTitle</h3>
                <p class="read-more">
                    <a href="$link">Read More</a>
                </p>
            </div>
        #end
    #end
    </div>
#end

 

I hope that this code can help you more than is helping me. If you have any trouble, please post in our forum.

 

More information about Application Display Template

https://www.liferay.com/pt/web/eduardo.garcia/blog/-/blogs/new-ways-of-customization-with-application-display-templates-part-i-

https://www.liferay.com/pt/web/eduardo.garcia/blog/-/blogs/new-ways-of-customization-with-application-display-templates-part-ii-

 
See you soon.

Criando um ADT que acesse a estrutura de um Web Content

Company Blogs February 3, 2014 By Paulo Fernandes Staff

Antes de começar, quero avisá-los que colocarei o nome em inglês do portlets para facilitar o entendimento do artigo.

Como na maioria dos portais de notícias você precisa de uma estrutura diferente da estrutura padrão do Liferay para publicar de forma mais simples e com mais informações as notícias.

Apenas como exemplo, vamos criar uma estrutura com Titulo, SubTitulo e Conteúdo e vamos criar um Application Display Template que exibe as notícias de forma personalizada. A forma personalizada será a lista de notícias com título, sub titulo e link para ler a notícia completa.

 

Solução

O Application Display Template (ADT) para o Asset Publisher é a solução.

Vamos ao código que acessa a estrutura de um Web Content para montar o que foi pedido acima.

#if (!$entries.isEmpty())

    #foreach ($entry in $entries)
        #set($renderer = $entry.getAssetRenderer() )
        #set($className = $renderer.getClassName() )

        #if( $className == "com.liferay.portlet.journal.model.JournalArticle" )
            #set( $journalArticle = $renderer.getArticle() )
            #set( $document = $saxReaderUtil.read($journalArticle.getContent()) )
            #set( $rootElement = $document.getRootElement() )


            ## primeira forma de fazer            
            #foreach( $dynamicElement in $rootElement.elements() )
                #if( "subTitulo" == $dynamicElement.attributeValue("name") )
                    #set( $subTitulo1 = $dynamicElement.element("dynamic-content").getText() )
                    primeira forma -> $subTitulo1 <br />
                #end
            #end


            ## segunda forma de fazer
            #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='subTitulo']") )
            #set( $subTitulo2 = $xPathSelector.selectSingleNode($rootElement).getStringValue() ) 
            segunda forma -> $subTitulo2 <br />
        #end
    #end
#end

No código acima mostramos duas formas de acessar o conteudo da estrutura.

Fica a seu criterio qual utilizar. Uma melhoria que você poderia fazer para o código acima, seria verificar se o WebContent (JournalArticle) é do tipo de estrutura que você criou. Para o meu caso eu sei que só tenho um tipo, por isso não fiz essa checagem.

Vamos ao código final que mostra o Título, Sub Titulo e Link para a notícia.

#if (!$entries.isEmpty())
    <div class="noticias">
    #foreach ($entry in $entries)
        #set($renderer = $entry.getAssetRenderer() )
        #set($className = $renderer.getClassName() )
        #if( $className == "com.liferay.portlet.journal.model.JournalArticle" )
            #set( $journalArticle = $renderer.getArticle() )
            #set( $document = $saxReaderUtil.read($journalArticle.getContent()) )
            #set( $rootElement = $document.getRootElement() )
            #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='subTitulo']") )
            #set( $subTitulo = $xPathSelector.selectSingleNode($rootElement).getStringValue() )
            #set( $link = $renderer.getURLViewInContext($renderRequest, $renderResponse, '') )
            
            <div class="noticia">
                <h1 class="titulo">$entry.getTitle($locale)</h1>
                <h3 class="sub-titulo">$subTitulo</h3>
                <p class="leia-mais">
                    <a href="$link">Leia Mais</a>
                </p>
            </div>
        #end
    #end
    </div>
#end

 

Com isso você consegue exibir os dados da estrutura do Web Content.

Espero que isso seja útil para vocês.

 

Mais informações sobre Application Display Template

ADT é uma nova forma de criar modos de exibição personalizados para alguns recursos do Liferay. 

Para saber mais informações sobre o ADT, sugiro dar uma lida nesses artigos aqui:

https://www.liferay.com/pt/web/eduardo.garcia/blog/-/blogs/new-ways-of-customization-with-application-display-templates-part-i-

https://www.liferay.com/pt/web/eduardo.garcia/blog/-/blogs/new-ways-of-customization-with-application-display-templates-part-ii-

 
Abraços e até o próximo.

#05 Liferay São Paulo User Group

General Blogs February 3, 2014 By Paulo Fernandes Staff

Olá pessoal

Realizamos o #05 meetup sobre Liferay no dia 30/01/2014 na Germinadora

Neste meetup fizemos duas apresentações:
1- Alloy e as novidades de UI para o Liferay Portal 6.2 por Zeno Rocha 
2- Case Entelgy Brasil por Jesus Novella

Gostei bastante desse meetup, pois descobrimos usos para o Liferay e as novidades de UI da versão nova.

Tentaremos marcar um meetup para fevereiro e assim que soubermos a data e local, avisamos por aqui e na comunidade do meetup.com, por isso se ainda não faz parte, inscreva-se. http://www.meetup.com/Liferay-Sao-Paulo-User-Group/

As fotos do meetup estão no seguinte link 
http://www.meetup.com/Liferay-Sao-Paulo-User-Group/photos/19838502/

Neste meetup compareceram 11 pessoas.

Abraços

#04 Liferay São Paulo User Group

General Blogs February 3, 2014 By Paulo Fernandes Staff

Olá pessoal

Marcamos o #04 meetup de Liferay, porém como foi relatado pelos participantes, eles não poderiam comparecer no evento. Dessa forma esse foi cancelado. :( 

Não se esqueça de se inscrever no meetup.com para facilitar a comunicação de novos eventos e se tiver alguma duvida, poste no fórum

Abraços

#03 Liferay São Paulo User Group

General Blogs February 3, 2014 By Paulo Fernandes Staff

Olá pessoal

Realizamos o segundo meetup técnico sobre Liferay no dia 28/11/2013 no iMasters

Neste meetup fizemos duas apresentações:
1- Staging que foi apresentado por Paulo Fernandes 
2- Criando testes unitários para classes do tipo *LocalServiceImpl por Fernando Takashi Akimoto

Gostei bastante desse meetup, mas sempre temos algo para melhorar. 
Dessa forma, peço que nos ajude falando o que poderiamos fazer melhor. 
O nosso próximo meetup será no dia 19/12/2013 para encerrar o ano em algum bar para tomar uma cerveja e conversar sobre Liferay.

Fique de olho no meetup.com (http://www.meetup.com/Liferay-Sao-Paulo-User-Group/) para saber onde vamos nos encontrar.

As fotos do meetup estão no seguinte link 
http://www.meetup.com/Liferay-Sao-Paulo-User-Group/photos/18807032/

Neste meetup compareceram 12 pessoas.

Não se esqueça de se inscrever no meetup.com para facilitar a comunicação de novos eventos e se tiver alguma duvida, poste no fórum

Abraços

#02 Liferay São Paulo User Group

General Blogs February 3, 2014 By Paulo Fernandes Staff

Olá pessoal

Realizamos um meetup informal sobre Liferay no dia 31/10/2013. 
Acho que ele foi muito proveitoso e produtivo, pois além de conhecermos mais pessoas que utilizam Liferay, conhecemos como eles utilizam a ferramenta e onde utilizam.

As fotos do meetup estão no seguinte link 
http://www.meetup.com/Liferay-Sao-Paulo-User-Group/photos/18302362/

Neste meetup compareceram 16 pessoas.

Não se esqueça de se inscrever no meetup.com para facilitar a comunicação de novos eventos. http://www.meetup.com/Liferay-Sao-Paulo-User-Group

Abraços

#01 Liferay São Paulo User Group

General Blogs February 3, 2014 By Paulo Fernandes Staff

Olá pessoal

Esse post tem como objetivo divulgar o evento que realizamos no dia 24/09/2013.
Este foi o primeiro meetup do Liferay São Paulo User Group e falamos sobre as novidades do Liferay Portal 6.2
O link da apresentação encontra-se no SlideShare do Thiago Moreira
http://www.slideshare.net/tmoreira2020/novidades-do-liferay-portal-62

No link abaixo temos algumas fotos do meetup.
http://www.meetup.com/Liferay-Sao-Paulo-User-Group/photos/17544072/

Neste meetup compareceram 11 pessoas

Não se esqueça de se inscrever no meetup.com para facilitar a comunicação de novos eventos. http://www.meetup.com/Liferay-Sao-Paulo-User-Group

Abraços

Showing 14 results.
Items 20
of 1