/**
* Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados.
*
* e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro
* dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do
* Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão.
*
* Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA;
* sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
* Veja a Licença Pública Geral Menor GNU para maiores detalhes.
*/
package br.gov.camara.edemocracia.portlets.guiadiscussao.beans.admin;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.portlet.PortletConfig;
import org.apache.commons.lang3.StringUtils;
import br.gov.camara.edemocracia.portlets.guiadiscussao.model.Configuracao;
import br.gov.camara.edemocracia.portlets.guiadiscussao.service.ConfiguracaoLocalServiceUtil;
import br.gov.camara.edemocracia.portlets.guiadiscussao.util.BibliotecaImagensUtil;
import com.liferay.faces.portal.context.LiferayFacesContext;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.language.LanguageUtil;
@ManagedBean(name = "bannerAdminBean")
@ViewScoped
public class BannerAdminBean implements Serializable {
private static final long serialVersionUID = -3790226197232888263L;
// Lista com imagens cadastradas na biblioteca de documentos
private List<FileEntryDisplay> imagens;
// Imagem da biblioteca selecionada pelo usuário
private FileEntryDisplay imagemSelecionada;
private String tituloBanner;
private String textoBanner;
// Utilizados para componente <componente:linkPainel/>
private Boolean urlExterna;
private String linkComunidade;
private String linkExterno;
@ManagedProperty(value = "#{configuracaoAdminBean}")
private ConfiguracaoAdminBean configuracaoAdminBean;
@PostConstruct
private void init() {
carregarImagensDaBiblioteca();
carregarDadosBanner();
}
/**
* Carrega todas as imagens que estão cadastradas na biblioteca de
* documentos da comunidade
*/
private void carregarImagensDaBiblioteca() {
imagens = new ArrayList<FileEntryDisplay>();
long groupId = LiferayFacesContext.getInstance().getThemeDisplay()
.getScopeGroupId();
imagens = BibliotecaImagensUtil.getTodasImagensDaBiblioteca(groupId);
}
/**
* Carrega os dados do banner que estão cadastrados para esta configuracao
*
* @param config
*/
public void carregarDadosBanner() {
Configuracao config = configuracaoAdminBean.getConfig();
if (config.getImagemIdBanner() != 0) {
try {
imagemSelecionada = BibliotecaImagensUtil
.getFileEntryDisplay(config.getImagemIdBanner());
} catch (PortalException e) {
imagemSelecionada = BibliotecaImagensUtil
.getImagemPadraoBanner();
}
}
tituloBanner = config.getTituloBanner();
textoBanner = config.getTextoBanner();
urlExterna = Boolean.valueOf(config.getUrlExterna());
// Carregando dados do link externo
if (urlExterna) {
linkExterno = config.getUrlBanner();
linkComunidade = "";
} else {
linkComunidade = config.getUrlBanner();
linkExterno = "";
}
}
public void salvarBanner() {
if (validarDados()) {
if (configuracaoAdminBean.getConfig().getConfiguracaoId() != 0) {
Configuracao configuracaoAtual = configuracaoAdminBean
.getConfig();
configuracaoAtual.setImagemIdBanner(imagemSelecionada
.getFileEntryId());
configuracaoAtual.setTextoBanner(textoBanner);
configuracaoAtual.setTituloBanner(tituloBanner);
configuracaoAtual.setUrlExterna(urlExterna);
// Tratamento de qual url salvar
if (urlExterna) {
configuracaoAtual.setUrlBanner(linkExterno);
} else {
configuracaoAtual.setUrlBanner(linkComunidade);
}
try {
ConfiguracaoLocalServiceUtil.updateConfiguracao(
configuracaoAdminBean.getConfig(), true);
} catch (SystemException e) {
throw new RuntimeException(e);
}
}
}
configuracaoAdminBean.atualizaConfiguracao();
}
/**
* Valida os dados obrigatórios do banner
*
* @return
*/
private boolean validarDados() {
Locale locale = LiferayFacesContext.getInstance().getLocale();
PortletConfig config = LiferayFacesContext.getInstance()
.getPortletConfig();
boolean dadosOk = true;
if (StringUtils.isBlank(tituloBanner)) {
LiferayFacesContext.getInstance().addGlobalErrorMessage(
LanguageUtil.get(config, locale,
"titulo-banner-obrigatorio"));
dadosOk = false;
}
if (StringUtils.isBlank(textoBanner)) {
LiferayFacesContext.getInstance().addGlobalErrorMessage(
LanguageUtil.get(config, locale,
"descricao-banner-obrigatorio"));
dadosOk = false;
}
if (urlExterna) {
if (StringUtils.isBlank(linkExterno)) {
LiferayFacesContext.getInstance().addGlobalErrorMessage(
"digite-url-externa");
dadosOk = false;
}
}
return dadosOk;
}
public List<FileEntryDisplay> getImagens() {
return imagens;
}
public FileEntryDisplay getImagemSelecionada() {
return imagemSelecionada;
}
public void setImagemSelecionada(FileEntryDisplay imagemSelecionada) {
this.imagemSelecionada = imagemSelecionada;
}
public Boolean getUrlExterna() {
return urlExterna;
}
public void setUrlExterna(Boolean urlExterna) {
this.urlExterna = urlExterna;
}
public String getLinkExterno() {
return linkExterno;
}
public void setLinkExterno(String linkExterno) {
this.linkExterno = linkExterno;
}
public String getLinkComunidade() {
return linkComunidade;
}
public void setLinkComunidade(String linkComunidade) {
this.linkComunidade = linkComunidade;
}
public String getTituloBanner() {
return tituloBanner;
}
public void setTituloBanner(String tituloBanner) {
this.tituloBanner = tituloBanner;
}
public String getTextoBanner() {
return textoBanner;
}
public void setTextoBanner(String textoBanner) {
this.textoBanner = textoBanner;
}
public ConfiguracaoAdminBean getConfiguracaoAdminBean() {
return configuracaoAdminBean;
}
public void setConfiguracaoAdminBean(
ConfiguracaoAdminBean configuracaoAdminBean) {
this.configuracaoAdminBean = configuracaoAdminBean;
}
}