Commit 9164a9e7 by jefferson.silva

Atualização de pastas

Mudança de nível
parent 9dbb411a
package br.mp.mprj.portal.portlet.gestaomensagens.workflow;
import java.io.Serializable;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
import br.mp.mprj.portal.portlet.gestaomensagens.email.EnvioEmailMensagem;
import br.mp.mprj.portal.portlet.gestaomensagens.email.EnvioEmailWorkflow;
import br.mp.mprj.portal.portlet.gestaomensagens.enums.TipoEnvioEnum;
import br.mp.mprj.portal.portlet.gestaomensagens.job.AgendamentoJobUtil;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalServiceUtil;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemWorkflowLocalServiceUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.workflow.BaseWorkflowHandler;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.service.ServiceContext;
import com.liferay.util.portlet.PortletProps;
public class MensagemWorkflowHandler extends BaseWorkflowHandler {
private static final Log _log = LogFactoryUtil.getLog(MensagemWorkflowHandler.class);
private final String TYPE = "Mensagens";
@Override
public String getClassName() {
return Mensagem.class.getName();
}
@Override
public String getType(Locale locale) {
return TYPE;
}
@Override
public Object updateStatus(int status,
Map<String, Serializable> workflowContext) throws PortalException,
SystemException {
long userId = GetterUtil.getLong(workflowContext.get(WorkflowConstants.CONTEXT_USER_ID));
long resourcePrimKey = GetterUtil.getLong(workflowContext.get(WorkflowConstants.CONTEXT_ENTRY_CLASS_PK));
Mensagem mensagem = MensagemLocalServiceUtil.getMensagem(resourcePrimKey);
mensagem.setStatusWorkflow(status);
mensagem.setUserIdWorkflow(userId);
mensagem.setDataStatusWorkflow(new Date());
mensagem.setComentarioWorkflow(GetterUtil.getString(workflowContext.get(WorkflowConstants.CONTEXT_TASK_COMMENTS)));
mensagem = MensagemLocalServiceUtil.updateMensagem(mensagem);
MensagemWorkflowLocalServiceUtil.gravarHistoricoWorkflow(mensagem);
//se foi reprovado, colocar novamente para revisao
if (status == WorkflowConstants.STATUS_DENIED) {
try {
ServiceContext serviceContext = (ServiceContext)workflowContext.get(WorkflowConstants.CONTEXT_SERVICE_CONTEXT);
WorkflowUtil.atualizarStatusWorkflow(mensagem, AcaoWorkflowEnum.REVISAR,
GetterUtil.getString(PortletProps.get("workflow.texto-padrao.revisao")), userId,
serviceContext);
WorkflowUtil.inicializarWorkflowMensagem(mensagem, serviceContext);
}
catch (Exception ex) {
_log.error("Problemas ao definir revisao:", ex);
}
}
//envio de email
if (status == WorkflowConstants.STATUS_DENIED
|| status == WorkflowConstants.STATUS_APPROVED
|| status == WorkflowConstants.STATUS_INACTIVE) {
try {
//enviar notificacao de mensagem aprovada
EnvioEmailMensagem envio = new EnvioEmailWorkflow(mensagem);
envio.enviarEmail(0);
//enviar e-mail para os destinatarios, caso seja de envio imediato
if (status == WorkflowConstants.STATUS_APPROVED
&& mensagem.getTipoEnvio() == TipoEnvioEnum.IMEDIATO.ordinal()) {
AgendamentoJobUtil.enviaMensagemImediato(mensagem.getMensagemId());
}
}
catch (Exception ex) {
_log.error("Problemas ao enviar e-mail do status do workflow:", ex);
}
}
return mensagem;
}
@Override
public String getTitle(long classPK, Locale locale) {
String titlePadrao = super.getTitle(classPK, locale);
if (Validator.isNull(titlePadrao)) {
try {
return MensagemLocalServiceUtil.getMensagem(classPK).getAssunto();
}
catch (PortalException|SystemException ex) {
return StringPool.BLANK;
}
}
return titlePadrao;
}
@Override
public void startWorkflowInstance(long companyId, long groupId,
long userId, long classPK, Object model,
Map<String, Serializable> workflowContext) throws PortalException,
SystemException {
super.startWorkflowInstance(companyId, groupId, userId, classPK, model,
workflowContext);
/*try {
WorkflowUtil.atribuirWorkflowRole(Mensagem.class.getName(), companyId,
groupId, classPK,
userId, WorkflowUtil.getWorkflowRoleId(companyId),
GetterUtil.getString(PortletProps.get("workflow.texto-padrao.atribuicao.role")));
}
catch (Exception ex) {
_log.error("Problemas ao inicializar o workflow da Mensagem ID: " + classPK, ex);
}*/
}
}
<?xml version="1.0"?>
<beans
default-destroy-method="destroy"
default-init-method="afterPropertiesSet"
xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
>
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.aop.ServiceBeanAutoProxyCreator" />
<constructor-arg>
<map>
<entry key="beanMatcher">
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.aop.ServiceBeanMatcher" />
</bean>
</entry>
<entry key="methodInterceptor" value-ref="serviceAdvice" />
</map>
</constructor-arg>
</bean>
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.bean.BeanReferenceAnnotationBeanPostProcessor" />
</bean>
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.context.PortletBeanFactoryCleaner" />
</bean>
<bean id="portletClassLoader" class="com.liferay.portal.kernel.portlet.PortletClassLoaderUtil" factory-method="getClassLoader" />
<bean id="servletContextName" class="com.liferay.portal.kernel.portlet.PortletClassLoaderUtil" factory-method="getServletContextName" />
<bean id="basePersistence" abstract="true">
<property name="dataSource" ref="liferayDataSource" />
<property name="sessionFactory" ref="liferaySessionFactory" />
</bean>
<bean id="serviceAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.aop.SkipAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="accessControlAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="accessControlAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.security.ac.AccessControlAdvice" />
<constructor-arg>
<map>
<entry key="accessControlAdvisor">
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.security.ac.AccessControlAdvisorImpl" />
</bean>
</entry>
<entry key="nextMethodInterceptor" value-ref="portalResiliencyAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="portalResiliencyAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.resiliency.service.PortalResiliencyAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="serviceMonitorAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="serviceMonitorAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.monitoring.statistics.service.ServiceMonitorAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="asyncAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="asyncAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.messaging.async.AsyncAdvice" />
<constructor-arg>
<map>
<entry key="defaultDestinationName" value="liferay/async_service" />
<entry key="nextMethodInterceptor" value-ref="threadLocalCacheAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="threadLocalCacheAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.cache.ThreadLocalCacheAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="bufferedIncrementAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="bufferedIncrementAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.increment.BufferedIncrementAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="indexableAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="indexableAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.search.IndexableAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="systemEventAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="systemEventAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.systemevent.SystemEventAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="transactionAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="transactionAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.transaction.TransactionInterceptorFactoryBean" />
<constructor-arg>
<map>
<entry key="platformTransactionManager" value-ref="liferayTransactionManager" />
<entry key="transactionAttributeSource" value-ref="transactionAttributeSource" />
</map>
</constructor-arg>
</bean>
<bean id="transactionAttributeSource" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.transaction.AnnotationTransactionAttributeSource" />
</bean>
</beans>
\ No newline at end of file
<?xml version="1.0"?>
<model-hints>
<hint-collection name="CLOB">
<hint name="max-length">2000000</hint>
</hint-collection>
<hint-collection name="CAMPO_MEDIO">
<hint name="max-length">4000</hint>
</hint-collection>
<hint-collection name="CAMPO_PEQUENO">
<hint name="max-length">255</hint>
</hint-collection>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento">
<field name="uuid" type="String" />
<field name="agendamentoId" type="long" />
<field name="mensagemId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="tipoAgendamento" type="int" />
<field name="dataCalendario" type="Date" />
<field name="dataInicio" type="Date" />
<field name="dataFim" type="Date" />
<field name="padraoRecorrencia" type="int" />
<field name="frequencia" type="int" />
<field name="diarioTodos" type="boolean" />
<field name="semanalDias" type="String" />
<field name="mensalDiaFrequencia" type="int" />
<field name="dataAtualizacao" type="Date" />
<field name="dataEnvio" type="Date" />
<field name="situacaoEnvio" type="int" />
<field name="erroEnvio" type="boolean" />
<field name="mensagemErro" type="String" />
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem">
<field name="uuid" type="String" />
<field name="anexoMensagemId" type="long" />
<field name="mensagemId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="dataCriacao" type="Date" />
<field name="anexoUrl" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="fileName" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="versao" type="String" />
<field name="contentType" type="String" />
<field name="ativo" type="boolean" />
<field name="anexoFileEntryId" type="long" />
<field name="anexoPath" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.EmailDestinatario">
<field name="uuid" type="String" />
<field name="emailDestinatarioId" type="long" />
<field name="email" type="String" />
<field name="grupoDestinatarioId" type="long" />
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario">
<field name="uuid" type="String" />
<field name="grupoDestinatarioId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="nome" type="String" />
<field name="finalidade" type="String">
<hint-collection name="CLOB" />
</field>
<field name="userIdResponsaveis" type="String" />
<field name="listaTemporaria" type="boolean" />
<field name="dataFinalListaTemporaria" type="Date" />
<field name="envioEmNomeLista" type="boolean" />
<field name="userIdNomesLista" type="String" />
<field name="listaModerada" type="boolean" />
<field name="userIdListaModerada" type="String" />
<field name="ativo" type="boolean" />
<field name="dataCriacao" type="Date" />
<field name="dataAtualizacao" type="Date" />
<field name="tipoLista" type="int" />
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem">
<field name="uuid" type="String" />
<field name="mensagemId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="templateId" type="long" />
<field name="grupoDestinatarioIds" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="contaSaidaId" type="long" />
<field name="codigoMensagem" type="String" />
<field name="assunto" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="conteudo" type="String">
<hint-collection name="CLOB" />
</field>
<field name="prioridade" type="int" />
<field name="ativo" type="boolean" />
<field name="tipoEnvio" type="int" />
<field name="situacaoEnvio" type="int" />
<field name="nomeSolicitante" type="String" />
<field name="userIdCriador" type="long" />
<field name="dataSolicitacao" type="Date" />
<field name="dataUltimoEnvio" type="Date" />
<field name="dataAlteracao" type="Date" />
<field name="rascunho" type="boolean" />
<field name="statusWorkflow" type="int" />
<field name="userIdWorkflow" type="long" />
<field name="dataStatusWorkflow" type="Date" />
<field name="comentarioWorkflow" type="String">
<hint-collection name="CAMPO_MEDIO" />
</field>
<field name="clonagemPai" type="long" />
<field name="literalAgendamento" type="String">
<hint-collection name="CLOB" />
</field>
<field name="userIdCancel" type="long" />
<field name="userIdAprovador" type="long" />
<field name="userIdReprovador" type="long" />
<field name="dataCancel" type="Date" />
<field name="service" type="boolean" />
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemWorkflow">
<field name="uuid" type="String" />
<field name="mensagemWorkflowId" type="long" />
<field name="mensagemId" type="long" />
<field name="userId" type="long" />
<field name="status" type="int" />
<field name="data" type="Date" />
<field name="comentario" type="String">
<hint-collection name="CAMPO_MEDIO" />
</field>
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template">
<field name="uuid" type="String" />
<field name="templateId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="nome" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="estilo" type="int" />
<field name="ativo" type="boolean" />
<field name="cabecalho" type="String">
<hint-collection name="CLOB" />
</field>
<field name="rodape" type="String">
<hint-collection name="CLOB" />
</field>
<field name="corpo" type="String">
<hint-collection name="CLOB" />
</field>
<field name="dataCriacao" type="Date" />
<field name="dataAtualizacao" type="Date" />
<field name="thumbnailFileEntryId" type="long" />
<field name="thumbnailURL" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
</model>
</model-hints>
\ No newline at end of file
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" default-destroy-method="destroy" default-init-method="afterPropertiesSet" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AgendamentoLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.AgendamentoLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoFinder" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoFinderImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.AnexoMensagemLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AnexoMensagemPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AnexoMensagemPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.EmailDestinatarioLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.EmailDestinatarioLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.EmailDestinatarioPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.EmailDestinatarioPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.GrupoDestinatarioLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.GrupoDestinatarioServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.GrupoDestinatarioPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.GrupoDestinatarioPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.MensagemLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.MensagemServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemWorkflowLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.MensagemWorkflowLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemWorkflowPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemWorkflowPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.TemplateLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.TemplateServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.TemplatePersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.TemplatePersistenceImpl" parent="basePersistence" />
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<custom-sql>
<sql file="custom-sql/mensagens-agendadas.xml" />
</custom-sql>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Newsletter</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
* {
-webkit-text-size-adjust: none;
-webkit-text-resize: 100%;
text-resize: 100%;
}
.no-link a{
text-decoration:none !important;
color:#808080 !important;
}
.no-link-2 a{
text-decoration:none !important;
color:#979b9c !important;
}
#u10 {
border-width: 0px;
left: 280px;
top: 212px;
width: 384px;
height: 16px;
font-size: 14px;
color: #999999;
text-align: center;
}
@media only screen and (max-width:500px) {
table[class="wrapper"]{min-width:320px !important;}
table[class="flexible"]{width:100% !important;}
td[class="img-flex"] img{
width:100% !important;
height:auto !important;
}
td[class="aligncenter"]{text-align:center !important;}
td[class="section-1"]{padding:15px 10px !important;}
td[class="section-2"]{padding:25px 0 !important;}
td[class="section-3"]{padding:10px 0 0 !important;}
td[class="section-4"]{padding:20px 10px !important;}
td[class="section-5"]{padding:30px 10px 20px !important;}
td[class="button"]{padding:0 !important;}
td[class="button"] a{
display:block !important;
padding:12px 16px 10px !important;
text-align:center !important;
}
td[class="columns"]{padding:0 0 30px !important;}
td[class="col"]{width:32% !important;}
td[class="col"] td[class="img-flex"]{
height:auto !important;
padding:0 0 10px !important;
}
td[class="col"] td[class="text"]{
padding:0 !important;
font-size:11px !important;
}
td[class="social-networks"]{padding:0 0 30px !important;}
}
</style>
</head>
<body style="margin:0; padding:0;" bgcolor="#ffffff" link="#4787ce">
<table class="wrapper" width="100%" cellspacing="0" cellpadding="0" bgcolor="#ffffff">
<tr>
<td class="section-2" style="padding:39px 10px 37px;" align="center">
<table class="flexible" width="600" cellpadding="0" cellspacing="0">
<tr>
<td mc:edit="block-1" align="center" style="padding:0 0 5px;">
<a href="http://consumidorvencedor.mp.br/">
<img src="http://rj.consumidorvencedor.mp.br/documents/13137/309578/logo_Consumidor_Vencedor_sem_estado.png" border="0" style="vertical-align:top; width:200px;" alt="Logo Consumidor Vencedor" />
</a>
</td>
</tr>
<tr>
<td style="padding:0 0 4px;">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width="50%">
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td width="50%" height="1" style="font-size:0; line-height:0;" bgcolor="#dfe0e2">&nbsp;</td></tr>
<tr><td width="50%" height="1" style="font-size:0; line-height:0;" bgcolor="#edeef0">&nbsp;</td></tr>
</table>
</td>
<td mc:edit="block-2" align="center" style="font: 17px/35px Verdana, Arial, Helvetica, sans-serif;white-space:nowrap;color:#333;padding:0 22px;">
<span> Cadastro de Newsletter</span>
</td>
<td width="50%">
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td width="50%" height="1" style="font-size:0; line-height:0;" bgcolor="#dfe0e2">&nbsp;</td></tr>
<tr><td width="50%" height="1" style="font-size:0; line-height:0;" bgcolor="#edeef0">&nbsp;</td></tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="section-2" align="center">
<table width="600" >
<tr>
<div id="u10" >
<span style="font-family: 'Arial Normal', 'Arial';">Esse é um e-mail automático. Não é necessário respondê-lo.</span>
</div>
</tr>
<br>
<br>
</table>
</td>
</tr>
<tr>
<td class="section-3" style="padding:40px 10% 40px 10%;border-top:1px solid #fdfdfd;font-family: 'Lato';font-weight: 400;font-style: normal;font-size: 16px;color: #2F3A48;" align="left" bgcolor="#f6f7f8">
<div>Seu e-mail foi cadastrado com sucesso! Seja bem-vindo!</div>
<div>Em breve, você receberá a nossa newsletter com as informações atualizadas sobre as vitórias obtidas na defesa coletiva dos consumidores.</div>
<br>
<br>
<div>Obrigado,</div>
<div>Consumidor Vencedor</div>
<div style="font-family: 'Lato Bold', 'Lato Regular', 'Lato';font-weight: 700;">consumidorvencedor.mp.br</div>
</td>
</tr>
<tr>
<td class="section-5" align="center" style=" font:12px/18px Arial, Helvetica, sans-serif; color:#979b9c; padding:39px 10px 37px; border-top:1px solid #eeeff0;">
<div style="padding: 0% 20% 2px 20%;">Você recebeu esta mensagem porque se cadastrou para receber e-mails do Consumidor Vencedor.
Respeitamos a sua privacidade, se você não deseja receber estes e-mails,clique <a href=[$URL$]>aqui</a> para cancelar o recebimento.</div>
<br>
[$RODAPE_TEXTO$]<br/>
[$RODAPE_ENDERECO$]
</td>
</tr>
</table>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>portlet-gestao-mensagens</portlet-name>
<icon>/icon.png</icon>
<configuration-action-class>com.liferay.portal.kernel.portlet.DefaultConfigurationAction</configuration-action-class>
<indexer-class>br.mp.mprj.portal.portlet.gestaomensagens.search.indexer.TemplateIndexer</indexer-class>
<indexer-class>br.mp.mprj.portal.portlet.gestaomensagens.search.indexer.MensagemIndexer</indexer-class>
<indexer-class>br.mp.mprj.portal.portlet.gestaomensagens.search.indexer.GrupoDestinatarioIndexer</indexer-class>
<indexer-class>br.mp.mprj.portal.portlet.gestaomensagens.search.indexer.AgendamentoIndexer</indexer-class>
<scheduler-entry>
<scheduler-description>Job para enviar os e-mails das mensagens aprovadas e pendentes</scheduler-description>
<scheduler-event-listener-class>br.mp.mprj.portal.portlet.gestaomensagens.job.AgendamentoJob</scheduler-event-listener-class>
<trigger>
<cron>
<cron-trigger-value>0 0/2 * 1/1 * ? *</cron-trigger-value>
</cron>
</trigger>
</scheduler-entry>
<control-panel-entry-category>content</control-panel-entry-category>
<control-panel-entry-weight>4</control-panel-entry-weight>
<asset-renderer-factory>br.mp.mprj.portal.portlet.gestaomensagens.asset.MensagemAssetRendererFactory</asset-renderer-factory>
<workflow-handler>br.mp.mprj.portal.portlet.gestaomensagens.workflow.MensagemWorkflowHandler</workflow-handler>
<preferences-unique-per-layout>false</preferences-unique-per-layout>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
<header-portlet-css>/css/main.css</header-portlet-css>
<header-portlet-css>/css/owl.carousel.css</header-portlet-css>
<header-portlet-css>/css/owl.theme.css</header-portlet-css>
<header-portlet-javascript>/js/jquery.min.js</header-portlet-javascript>
<header-portlet-javascript>/js/owl.carousel.min.js</header-portlet-javascript>
<header-portlet-javascript>/js/jquery.maskedinput.min.js</header-portlet-javascript>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
<css-class-wrapper>gestao-msg-admin</css-class-wrapper>
</portlet>
<portlet>
<portlet-name>portlet-gestao-mensagens-cadastroUsuario</portlet-name>
<icon>/icon.png</icon>
<configuration-action-class>br.mp.mprj.portal.portlet.gestaomensagens.action.ConfiguracaoAction</configuration-action-class>
<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>gestao</friendly-url-mapping>
<friendly-url-routes>content/url-routes.xml</friendly-url-routes>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
<header-portlet-css>/css/main.css</header-portlet-css>
<css-class-wrapper>gestao-msg</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
\ No newline at end of file
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
version="2.0">
<portlet>
<portlet-name>portlet-gestao-mensagens</portlet-name>
<display-name>portlet-gestao-mensagens</display-name>
<portlet-class>br.mp.mprj.portal.portlet.gestaomensagens.principal.AdministracaoPortlet</portlet-class>
<init-param>
<name>check-auth-token</name>
<value>false</value>
</init-param>
<init-param>
<name>view-template</name>
<value>/jsp/view.jsp</value>
</init-param>
<init-param>
<name>action.package.prefix</name>
<value>br.mp.mprj.portal.portlet.gestaomensagens.action</value>
</init-param>
<init-param>
<name>add-process-action-success-action</name>
<value>false</value>
</init-param>
<init-param>
<name>config-jsp</name>
<value>/jsp/config.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<resource-bundle>content/Language</resource-bundle>
<portlet-info>
<title>Gestão de Mensagens</title>
<short-title>Gestão Mensagens</short-title>
<keywords>gestao mensagens mensagem portlet</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
<portlet>
<portlet-name>portlet-gestao-mensagens-cadastroUsuario</portlet-name>
<display-name>portlet-gestao-mensagens-cadastroUsuario</display-name>
<portlet-class>br.mp.mprj.portal.portlet.gestaomensagens.principal.AdministracaoPortlet</portlet-class>
<init-param>
<name>check-auth-token</name>
<value>false</value>
</init-param>
<init-param>
<name>view-template</name>
<value>/jsp/cadastro-usuario.jsp</value>
</init-param>
<init-param>
<name>action.package.prefix</name>
<value>br.mp.mprj.portal.portlet.gestaomensagens.action</value>
</init-param>
<init-param>
<name>add-process-action-success-action</name>
<value>true</value>
</init-param>
<init-param>
<name>config-template</name>
<value>/jsp/cadastro-usuario-config.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<resource-bundle>content/Language</resource-bundle>
<portlet-info>
<title>Gestão de Mensagens - Cadastro Usuário</title>
<short-title>Gestão de Mensagens - Cadastro Usuário</short-title>
<keywords>gestao mensagens mensagem portlet</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
</portlet-app>
\ No newline at end of file
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.2.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_2_0.dtd">
<service-builder package-path="br.mp.mprj.portal.portlet.gestaomensagens.service" auto-namespace-tables="false">
<author>Henrique Simoes</author>
<namespace>GESTMSG</namespace>
<entity name="Template" table="PRT_GESTMSG_TEMPLATE" uuid="true" remote-service="true" local-service="true">
<column name="templateId" type="long" primary="true"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="userId" type="long"/>
<column name="nome" type="String"/>
<column name="estilo" type="int"/>
<column name="ativo" type="boolean"/>
<column name="cabecalho" type="String"/>
<column name="rodape" type="String"/>
<column name="corpo" type="String"/>
<column name="dataCriacao" type="Date"/>
<column name="dataAtualizacao" type="Date"/>
<!-- Referenciao ao fileEntryId da imagem enviada -->
<column name="thumbnailFileEntryId" type="long"/>
<!-- URL da imagem enviada (quando ha upload) -->
<column name="thumbnailURL" type="String"/>
<finder name="GroupId"
return-type="Collection">
<finder-column name="groupId"/>
</finder>
<finder name="GroupIdNome"
return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template"
unique="true">
<finder-column name="groupId"/>
<finder-column name="nome"/>
</finder>
<finder name="NomeAtivo"
return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template"
unique="true">
<finder-column name="nome"/>
<finder-column name="ativo"/>
</finder>
</entity>
<entity name="Mensagem" table="PRT_GESTMSG_MENSAGEM" uuid="true" remote-service="true" local-service="true">
<column name="mensagemId" type="long" primary="true"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="templateId" type="long"/>
<column name="grupoDestinatarioIds" type="String"/>
<column name="contaSaidaId" type="long"/>
<column name="codigoMensagem" type="String"/>
<column name="assunto" type="String"/>
<column name="conteudo" type="String"/>
<column name="prioridade" type="int"/>
<column name="ativo" type="boolean"/>
<column name="tipoEnvio" type="int"/>
<column name="situacaoEnvio" type="int"/>
<column name="nomeSolicitante" type="String"/>
<column name="userIdCriador" type="long"/>
<column name="dataSolicitacao" type="Date"/>
<column name="dataUltimoEnvio" type="Date"/>
<column name="dataAlteracao" type="Date"/>
<column name="rascunho" type="boolean"/>
<column name="statusWorkflow" type="int"/>
<column name="userIdWorkflow" type="long"/>
<column name="dataStatusWorkflow" type="Date"/>
<column name="comentarioWorkflow" type="String"/>
<column name="clonagemPai" type="long"/>
<column name="literalAgendamento" type="String"/>
<column name="userIdCancel" type="long"/>
<column name="userIdAprovador" type="long"/>
<column name="userIdReprovador" type="long"/>
<column name="dataCancel" type="Date"/>
<column name="service" type="boolean"/>
<finder name="Codigo" return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem" unique="true">
<finder-column name="codigoMensagem"/>
</finder>
<finder name="GroupId" return-type="Collection">
<finder-column name="groupId"/>
</finder>
<finder name="StatusWorkflow" return-type="Collection">
<finder-column name="statusWorkflow"/>
</finder>
<finder name="UserIdCriador" return-type="Collection">
<finder-column name="userIdCriador"/>
</finder>
<finder name="RascunhoCriador" return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem">
<finder-column name="rascunho"/>
<finder-column name="userIdCriador"/>
</finder>
<reference package-path="com.liferay.portal" entity="User" />
<reference package-path="com.liferay.portlet.asset" entity="AssetEntry" />
<reference package-path="com.liferay.portal" entity="WorkflowDefinitionLink"></reference>
<reference package-path="com.liferay.portal" entity="WorkflowInstanceLink"></reference>
</entity>
<entity name="Agendamento" table="PRT_GESTMSG_AGENDAMENTO" uuid="true" remote-service="false" local-service="true">
<column name="agendamentoId" type="long" primary="true"/>
<column name="mensagemId" type="long"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="tipoAgendamento" type="int"/>
<!-- dataCalendario possui apenas a data do agendamento,
para fins de controle e pesquisa mais eficiente em determinadas situacoes
durante o calculo. -->
<column name="dataCalendario" type="Date"/>
<!-- dataInicio e dataFim possuem data e hora completas. -->
<column name="dataInicio" type="Date"/>
<column name="dataFim" type="Date"/>
<column name="padraoRecorrencia" type="int"/>
<column name="frequencia" type="int"/>
<column name="diarioTodos" type="boolean"/>
<column name="semanalDias" type="String"/>
<column name="mensalDiaFrequencia" type="int"/>
<column name="dataAtualizacao" type="Date"/>
<column name="dataEnvio" type="Date"/>
<column name="situacaoEnvio" type="int"/>
<column name="erroEnvio" type="boolean"/>
<column name="mensagemErro" type="String"/>
<order>
<order-column name="dataInicio" order-by="asc"/>
</order>
<finder name="MensagemTipo" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="tipoAgendamento"/>
</finder>
<finder name="MensagemTipoMultipo" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="tipoAgendamento" arrayable-operator="OR"/>
</finder>
<finder name="MensagemDataCalendario" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="dataCalendario"/>
</finder>
<finder name="Situacao" return-type="Collection">
<finder-column name="situacaoEnvio"/>
</finder>
<finder name="SituacaoMensagem" return-type="Collection">
<finder-column name="situacaoEnvio"/>
<finder-column name="mensagemId"/>
</finder>
<finder name="MensagemId" return-type="Collection">
<finder-column name="mensagemId"/>
</finder>
<finder name="MensagemIdSituacaoEnvio" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="situacaoEnvio"/>
</finder>
<!-- Finder para excluir os agendamentos de determinada mensagem, de terminado tipo,
com o status especifico e que o ID do agendamento nao esteja no array -->
<finder name="AgendamentoExclusao" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="tipoAgendamento" arrayable-operator="OR" />
<finder-column name="situacaoEnvio"/>
<finder-column name="agendamentoId" arrayable-operator="AND" comparator="!="/>
</finder>
</entity>
<entity name="EmailDestinatario" table="PRT_GESTMSG_MAIL_DESTINATARIO" uuid="true" remote-service="false" local-service="true">
<column name="emailDestinatarioId" type="long" primary="true"/>
<column name="email" type="String"/>
<column name="grupoDestinatarioId" type="long"/>
<finder name="GrupoDestinatarioId" return-type="Collection">
<finder-column name="grupoDestinatarioId"/>
</finder>
</entity>
<entity name="GrupoDestinatario" table="PRT_GESTMSG_GRP_DESTINATARIO" uuid="true" remote-service="true" local-service="true">
<column name="grupoDestinatarioId" type="long" primary="true"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="userId" type="long"/>
<column name="nome" type="String"/>
<column name="finalidade" type="String"/>
<column name="userIdResponsaveis" type="String"/>
<column name="listaTemporaria" type="boolean"/>
<column name="dataFinalListaTemporaria" type="Date"/>
<column name="envioEmNomeLista" type="boolean"/>
<column name="userIdNomesLista" type="String"/>
<column name="listaModerada" type="boolean"/>
<column name="userIdListaModerada" type="String"/>
<column name="ativo" type="boolean"/>
<column name="dataCriacao" type="Date"/>
<column name="dataAtualizacao" type="Date"/>
<column name="tipoLista" type="int"/>
<finder name="TipoListaAtivo" return-type="Collection">
<finder-column name="tipoLista"/>
<finder-column name="ativo"/>
</finder>
<finder name="NomeTipoListaAtivo" return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario">
<finder-column name="nome"/>
<finder-column name="tipoLista"/>
<finder-column name="ativo"/>
</finder>
<finder name="GrupoDestinatarioIdArray" return-type="Collection">
<finder-column name="grupoDestinatarioId" arrayable-operator="OR"/>
</finder>
</entity>
<entity name="MensagemWorkflow" table="PRT_GESTMSG_MENSAGEM_WORKFLOW" uuid="true" remote-service="false" local-service="true">
<column name="mensagemWorkflowId" type="long" primary="true"/>
<column name="mensagemId" type="long"/>
<column name="userId" type="long"/>
<column name="status" type="int"/>
<column name="data" type="Date"/>
<column name="comentario" type="String"/>
<finder name="MensagemId" return-type="Collection">
<finder-column name="mensagemId"/>
</finder>
</entity>
<entity name="AnexoMensagem" table="PRT_GESTMSG_ANEXO_MENSAGEM" uuid="true" remote-service="false" local-service="true">
<column name="anexoMensagemId" type="long" primary="true"/>
<column name="mensagemId" type="long"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="userId" type="long"/>
<column name="dataCriacao" type="Date"/>
<column name="anexoUrl" type="String"/>
<column name="fileName" type="String"/>
<column name="versao" type="String"/>
<column name="contentType" type="String"/>
<column name="ativo" type="boolean"/>
<column name="anexoFileEntryId" type="long"/>
<column name="anexoPath" type="String"/>
<finder name="MensagemIdAtivo" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="ativo"/>
</finder>
</entity>
</service-builder>
\ No newline at end of file
create index IX_B2BB3C9B on PRT_GESTMSG_AGENDAMENTO (mensagemId);
create index IX_257A84BD on PRT_GESTMSG_AGENDAMENTO (mensagemId, dataCalendario);
create index IX_C3FC0321 on PRT_GESTMSG_AGENDAMENTO (mensagemId, situacaoEnvio);
create index IX_CBC3D426 on PRT_GESTMSG_AGENDAMENTO (mensagemId, tipoAgendamento);
create index IX_2AB99FFA on PRT_GESTMSG_AGENDAMENTO (mensagemId, tipoAgendamento, situacaoEnvio, agendamentoId);
create index IX_6358D27B on PRT_GESTMSG_AGENDAMENTO (situacaoEnvio);
create index IX_A0040395 on PRT_GESTMSG_AGENDAMENTO (situacaoEnvio, mensagemId);
create index IX_8DCA6213 on PRT_GESTMSG_AGENDAMENTO (uuid_);
create index IX_40EDA835 on PRT_GESTMSG_AGENDAMENTO (uuid_, companyId);
create unique index IX_36BCB7F7 on PRT_GESTMSG_AGENDAMENTO (uuid_, groupId);
create index IX_AAB7F445 on PRT_GESTMSG_ANEXO_MENSAGEM (mensagemId);
create index IX_6719BEDA on PRT_GESTMSG_ANEXO_MENSAGEM (mensagemId, ativo);
create index IX_EEF00829 on PRT_GESTMSG_ANEXO_MENSAGEM (uuid_);
create index IX_128785F on PRT_GESTMSG_ANEXO_MENSAGEM (uuid_, companyId);
create unique index IX_ECE18AA1 on PRT_GESTMSG_ANEXO_MENSAGEM (uuid_, groupId);
create index IX_D471496A on PRT_GESTMSG_GRP_DESTINATARIO (grupoDestinatarioId);
create index IX_CC3E6DC8 on PRT_GESTMSG_GRP_DESTINATARIO (nome, tipoLista, ativo);
create index IX_1794A67B on PRT_GESTMSG_GRP_DESTINATARIO (tipoLista, ativo);
create index IX_37E03B59 on PRT_GESTMSG_GRP_DESTINATARIO (uuid_);
create index IX_9779672F on PRT_GESTMSG_GRP_DESTINATARIO (uuid_, companyId);
create unique index IX_213FED71 on PRT_GESTMSG_GRP_DESTINATARIO (uuid_, groupId);
create index IX_475B6B70 on PRT_GESTMSG_MAIL_DESTINATARIO (grupoDestinatarioId);
create index IX_B767BFDF on PRT_GESTMSG_MAIL_DESTINATARIO (uuid_);
create unique index IX_A5CC8173 on PRT_GESTMSG_MENSAGEM (codigoMensagem);
create index IX_B0F07EF on PRT_GESTMSG_MENSAGEM (groupId);
create index IX_2CBB7E3C on PRT_GESTMSG_MENSAGEM (rascunho, userIdCriador);
create index IX_30363020 on PRT_GESTMSG_MENSAGEM (statusWorkflow);
create index IX_19EEBEAF on PRT_GESTMSG_MENSAGEM (userIdCriador);
create index IX_E8D3CA39 on PRT_GESTMSG_MENSAGEM (uuid_);
create index IX_25D1CC4F on PRT_GESTMSG_MENSAGEM (uuid_, companyId);
create unique index IX_4EAF1A91 on PRT_GESTMSG_MENSAGEM (uuid_, groupId);
create index IX_A8F9E8C9 on PRT_GESTMSG_MENSAGEM_WORKFLOW (mensagemId);
create index IX_A9A05125 on PRT_GESTMSG_MENSAGEM_WORKFLOW (uuid_);
create index IX_2B34A40 on PRT_GESTMSG_TEMPLATE (groupId);
create unique index IX_1C82330D on PRT_GESTMSG_TEMPLATE (groupId, nome);
create unique index IX_666E8BE8 on PRT_GESTMSG_TEMPLATE (nome, ativo);
create index IX_46966CCA on PRT_GESTMSG_TEMPLATE (uuid_);
create index IX_C114951E on PRT_GESTMSG_TEMPLATE (uuid_, companyId);
create unique index IX_225BCB20 on PRT_GESTMSG_TEMPLATE (uuid_, groupId);
\ No newline at end of file
create table PRT_GESTMSG_AGENDAMENTO (
uuid_ VARCHAR(75) null,
agendamentoId LONG not null primary key,
mensagemId LONG,
companyId LONG,
groupId LONG,
tipoAgendamento INTEGER,
dataCalendario DATE null,
dataInicio DATE null,
dataFim DATE null,
padraoRecorrencia INTEGER,
frequencia INTEGER,
diarioTodos BOOLEAN,
semanalDias VARCHAR(75) null,
mensalDiaFrequencia INTEGER,
dataAtualizacao DATE null,
dataEnvio DATE null,
situacaoEnvio INTEGER,
erroEnvio BOOLEAN,
mensagemErro VARCHAR(75) null
);
create table PRT_GESTMSG_ANEXO_MENSAGEM (
uuid_ VARCHAR(75) null,
anexoMensagemId LONG not null primary key,
mensagemId LONG,
companyId LONG,
groupId LONG,
userId LONG,
dataCriacao DATE null,
anexoUrl VARCHAR(255) null,
fileName VARCHAR(255) null,
versao VARCHAR(75) null,
contentType VARCHAR(75) null,
ativo BOOLEAN,
anexoFileEntryId LONG,
anexoPath VARCHAR(255) null
);
create table PRT_GESTMSG_GRP_DESTINATARIO (
uuid_ VARCHAR(75) null,
grupoDestinatarioId LONG not null primary key,
companyId LONG,
groupId LONG,
userId LONG,
nome VARCHAR(75) null,
finalidade TEXT null,
userIdResponsaveis VARCHAR(75) null,
listaTemporaria BOOLEAN,
dataFinalListaTemporaria DATE null,
envioEmNomeLista BOOLEAN,
userIdNomesLista VARCHAR(75) null,
listaModerada BOOLEAN,
userIdListaModerada VARCHAR(75) null,
ativo BOOLEAN,
dataCriacao DATE null,
dataAtualizacao DATE null,
tipoLista INTEGER
);
create table PRT_GESTMSG_MAIL_DESTINATARIO (
uuid_ VARCHAR(75) null,
emailDestinatarioId LONG not null primary key,
email VARCHAR(75) null,
grupoDestinatarioId LONG
);
create table PRT_GESTMSG_MENSAGEM (
uuid_ VARCHAR(75) null,
mensagemId LONG not null primary key,
companyId LONG,
groupId LONG,
templateId LONG,
grupoDestinatarioIds VARCHAR(255) null,
contaSaidaId LONG,
codigoMensagem VARCHAR(75) null,
assunto VARCHAR(255) null,
conteudo TEXT null,
prioridade INTEGER,
ativo BOOLEAN,
tipoEnvio INTEGER,
situacaoEnvio INTEGER,
nomeSolicitante VARCHAR(75) null,
userIdCriador LONG,
dataSolicitacao DATE null,
dataUltimoEnvio DATE null,
dataAlteracao DATE null,
rascunho BOOLEAN,
statusWorkflow INTEGER,
userIdWorkflow LONG,
dataStatusWorkflow DATE null,
comentarioWorkflow STRING null,
clonagemPai LONG,
literalAgendamento TEXT null,
userIdCancel LONG,
userIdAprovador LONG,
userIdReprovador LONG,
dataCancel DATE null,
service BOOLEAN
);
create table PRT_GESTMSG_MENSAGEM_WORKFLOW (
uuid_ VARCHAR(75) null,
mensagemWorkflowId LONG not null primary key,
mensagemId LONG,
userId LONG,
status INTEGER,
data_ DATE null,
comentario STRING null
);
create table PRT_GESTMSG_TEMPLATE (
uuid_ VARCHAR(75) null,
templateId LONG not null primary key,
companyId LONG,
groupId LONG,
userId LONG,
nome VARCHAR(255) null,
estilo INTEGER,
ativo BOOLEAN,
cabecalho TEXT null,
rodape TEXT null,
corpo TEXT null,
dataCriacao DATE null,
dataAtualizacao DATE null,
thumbnailFileEntryId LONG,
thumbnailURL VARCHAR(255) null
);
\ No newline at end of file
/*
jQuery Masked Input Plugin
Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com)
Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
Version: 1.4.1
*/
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b,c=navigator.userAgent,d=/iphone/i.test(c),e=/chrome/i.test(c),f=/android/i.test(c);a.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},autoclear:!0,dataName:"rawMaskFn",placeholder:"_"},a.fn.extend({caret:function(a,b){var c;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof a?(b="number"==typeof b?b:a,this.each(function(){this.setSelectionRange?this.setSelectionRange(a,b):this.createTextRange&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select())})):(this[0].setSelectionRange?(a=this[0].selectionStart,b=this[0].selectionEnd):document.selection&&document.selection.createRange&&(c=document.selection.createRange(),a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length),{begin:a,end:b})},unmask:function(){return this.trigger("unmask")},mask:function(c,g){var h,i,j,k,l,m,n,o;if(!c&&this.length>0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(""),function(a,b){"?"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger("unmask").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a<g.placeholder.length?a:0)}function q(a){for(;++a<n&&!j[a];);return a}function r(a){for(;--a>=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(o&&o.length&&o.length>a.length){for(A(!0);b.begin>0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.begin<l&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}else{for(A(!0);b.begin<n&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}h()}function v(){A(),B.val()!=E&&B.change()}function w(a){if(!B.prop("readonly")){var b,c,e,f=a.which||a.keyCode;o=B.val(),8===f||46===f||d&&127===f?(b=B.caret(),c=b.begin,e=b.end,e-c===0&&(c=46!==f?r(c):e=q(c-1),e=46===f?q(e):e),y(c,e),s(c,e-1),a.preventDefault()):13===f?v.call(this,a):27===f&&(B.val(E),B.caret(0,A()),a.preventDefault())}}function x(b){if(!B.prop("readonly")){var c,d,e,g=b.which||b.keyCode,i=B.caret();if(!(b.ctrlKey||b.altKey||b.metaKey||32>g)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(""))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++<e.length;)if(c=e.charAt(d-1),j[b].test(c)){C[b]=c,f=b;break}if(d>e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join("")===D?(B.val()&&B.val(""),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(""),function(a,b){return"?"!=a?i[a]?p(b):a:void 0}),D=C.join(""),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join("")}),B.one("unmask",function(){B.off(".mask").removeData(a.mask.dataName)}).on("focus.mask",function(){if(!B.prop("readonly")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){B.get(0)===document.activeElement&&(z(),a==c.replace("?","").length?B.caret(0,a):B.caret(a))},10)}}).on("blur.mask",v).on("keydown.mask",w).on("keypress.mask",x).on("input.mask paste.mask",function(){B.prop("readonly")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off("input.mask").on("input.mask",u),A()})}})});
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<liferay-portlet:renderURL var="pesquisaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/listagem.jsp"/>
<liferay-portlet:param name="acao" value="pesquisar"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="viewURL">
<liferay-portlet:param name="admin" value="true"/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/listagem.jsp"/>
</liferay-portlet:renderURL>
<div class="span10 context-pane">
<div id="selecao-template-wrapper">
<liferay-ui:success key="destinatario.sucesso-gravar" message="destinatario.sucesso-gravar"/>
<liferay-ui:success key="destinatario.sucesso-excluir" message="destinatario.sucesso-excluir"/>
<liferay-ui:success key="destinatario.sucesso-atualizar" message="destinatario.sucesso-atualizar"/>
<liferay-ui:header title="destinatario.header.listagem"/>
<%
String orderByCol = ParamUtil.getString(request, "orderByCol");
String orderByType = ParamUtil.getString(request, "orderByType");
String sortingOrder = orderByType;
if(orderByType.equals("desc")){
orderByType = "asc";
}else{
orderByType = "desc";
}
String nomeParam = "";
String tipoListaParam = "";
// String nomeParam = (!"".equals(ParamUtil.getString(request, "nomeListaDestinatarioSearch")) ? ParamUtil.getString(request, "nomeListaDestinatarioSearch")
// : ParamUtil.getString(request, "nome"));
if (!"".equals(ParamUtil.getString(request, "nomeListaDestinatarioSearch"))){
nomeParam = ParamUtil.getString(request, "nomeListaDestinatarioSearch");
} else if (!"".equals(ParamUtil.getString(request, "nome")) && "".equals(ParamUtil.getString(request, "operacao"))){
nomeParam = ParamUtil.getString(request, "nome");
}
if (!"".equals(ParamUtil.getString(request, "tipoLista"))){
tipoListaParam = ParamUtil.getString(request, "tipoLista");
} else if (!"".equals(ParamUtil.getString(request, "tipoListaParam")) && "".equals(ParamUtil.getString(request, "operacao"))){
tipoListaParam = ParamUtil.getString(request, "tipoListaParam");
} else {
tipoListaParam = "-1";
}
//String nomeParam = ParamUtil.getString(request, "nomeListaDestinatarioSearch");
PortletURL portletURL = renderResponse.createRenderURL();
portletURL.setParameter("nome", nomeParam);
portletURL.setParameter("tipoListaParam", tipoListaParam);
portletURL.setParameter("mvcPath", "/jsp/admin/destinatario/listagem.jsp");
portletURL.setParameter("redirect", viewURL);
%>
<div class="formulario-lista-dados">
<liferay-ui:search-container
emptyResultsMessage="destinatario.lista.vazia"
deltaConfigurable="false"
orderByType="<%=orderByType%>"
iteratorURL="<%=portletURL%>">
<aui:form name="fmSearchDestinatario" cssClass="search-terms" action="#">
<aui:input name="nomeListaDestinatarioSearch"
cssClass="label-mensagem-dados"
value="${param.nome}"
type="text"
inlineField="false"
inlineLabel="left"
label="destinatario.busca.campo.nome"/>
<input type="hidden" name="operacao" id="operacao" value="pesquisa"/>
<label class="control-label"><liferay-ui:message key="lista.tipos"/></label>
<% if ("0".equals(tipoListaParam)) {%>
<span id="radioDestinatario">
<aui:input checked="true" name="tipoLista" id="tipoDestinatario" value="0" label="destinatario.lista" type="radio" inlineField="true" inlineLabel="left"/>
<% } else {%>
<span id="radioDestinatario">
<aui:input name="tipoLista" id="tipoDestinatario" value="0" label="destinatario.lista" type="radio" inlineField="true" inlineLabel="left"/>
</span>
<% }%>
<% if ("1".equals(tipoListaParam)) {%>
<span id="radioConta">
<aui:input checked="true" name="tipoLista" id="contaSaida" value="1" label="destinatario.conta" type="radio" inlineField="true" inlineLabel="left" >
</aui:input>
</span>
<% } else {%>
<span id="radioConta">
<aui:input name="tipoLista" id="contaSaida" value="1" label="destinatario.conta" type="radio" inlineField="true" inlineLabel="left" >
</aui:input>
</span>
<% }%>
<div>
<br/>
<aui:button cssClass="pesquisa" type="submit" value="search" onClick="alert(document.get('_portletgestaomensagens_WAR_portletgestaomensagens_nomeListaDestinatarioSearch').value)"/>&nbsp;
<aui:button type="cancel" value="Limpar" onClick="limparFormulario();"/>
</div>
<liferay-ui:search-container-results>
<%
Map<Integer , List<GrupoDestinatario>> retorno = GrupoDestinatarioSearch.pesquisar(renderRequest , themeDisplay.getCompanyId(),
searchContainer.getStart() , searchContainer.getEnd() , ParamUtil.getString(request, "orderByCol") , false);
java.util.Map.Entry entry = retorno.entrySet().iterator().next();
List<GrupoDestinatario> lista = (List<GrupoDestinatario>) entry.getValue();
pageContext.setAttribute("results", lista);
pageContext.setAttribute("total", entry.getKey());
%>
</liferay-ui:search-container-results>
<liferay-ui:search-container-row
className="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario"
escapedModel="true"
keyProperty="grupoDestinatarioId"
modelVar="grupoDestinatario"
rowIdProperty="grupoDestinatarioId">
<liferay-portlet:renderURL varImpl="rowURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/formulario.jsp"/>
<liferay-portlet:param name="grupoDestinatarioId" value="<%= String.valueOf(grupoDestinatario.getGrupoDestinatarioId()) %>" />
</liferay-portlet:renderURL>
<liferay-ui:search-container-column-text
href="<%= rowURL.toString() %>"
name="nome_sortable"
orderableProperty="nome_sortable"
orderable="true"
property="nome"
cssClass="tabela-td-center"
/>
<liferay-ui:search-container-column-text
href="<%= rowURL.toString() %>"
name="Finalidade"
orderableProperty="Finalidade"
property="finalidade"
cssClass="tabela-td-center"
/>
<liferay-ui:search-container-column-text
href="<%= rowURL.toString() %>"
name="Tipo da Lista"
orderable="false"
property="descricaoTipoLista"
cssClass="tabela-td-center"
/>
<liferay-ui:search-container-column-text name="table.header.acoes" align="center" cssClass="tabela-td-center">
<liferay-ui:icon-menu>
<liferay-ui:icon image="edit" url="<%= rowURL.toString() %>" />
<liferay-portlet:actionURL var="deleteURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='GrupoDestinatarioExcluir'/>
<liferay-portlet:param name="redirect" value="${pesquisaURL}" />
<liferay-portlet:param name="grupoDestinatarioId" value="<%= String.valueOf(grupoDestinatario.getGrupoDestinatarioId()) %>" />
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/listagem.jsp"/>
</liferay-portlet:actionURL>
<liferay-ui:icon-delete url="${deleteURL}"/>
</liferay-ui:icon-menu>
</liferay-ui:search-container-column-text>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator />
</aui:form>
</liferay-ui:search-container>
</div>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "ADICIONAR_MENSAGEM") %>'>
<liferay-portlet:renderURL var="novaListaDestinatario">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/formulario.jsp"/>
</liferay-portlet:renderURL>
<div class="botoes-acao-wizard-wrapper clearfix">
<br/>
<div class="botao-wizard-wrapper">
<a href="${novaListaDestinatario}" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="destinatario.nova-lista"/>
<!-- <i class="icon-circle-arrow-right"></i> -->
</a>
</div>
</div>
</c:if>
<div>
</div>
</div>
<aui:script use="node, liferay-search-container">
Liferay.provide(
window,
'limparFormulario',
function() {
var tituloMensagemSearch = A.one('#<portlet:namespace />nomeListaDestinatarioSearch');
tituloMensagemSearch.val("");
var tipoDestintario = A.one('#<portlet:namespace />tipoDestinatario');
tipoDestintario.attr('checked',false);
var contaSaida = A.one('#<portlet:namespace />contaSaida');
contaSaida.attr('checked',false);
}
);
</aui:script>
<script type="text/javascript">
$('.btn-group.lfr-icon-menu').width(120);
$('.lfr-pagination-delta-selector').hide();
$('.table-sort-liner').children().attr('href', $('.table-sort-liner').children().attr('href').replace('_portletgestaomensagens_WAR_portletgestaomensagens_cur=' , '_portletgestaomensagens_WAR_portletgestaomensagens_cur=1&R=' ));
document.getElementById("<portlet:namespace />nomeListaDestinatarioSearch").focus();
</script>
\ No newline at end of file
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.search.UserSearch"%>
<%@ include file="/jsp/init.jsp" %>
<liferay-portlet:renderURL var="pesquisaURL" windowState="<%=LiferayWindowState.POP_UP.toString()%>">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/user-popup.jsp"/>
</liferay-portlet:renderURL>
<aui:form action="${pesquisaURL}" method="post" name="fmSearch" cssClass="search-terms">
<aui:input label="lista.usuario.nome" name="fullName" size="50" value="${param.fullName}" type="text" inlineField="true" />
<aui:input label="lista.usuario.email" name="emailAddress" size="50" value="${param.emailAddress}" type="text" inlineField="true" />
<aui:input type="hidden" name="tipoSelecao" value="${param.tipoSelecao}" />
<aui:button type="submit" value="search"/>
</aui:form>
<div class="separator"></div>
<%
PortletURL portletURL = renderResponse.createRenderURL();
portletURL.setParameter("fullName", ParamUtil.getString(request, "fullName"));
portletURL.setParameter("emailAddress", ParamUtil.getString(request, "emailAddress"));
portletURL.setParameter("tipoSelecao", ParamUtil.getString(request, "tipoSelecao"));
portletURL.setParameter("mvcPath", "/jsp/admin/destinatario/user-popup.jsp");
portletURL.setWindowState(LiferayWindowState.POP_UP);
%>
<aui:form name="fmUser" cssClass="search-results">
<liferay-ui:search-container
emptyResultsMessage="search.empty.usuarios"
delta="20" id="listaUsuarios"
deltaConfigurable="true"
iteratorURL="<%=portletURL%>"
rowChecker="<%= new RowChecker(renderResponse) %>">
<liferay-ui:search-container-results>
<%
Map<Integer , List<UserVO>> retorno = UserSearch.pesquisar(renderRequest, themeDisplay.getCompanyId(),
searchContainer.getStart() , searchContainer.getEnd() , ParamUtil.getString(request, "orderByCol"));
java.util.Map.Entry entry = retorno.entrySet().iterator().next();
List<UserVO> lista = (List<UserVO>) entry.getValue();
pageContext.setAttribute("results", lista);
pageContext.setAttribute("total", entry.getKey());
%>
</liferay-ui:search-container-results>
<liferay-ui:search-container-row
className="br.mp.mprj.portal.portlet.gestaomensagens.search.vo.UserVO"
escapedModel="true"
keyProperty="userId"
modelVar="users"
rowIdProperty="userId"
>
<aui:input name="userSel_${users.userId}_fullName" type="hidden" value="${users.fullName}"/>
<aui:input name="userSel_${users.userId}_emailAddress" type="hidden" value="${users.emailAddress}"/>
<liferay-ui:search-container-column-text
name="Nome"
property="fullName"
/>
<liferay-ui:search-container-column-text
name="Email"
property="emailAddress"
/>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator />
</liferay-ui:search-container>
<aui:button cssClass="btn-primary"
type="button"
value="atualizar.usuario.associacao"
onClick="javascript:selecionarUsuarios()"/>
</aui:form>
<aui:script use="node">
Liferay.provide(
window,
'selecionarUsuarios',
function() {
var tipoSelecao = '<%=ParamUtil.getString(request, "tipoSelecao")%>';
var idsSel = Liferay.Util.listChecked(document.<portlet:namespace/>fmUser).split(',');
var rowAdd = [];
for (var i = 0; i < idsSel.length; i++) {
var id = idsSel[i];
if (id == 'on' || id == '') continue;
var fullName = A.one("#<portlet:namespace/>userSel_" + id + "_fullName").val();
var emailAddress = A.one("#<portlet:namespace/>userSel_" + id + "_emailAddress").val();
var obj = {
id: id,
fullName: fullName,
emailAddress: emailAddress
}
rowAdd.push(obj);
}
if (tipoSelecao == 'R'){
Liferay.Util.getOpener().associarUsuariosResponsaveis(rowAdd);
} else if (tipoSelecao == 'M'){
Liferay.Util.getOpener().associarUsuariosModeracao(rowAdd);
} else if (tipoSelecao == 'N'){
Liferay.Util.getOpener().associarUsuariosEmNome(rowAdd);
}
},
['liferay-util-list-fields']
);
</aui:script>
\ No newline at end of file
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalServiceUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.impl.MensagemImpl"%>
<%@page import="javax.mail.search.MessageIDTerm"%>
<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.workflow.StatusWorkflowEnum"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.enums.SituacaoEnvioEnum"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalServiceUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem"%>
<%
Mensagem mensagem = null;
if (ParamUtil.getBoolean(renderRequest, "clonar")){
mensagem = MensagemLocalServiceUtil.clonaMensagem(ParamUtil.getLong(renderRequest, "mensagemId"), renderRequest);
portletSession.setAttribute("mensagem", mensagem);
} else {
mensagem = MensagemLocalServiceUtil.getMensagem(renderRequest);
}
boolean rascunhoRecuperado = GetterUtil.getBoolean((Boolean)portletSession.getAttribute("rascunhoRecuperado")) || (mensagem != null && mensagem.getRascunho());
boolean edicao = ParamUtil.getBoolean(renderRequest, "edicao") || (portletSession.getAttribute("edicao") != null && ((Boolean) portletSession.getAttribute("edicao")) ? true : false);
if (edicao){
portletSession.setAttribute("edicao", true);
} else {
portletSession.removeAttribute("edicao");
}
boolean revisao = false;
if (mensagem!= null && (mensagem.getStatusWorkflow() == StatusWorkflowEnum.PENDENTE_REVISAO.getStatus() || edicao)){
revisao = true;
rascunhoRecuperado = true;
}
pageContext.setAttribute("mensagem", mensagem);
Template template = null;
if (mensagem != null) {
template = mensagem.getTemplate();
pageContext.setAttribute("template", template);
if (!mensagem.isNew() && rascunhoRecuperado) {
pageContext.setAttribute("rascunhoRecuperado", rascunhoRecuperado);
}
if (mensagem.getStatusWorkflow() == StatusWorkflowEnum.PENDENTE_REVISAO.getStatus() && revisao){
pageContext.setAttribute("pendenteRevisao", true);
}
}
List<AnexoMensagem> anexos = null;
if (mensagem != null){
anexos = AnexoMensagemLocalServiceUtil.recuperaAnexosPorMensagem(mensagem.getMensagemId());
}
%>
<c:if test="${rascunhoRecuperado eq true}">
<liferay-portlet:renderURL var="descartarRedirectURL">
<!-- <liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="1"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="edicao" value=""/> -->
<portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp" />
<portlet:param name="navigation" value="preencher-mensagem" />
<portlet:param name="rascunho" value="true" />
<portlet:param name="primeiroPasso" value="true" />
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="descartarRascunhoURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='WizardMensagemDescartar'/>
<liferay-portlet:param name="mensagemId" value='${mensagem.mensagemId}'/>
<liferay-portlet:param name="redirect" value='${descartarRedirectURL}'/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="edicao" value="<%=String.valueOf(edicao)%>"/>
</liferay-portlet:actionURL>
<div class="alerta-rascunho-recuperado alert alert-warn">
<liferay-ui:message key="wizard.rascunho.recuperado"/>
<a href="${descartarRascunhoURL}"><liferay-ui:message key="wizard.rascunho.descartar"/></a>
</div>
</c:if>
<c:if test="${pendenteRevisao eq true}">
<div class="alerta-rascunho-recuperado alert alert-warn">
<liferay-ui:message key="wizard.revisando.mensagem"/>
</div>
</c:if>
<%@ include file="/jsp/admin/includes/wizard-navegacao.jspf" %>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<c:set var="portletImgFolder" value="${pageContext.request.contextPath}/images/preview-dispositivos"/>
<div id="preview-dispositivos" class="">
<aui:input name="htmlPreviewParametro" value='<%=ParamUtil.getString(request, "html")%>' type="hidden"/>
<div class="titulo" style="font-family:Verdana;font-size:10.0pt;">
<c:set var="tituloPreviewPadrao">
<liferay-ui:message key='preview.titulo-padrao'/>
</c:set>
<c:set var="tituloParam">
<%=ParamUtil.getString(request, "tituloPreview")%>
</c:set>
${empty tituloParam ? tituloPreviewPadrao : tituloParam}
</div>
<div class="corpo">
<div class="tipos-wrapper">
<div class="dispositivo desktop" data-tipo="desktop">
<div class="icone-wrapper">
<img src="${portletImgFolder}/desktop.png" class="icone">
</div>
<span class="nome" style="font-family:Verdana;font-size:10.0pt;"><liferay-ui:message key="preview.dispositivo.desktop"/></span>
</div>
<div class="dispositivo mobile" data-tipo="mobile">
<div class="icone-wrapper">
<img src="${portletImgFolder}/mobile.png" class="icone">
</div>
<span class="nome" style="font-family:Verdana;font-size:10.0pt;"><liferay-ui:message key="preview.dispositivo.mobile"/></span>
</div>
<div class="dispositivo tablet" data-tipo="tablet">
<div class="icone-wrapper">
<img src="${portletImgFolder}/tablet.png" class="icone">
</div>
<span class="nome" style="font-family:Verdana;font-size:10.0pt;"><liferay-ui:message key="preview.dispositivo.tablet"/></span>
</div>
<div style="clear: both;"></div>
</div>
<div style="clear: both;"></div>
<div id="preview-conteudo">
</div>
</div>
</div>
<aui:script use="node">
var containerPreview = A.one("#preview-dispositivos");
var objConteudo = A.one("#preview-conteudo");
var botoesDispositivos = A.all(".tipos-wrapper .dispositivo");
var hiddenHtmlParametro = A.one("#<portlet:namespace />htmlPreviewParametro");
var tipoSelecionado;
//atributos com dimensoes de cada dispositivo
var dispositivos = [
{
nome : 'desktop',
largura : '100%',
altura : '1024px'
},
{
nome : 'mobile',
largura: '480px',
altura : '640px'
},
{
nome : 'tablet',
largura: '768px',
altura : '1024px'
}
];
//define o evento para cada icone que representa um dispositivo
//executando a funcao previewConteudo, passando como parametro definido
//no atributo data-tipo.
botoesDispositivos.each(function(){
var obj = this;
obj.on('click', function(){
<portlet:namespace />previewConteudo(obj.attr("data-tipo"));
});
});
function getDispositivo(nome) {
if (nome == undefined) {
nome = tipoSelecionado;
}
if (nome != undefined) {
for (var i = 0; i < dispositivos.length; i++) {
if (dispositivos[i].nome == nome) {
return dispositivos[i];
}
}
}
return undefined;
}
function definirTipoSelecionado(nomeDispositivo) {
if (nomeDispositivo == undefined) return;
//desmarcar o ativo
botoesDispositivos.removeClass('ativo');
//definir o ativo de acordo com o dispositivo atual
A.one('.tipos-wrapper .dispositivo.' + nomeDispositivo).addClass('ativo');
tipoSelecionado = nomeDispositivo;
}
//funcao para atualizar o preview, a partir do click de algum dispositivo ou outro elemento
Liferay.provide(
window,
'<portlet:namespace />previewConteudo',
function(nomeDispositivo, conteudo) {
definirTipoSelecionado(nomeDispositivo);
var dispositivo = getDispositivo(nomeDispositivo);
if (dispositivo != undefined) {
//obter valor numerico da configuracao do dispositivo, de acordo com o tipo: % ou px
var valLarguraDisposivo = dispositivo.largura.indexOf('%') >= 0 ? containerPreview.width() : parseInt(dispositivo.largura, 10);
//verifica se o container principal, com os componentes de pre-visualizacao, comportara a largura do dispostivo
//sem exceder sua largura, caso contrario, define o tamanho do corpo do preview para 100%
objConteudo.setStyle('width', (containerPreview.width() >= valLarguraDisposivo ? dispositivo.largura : '100%'));
//objConteudo.setStyle('height', dispositivo.altura);
objConteudo.setStyle('max-height', dispositivo.altura);
if (conteudo != undefined) {
objConteudo.html(conteudo);
}
else if (window.definirConteudoPreview != undefined) {
conteudo = window.definirConteudoPreview();
if (conteudo != undefined) {
objConteudo.html(conteudo);
}
}
else if (hiddenHtmlParametro.val() != '') {
objConteudo.html(hiddenHtmlParametro.val());
}
else {
console.error('Conteúdo não definido!')
}
}
else {
console.error('Dispositivo não encontrado!');
}
}
);
//versao da funcao sem prefixo com portletnamespace.
Liferay.provide(
window,
'previewConteudo',
function(nomeDispositivo, conteudo) {
<portlet:namespace />previewConteudo(nomeDispositivo, conteudo);
}
);
//funcao para ser executado a partir de eventos definidos no CKEditor atraves da tag
//aui:input-editor, evitando utilizar o valor no parametro da funcao, que eh definido
//por padrao pelo proprio evento disparado pelo editor, com o valor do campo.
//Neste caso, esta informacao nao eh necessaria e pode causar problemas nas funcionalidades do preview,
//ja que o parametro padrao do preview eh o nome do dispositivo, e o evento disparado pelo editor manda todo
//o conteudo do campo!
Liferay.provide(
window,
'<portlet:namespace />previewConteudoEventoEditor',
function(conteudoEditor) {
//executa a funcao para pre-visualizar o conteudo com base nos editores HTML da pagina,
//e nao apenas o conteudo do editor que disparou o evento
<portlet:namespace />previewConteudo();
}
);
//inicializar com o dispositivo padrao: desktop
<portlet:namespace />previewConteudo('desktop');
</aui:script>
<%-- Referencia p/ navegacao lateral:
/liferay-portal-src-6.2-ee-sp11/portal-web/docroot/html/portlet/journal/view_folders.jsp
--%>
<%
String navigation = ParamUtil.getString(request, "navigation", "moduloPadrao");
%>
<div class="span2 navigation-pane">
<div id="<portlet:namespace/>menuLateralContainer" class="menu-lateral-wrapper">
<div id="<portlet:namespace />folderContainer">
<aui:nav cssClass="nav-list well">
<c:if test="${not empty parentTitle}">
<li class="nav-header">
${parentTitle}
</li>
</c:if>
<!-- Inicio do item de menu do modulo -->
<liferay-portlet:renderURL varImpl="viewModuloTemplateURL">
<portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp" />
<portlet:param name="navigation" value="preencher-mensagem" />
<portlet:param name="rascunho" value="true" />
<portlet:param name="primeiroPasso" value="true" />
</liferay-portlet:renderURL>
<liferay-portlet:renderURL varImpl="viewModuloDestinatarioURL">
<portlet:param name="mvcPath" value="/jsp/admin/destinatario/listagem.jsp" />
<portlet:param name="navigation" value="template" />
</liferay-portlet:renderURL>
<liferay-portlet:renderURL varImpl="viewModuloPainelMensagemURL">
<portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel.jsp" />
<portlet:param name="navigation" value="template" />
</liferay-portlet:renderURL>
<% Map<String, Object> dataView = new HashMap<String, Object>(); %>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "LISTAR_TEMPLATE") %>'>
<% dataView.put("navigation", "preencher-mensagem"); %>
<liferay-ui:app-view-navigation-entry
dataView="<%= dataView %>"
entryTitle='Mensagem e Modelos'
selected='<%= navigation.equals("preencher-mensagem") %>'
viewURL="<%= viewModuloTemplateURL.toString() %>"
/>
</c:if>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "MANTER_LISTAS") %>'>
<%
dataView = new HashMap<String, Object>();
dataView.put("navigation", "destinatario");
%>
<liferay-ui:app-view-navigation-entry
dataView="<%= dataView %>"
entryTitle='Gerenciar Listas'
selected='<%= navigation.equals("destinatario") %>'
viewURL="<%= viewModuloDestinatarioURL.toString() %>"
/>
</c:if>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "LISTAR_PAINEL_APROVACAO") %>'>
<%
dataView = new HashMap<String, Object>();
dataView.put("navigation", "painel-mensagem");
%>
<liferay-ui:app-view-navigation-entry
dataView="<%= dataView %>"
entryTitle='Painel de Mensagens'
selected='<%= navigation.equals("painel-mensagem") %>'
viewURL="<%= viewModuloPainelMensagemURL.toString() %>"
/>
</c:if>
<!-- Termino do item de menu do modulo -->
</aui:nav>
</div>
</div>
</div>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<liferay-portlet:renderURL var="pesquisaURL" windowState="<%=LiferayWindowState.POP_UP.toString()%>">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/destinatario-popup.jsp"/>
</liferay-portlet:renderURL>
<%
String orderByCol = ParamUtil.getString(request, "orderByCol");
String orderByType = ParamUtil.getString(request, "orderByType");
String sortingOrder = orderByType;
if(orderByType.equals("desc")){
orderByType = "asc";
}else{
orderByType = "desc";
}
String nomeParam = "";
if (!"".equals(ParamUtil.getString(request, "nomeListaDestinatarioSearch"))){
nomeParam = ParamUtil.getString(request, "nomeListaDestinatarioSearch");
} else if (!"".equals(ParamUtil.getString(request, "nome")) && "".equals(ParamUtil.getString(request, "operacao"))){
nomeParam = ParamUtil.getString(request, "nome");
}
PortletURL portletURL = renderResponse.createRenderURL();
portletURL.setParameter("nome", nomeParam);
portletURL.setParameter("tipoListaParam", "0");
portletURL.setParameter("mvcPath", "/jsp/admin/mensagem/destinatario-popup.jsp");
portletURL.setWindowState(LiferayWindowState.POP_UP);;
%>
<aui:form action="${pesquisaURL}" method="post" name="fmSearch" cssClass="search-terms">
<aui:input name="tipoLista" value="0" type="hidden" />
<aui:input name="nomeListaDestinatarioSearch"
cssClass="label-mensagem-dados"
value="${param.nome}"
type="text"
inlineField="false"
inlineLabel="left"
label="destinatario.busca.campo.nome"/>
<aui:button type="submit" value="search"/>
</aui:form>
<div class="separator"></div>
<aui:form name="fmDestinatarios" cssClass="search-results">
<liferay-ui:search-container
emptyResultsMessage="destinatario.lista.vazia"
deltaConfigurable="false"
delta="10"
orderByType="<%=orderByType %>"
iteratorURL="<%=portletURL%>"
rowChecker="<%= new RowChecker(renderResponse) %>">
<liferay-ui:search-container-results>
<%
Map<Integer , List<GrupoDestinatario>> retorno = GrupoDestinatarioSearch.pesquisar(renderRequest , themeDisplay.getCompanyId(),
searchContainer.getStart() , searchContainer.getEnd() , ParamUtil.getString(request, "orderByCol"), false);
java.util.Map.Entry entry = retorno.entrySet().iterator().next();
List<GrupoDestinatario> lista = (List<GrupoDestinatario>) entry.getValue();
pageContext.setAttribute("results", lista);
pageContext.setAttribute("total", entry.getKey());
%>
</liferay-ui:search-container-results>
<liferay-ui:search-container-row
className="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario"
escapedModel="true"
keyProperty="grupoDestinatarioId"
modelVar="grupoDestinatario"
rowIdProperty="grupoDestinatarioId">
<aui:input name="destinatario_${grupoDestinatario.grupoDestinatarioId}_nome" type="hidden" value="${grupoDestinatario.nome}"/>
<input type="hidden" name="operacao" id="operacao" value="pesquisa"/>
<liferay-ui:search-container-column-text
name="Nome"
orderable="false"
property="nome"
cssClass="tabela-td-center"
/>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator />
</liferay-ui:search-container>
<aui:button cssClass="btn-primary"
type="button"
value="atualizar-associacao-destinatarios"
onClick="javascript:selecionarRegistros()"/>
</aui:form>
<aui:script use="node">
Liferay.provide(
window,
'selecionarRegistros',
function() {
//cria um array de objetos com as informações dos usuários selecionados,
//para que sejam incluídos na página que originou o popup, para futura persistência na base.
var idsSel = Liferay.Util.listChecked(document.<portlet:namespace/>fmDestinatarios).split(',');
var rowAdd = [];
for (var i = 0; i < idsSel.length; i++) {
var id = idsSel[i];
if (id == 'on' || id == '') continue;
//campos hidden criados através do componente searchContainer
var nome = A.one("#<portlet:namespace/>destinatario_" + id + "_nome").val();
var obj = {
id: id,
nome: nome
}
rowAdd.push(obj);
}
Liferay.Util.getOpener().associarDestinatarios(rowAdd);
},
['liferay-util-list-fields']
);
</aui:script>
<script>
$('.lfr-pagination-delta-selector').hide();
</script>
<%@page import="com.liferay.portal.theme.ThemeDisplay"%>
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<style>
.delta-selector,.page-selector {
display: none
}
</style>
<div class="span10 context-pane">
<liferay-ui:success key="template-sucesso-gravar" message="template.sucesso-gravar"/>
<%@ include file="/jsp/admin/includes/carregar-dados-wizard.jspf" %>
<aui:model-context bean="<%= mensagem %>" model="<%= Mensagem.class %>" />
<%
String conteudoEditor = (mensagem != null ? mensagem.getConteudo() : StringPool.BLANK);
if (template != null && template.getEstilo() == 1 && conteudoEditor == ""){
conteudoEditor = template.getCorpo();
}
boolean papelAprovador = WorkflowUtil.isAprovador(renderRequest);
%>
<div class="formulario-mensagem-dados">
<liferay-ui:header title="mensagem.header.formulario"/>
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/pre-visualizar.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="3"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="paginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="tipoListaParam" value="0"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="formularioMensagemURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="paginaAnteriorURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="1"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="processarPassoURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='WizardMensagemDados'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:actionURL>
<aui:form name="fmDadosMensagem" action="${processarPassoURL}" method="post" enctype="multipart/form-data">
<aui:input name="redirect" value="${proximaPaginaURL}" type="hidden"/>
<aui:input name="rascunho" value="${param.rascunho}" type="hidden"/>
<aui:input name="templateId" value="${template.templateId}" type="hidden"/>
<aui:input name="goBack" value="${paginaAnteriorURL}" type="hidden" />
<input type="hidden" name="temAnexos" id="temAnexos" value="0"/>
<aui:fieldset>
<% if (papelAprovador && !revisao) { %>
<aui:input name="checkAprovacao" label="mensagem.aprovacao.direta" type="checkbox" checked="${mensagem != null && mensagem.statusWorkflow == 0}"/>
<% }%>
<aui:input name="nomeSolicitante"
type="text"
label="mensagem.solicitante"
required="true"
inlineLabel="left"
showRequiredLabel="false"
wrapperCssClass="label-mensagem-dados"
cssClass="span6">
<aui:validator name="maxLength">75</aui:validator>
</aui:input>
<aui:field-wrapper cssClass="label-mensagem-dados form-inline container-destinatarios">
<label class="control-label">
<liferay-ui:message key="mensagem.destinatarios"/>
</label>
<div class="lista-destinatarios-wrapper">
<div class="alert alert-error validacao destinatario"><liferay-ui:message key="mensagem.validacao.erro.destinatario"/></div>
<liferay-ui:icon
cssClass="selecionar-destinatarios"
iconCssClass="icon-search"
id="selectDestinatarioLink"
label="<%= true %>"
linkCssClass="btn"
message="mensagem.selecionar-destinatarios"
url="javascript:;"
/>
<liferay-ui:search-container
headerNames="Nome"
rowChecker="<%= new RowChecker(renderResponse) %>">
<liferay-ui:search-container-results>
<%
List<GrupoDestinatario> lista = GrupoDestinatarioLocalServiceUtil
.findByGrupoDestinatarioIdArray(
mensagem.getGrupoDestinatarioIds());
if (lista != null){
pageContext.setAttribute("results", lista);
pageContext.setAttribute("total", lista.size());
}
%>
</liferay-ui:search-container-results>
<liferay-ui:search-container-row
className="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario"
escapedModel="true"
keyProperty="grupoDestinatarioId"
modelVar="grupoDestinatario"
rowIdProperty="grupoDestinatarioId">
<liferay-ui:search-container-column-text
name="Nome"
orderable="false"
property="nome"
cssClass="tabela-td-center"
/>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator paginate="<%=false%>"/>
</liferay-ui:search-container>
<aui:button cssClass="remover-destinatarios" type="button" value="delete" onClick="javascript:excluirDestinatarios()"/>
</div>
<div class="clearfix"></div>
</aui:field-wrapper>
<div class="label-mensagem-dados">
<aui:select name="contaSaidaId"
label="mensagem.conta-saida"
required="true"
inlineLabel="left"
showRequiredLabel="false">
<aui:option value=""><liferay-ui:message key="mensagem.opcao.conta-saida"/></aui:option>
<c:forEach var="contaSaida" items="<%=GrupoDestinatarioSearch.pesquisar(renderRequest ,themeDisplay.getCompanyId(), TipoListaEnum.CONTA_SAIDA.getId(), true)%>">
<aui:option value="${contaSaida.grupoDestinatarioId}">${contaSaida.nome}</aui:option>
</c:forEach>
</aui:select>
<aui:select name="prioridadeId"
label="mensagem.prioridade"
required="true"
inlineLabel="left"
inlineField="false"
showRequiredLabel="false">
<aui:option value="0"><liferay-ui:message key="mensagem.prioridade.baixa"/></aui:option>
<aui:option value="1"><liferay-ui:message key="mensagem.prioridade.alta"/></aui:option>
</aui:select>
</div>
<aui:input name="assunto"
type="text"
label="mensagem.assunto"
required="true"
inlineLabel="left"
showRequiredLabel="false"
wrapperCssClass="label-mensagem-dados"
cssClass="span6">
<aui:validator name="maxLength">255</aui:validator>
</aui:input>
<div class="alert alert-success" style="display:none;" id="div_msg_conteudo_editado">
<liferay-ui:message key="mensagem.conteudo.editado"/>
</div>
<div class="alert alert-error validacao conteudo"><liferay-ui:message key="mensagem.validacao.erro.conteudo"/></div>
<button id="myBtn" class="btn taglib-icon"><liferay-ui:message key="mensagem.editar.conteudo"/></button>
<input type="file" id="file" name="uploadedFile" multiple="multiple" style="display: none;">
<input type="button" class="btn taglib-icon" value="Anexar arquivos..." onclick="document.getElementById('file').click();" />
<div id="myModal" class="modal-message">
<div class="modal-message-content">
<span class="close-message"><liferay-ui:message key="mensagem.edicao.salvar"/></span>
<aui:field-wrapper label="mensagem.conteudo" cssClass="conteudo-wrapper">
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorConteudo" %>'
toolbarSet="liferay-article"
name="editorConteudo"/>
<aui:input name="conteudo" type="hidden"/>
</aui:field-wrapper>
</div>
</div>
<div>
<% if (anexos != null && anexos.size() > 0 ) {%>
<div>
<p></p>
<p><strong><liferay-ui:message key="anexos.visualizacao"/>:</strong></p>
<table class="table table-bordered table-hover table-striped">
<% for (AnexoMensagem anexo : anexos) {%>
<liferay-portlet:actionURL varImpl="removerAnexo">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='AnexoMensagemExcluir'/>
<liferay-portlet:param name="redirect" value="${formularioMensagemURL}" />
<liferay-portlet:param name="anexoMensagemId" value="<%= String.valueOf(anexo.getAnexoMensagemId()) %>" />
</liferay-portlet:actionURL>
<tr>
<td>
<a href="<%=anexo.getAnexoUrl()%>"><%=anexo.getFileName()%></a>
</td>
<td >
<a href="${removerAnexo}" ><liferay-ui:message key="anexo.remover"/></a>
</td>
</tr>
<%} %>
</table>
</div>
<%} %>
</div>
<div id="fileList"></div>
</aui:fieldset>
<hr/>
</aui:form>
<div class="botoes-acao-wizard-wrapper clearfix">
<div class="botao-wizard-wrapper lado-esquerdo">
<a href="javascript:window.location.href = $('#<portlet:namespace/>goBack').val()" id="<portlet:namespace/>btAnterior" class="botao-wizard anterior">
<i class="icon-circle-arrow-left"></i>
<liferay-ui:message key="wizard.navegacao.botao.template.selecionar"/>
</a>
</div>
<div class="botao-wizard-wrapper lado-direito">
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="wizard.navegacao.botao.mensagem.pre-visualizar"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
<liferay-portlet:renderURL var="selDestinatariosURL" windowState="<%=LiferayWindowState.POP_UP.toString()%>">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/destinatario-popup.jsp"/>
<liferay-portlet:param name="tipoLista" value="0"/>
</liferay-portlet:renderURL>
<aui:script use="node,liferay-search-container">
var dialogId = 'dialogSelDestinatarios';
var searchContainer = Liferay.SearchContainer.get('<portlet:namespace />grupoDestinatariosSearchContainer');
//template para o checkbox a ser adicionado na tabela de resultados
var templateChkBoxSearch = "<input name='<portlet:namespace/>rowIds' type='checkbox' value='_ID_' onclick='Liferay.Util.checkAllBox(AUI().one(this).ancestor('.table'), '<portlet:namespace/>rowIds', '<portlet:namespace/>allRowIds');AUI().one(this).ancestor('tr:not(.lfr-template)').toggleClass('info');'>";
var hiddenConteudo = A.one("#<portlet:namespace />conteudo");
A.one("#<portlet:namespace/>btProximo").on('click', function() {
gravarDadosMensagem('${proximaPaginaURL}');
});
A.one("#file").on('change', function() {
$("#temAnexos").val(1);
gravarDadosMensagem('${paginaURL}');
});
A.one('#<portlet:namespace />selectDestinatarioLink', true).on(
'click',
function(event) {
exibirSelDestinatarioPopup();
}
);
function atualizarInputsHTML() {
//atualizar o valor dos campos hidden com o que estiver informado no CKEditor HTML
hiddenConteudo.val(window.<portlet:namespace />editorConteudo.getHTML());
}
function gravarDadosMensagem(urlRedirect) {
atualizarInputsHTML();
if (validarForm()) {
A.one('#<portlet:namespace/>redirect').val(urlRedirect);
submitForm(document.<portlet:namespace/>fmDadosMensagem);
}
}
function validarForm() {
exibirMsgValidadaoEditor(false);
if (hiddenConteudo.val() == '') {
exibirMsgValidadaoEditor(true, 'conteudo');
return false;
}
else if (searchContainer.getData() == '') {
exibirMsgValidadaoEditor(true, 'destinatario');
window.scroll(0,0);
return false;
}
return true;
}
Liferay.provide(
window,
'anexar',
function() {
gravarDadosMensagem('${paginaURL}');
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorConteudo',
function() {
window.<portlet:namespace />editorConteudo.setHTML("<%= UnicodeFormatter.toString(conteudoEditor) %>");
}
);
Liferay.provide(
window,
'associarDestinatarios',
function(destinatarios) {
Liferay.Util.getWindow(dialogId).hide();
if (destinatarios != undefined && destinatarios != null) {
for (var i = 0; i < destinatarios.length; i++) {
var dest = destinatarios[i];
if (possuiDestinatario(dest.id)) continue;
var rowColumns = [];
rowColumns.push(templateChkBoxSearch.replace("_ID_", dest.id));
rowColumns.push(dest.nome);
$(".validacao.destinatario").hide();
searchContainer.addRow(rowColumns, dest.id);
searchContainer.updateDataStore();
}
ocultarExibirAlertaSemDestinatario(false);
ocultarExibirBtExclusao(searchContainer.getData() != '');
}
}
);
Liferay.provide(
window,
'exibirSelDestinatarioPopup',
function() {
Liferay.Util.openWindow({
dialog: {
centered: true,
modal: true
},
id: dialogId,
title: "<liferay-ui:message key='mensagem.selecionar-destinatarios' />",
uri: '${selDestinatariosURL}'
});
}
);
function possuiDestinatario(destinatarioId) {
//verificar se o ID já foi selecionado.
//caso já exista, retorna true.
var ids = searchContainer.getData(true); //retorna um array (parâmetro true)
var index = A.Array.indexOf(ids, destinatarioId.toString());
return (index > -1);
}
function ocultarExibirAlertaSemDestinatario(exibir) {
var div = A.one(".alert-info.grupo-destinatario");
if (div != null) {
if (exibir) {
div.show();
}
else {
div.hide();
}
}
}
Liferay.provide(
window,
'excluirDestinatarios',
function() {
//cria um array de objetos com as informações dos destinatarios selecionados,
//para que sejam incluídos na página que originou o popup, para futura persistência na base.
var idsSel = Liferay.Util.listChecked(document.<portlet:namespace/>fmDadosMensagem).split(',');
if (idsSel != null) {
for (var i = 0; i < idsSel.length; i++) {
var id = idsSel[i];
if (id == 'on' || id == '') continue;
//obter o elemento TR relacionado com o checkbox, para exclusao
var tr = A.one("input[name='<portlet:namespace/>rowIds'][value='" + id + "']").ancestor("tr");
searchContainer.deleteRow(tr, id);
}
}
ocultarExibirBtExclusao(searchContainer.getData() != '');
},
['liferay-util-list-fields']
);
function ocultarExibirBtExclusao(exibir) {
var div = A.one("button.remover-destinatarios");
if (div != null) {
div.setStyle("display", (exibir == true ? "block" : "none"));
}
}
// Get the modal
var modal = document.getElementById('myModal');
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close-message")[0];
// When the user clicks the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
var altura = $('.modal-message-content').height() - 130;
$('.cke_reset').css('min-height',altura + 'px');
return false;
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
document.getElementById("div_msg_conteudo_editado").style.display = "block";
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
document.getElementById("div_msg_conteudo_editado").style.display = "block";
modal.style.display = "none";
}
}
$(document).ready(function(){
$(window).resize(function(){
var altura = $('.modal-message-content').height() - 130;
$('.cke_reset').css('min-height',altura + 'px');
});
});
ocultarExibirBtExclusao(searchContainer.getData() != '');
document.getElementById('<portlet:namespace/>prioridadeId').value = '<%=mensagem.getPrioridade()%>';
</aui:script>
<script type="text/javascript">
document.getElementById("<portlet:namespace />nomeSolicitante").focus();
</script>
\ No newline at end of file
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalServiceUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem"%>
<%@ include file="/jsp/init.jsp"%>
<%@ page import="com.liferay.portal.kernel.util.StringBundler" %>
<%
Mensagem mensagem = MensagemLocalServiceUtil.getMensagem(ParamUtil.getLong(renderRequest, "mensagemId"));
pageContext.setAttribute("mensagem", mensagem);
StringBundler sb = null;
String nomeRemetente = "";
if (mensagem != null) {
if (mensagem.getTemplate() == null && mensagem.getTemplateId() > 0){
mensagem.setTemplate(TemplateLocalServiceUtil.getTemplate(mensagem.getTemplateId()));
Template template = null;
if (mensagem != null) {
template = mensagem.getTemplate();
pageContext.setAttribute("template", template);
}
}
long[] destIds = GetterUtil.getLongValues(mensagem.getGrupoDestinatarioIds().split("\\s"));
List<GrupoDestinatario> destinatarios = new ArrayList<GrupoDestinatario>();
for (long id : destIds) {
destinatarios.add(GrupoDestinatarioLocalServiceUtil.getGrupoDestinatario(id));
}
sb = new StringBundler(destinatarios.size() * 2);
for (int i = 0; i < destinatarios.size(); i++) {
GrupoDestinatario dest = destinatarios.get(i);
if (i > 0) {
sb.append(StringPool.COMMA + StringPool.SPACE);
}
sb.append(dest.getNome());
}
GrupoDestinatario remetente = GrupoDestinatarioLocalServiceUtil.getGrupoDestinatario(mensagem.getContaSaidaId());
nomeRemetente = remetente.getNome();
}
List<AnexoMensagem> anexos = null;
if (mensagem != null){
anexos = AnexoMensagemLocalServiceUtil.recuperaAnexosPorMensagem(mensagem.getMensagemId());
}
%>
<div class="context-pane painel-mensagens">
<c:set var="htmlMensagem">
<c:choose>
<c:when test="${template.templateId > 0 && template.estilo == 0}">
${template.cabecalho}
${mensagem.conteudo}
${template.rodape}
</c:when>
<c:otherwise>
<!-- {template.corpo}-->
${mensagem.conteudo}
</c:otherwise>
</c:choose>
</c:set>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="mensagem.solicitante"/>: </strong><%=mensagem.getNomeSolicitante()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="destinatario.lista"/>: </strong><%=sb.toString()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="destinatario.conta"/>: </strong><%=nomeRemetente%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="mensagem.assunto"/>: </strong><%=mensagem.getAssunto()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><%=mensagem.getLiteralAgendamento()%></p>
</div>
<% if (anexos != null && anexos.size() > 0 ) {%>
<div>
<p></p>
<p><strong><liferay-ui:message key="anexos.visualizacao"/>:</strong></p>
<% for (AnexoMensagem anexo : anexos) {%>
<a target="_blank" href="<%=anexo.getAnexoUrl()%>"><%=anexo.getFileName()%></a> <br/>
<%} %>
</div>
<%} %>
<div><p></p></div>
<aui:input name="htmlMensagem" value="${htmlMensagem}" type="hidden" />
<c:set var="tituloPreview">
<liferay-ui:message key='mensagem.titulo-preview' />
</c:set>
<liferay-util:include
page="/jsp/admin/includes/componente-preview-html.jsp"
servletContext="<%=this.getServletContext()%>">
<liferay-util:param name="tituloPreview" value="${tituloPreview}" />
<liferay-util:param name="html" value="${htmlMensagem}" />
</liferay-util:include>
</div>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalServiceUtil"%>
<%@ include file="/jsp/init.jsp" %>
<%@ page import="com.liferay.portal.kernel.util.StringBundler" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<%
PortletURL urlBack = renderResponse.createRenderURL();
urlBack.setParameter("jspPage", "/jsp/admin/mensagem/painel.jsp");
%>
<div class="span10 context-pane">
<div>
<liferay-ui:header
backURL="<%= urlBack.toString()%>"
title="mensagem.painel.controle" />
</div>
</div>
<div class="span10 context-pane">
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel.jsp"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="aprovarMensagem">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='MensagemWorkFlow'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel-aprovacao.jsp"/>
<liferay-portlet:param name="acao" value="approve"/>
</liferay-portlet:actionURL>
<liferay-portlet:actionURL var="reprovarMensagem">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='MensagemWorkFlow'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel-aprovacao.jsp"/>
<liferay-portlet:param name="acao" value="reject"/>
</liferay-portlet:actionURL>
<liferay-portlet:actionURL varImpl="cancelarMensagem">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='MensagemWorkFlow'/>
<liferay-portlet:param name="mensagemId" value='<%= ParamUtil.getString(renderRequest, "mensagemId") %>' />
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel.jsp"/>
<liferay-portlet:param name="acao" value="cancel"/>
</liferay-portlet:actionURL>
<%
Mensagem mensagem = MensagemLocalServiceUtil.getMensagem(ParamUtil.getLong(renderRequest, "mensagemId"));
pageContext.setAttribute("mensagem", mensagem);
StringBundler sb = null;
String nomeRemetente = "";
if (mensagem != null
&& mensagem.getTemplate() == null
&& mensagem.getTemplateId() > 0) {
mensagem.setTemplate(TemplateLocalServiceUtil.getTemplate(mensagem.getTemplateId()));
Template template = null;
if (mensagem != null) {
template = mensagem.getTemplate();
pageContext.setAttribute("template", template);
}
long[] destIds = GetterUtil.getLongValues(mensagem.getGrupoDestinatarioIds().split("\\s"));
List<GrupoDestinatario> destinatarios = new ArrayList<GrupoDestinatario>();
for (long id : destIds) {
destinatarios.add(GrupoDestinatarioLocalServiceUtil.getGrupoDestinatario(id));
}
sb = new StringBundler(destinatarios.size() * 2);
for (int i = 0; i < destinatarios.size(); i++) {
GrupoDestinatario dest = destinatarios.get(i);
if (i > 0) {
sb.append(StringPool.COMMA + StringPool.SPACE);
}
sb.append(dest.getNome());
}
GrupoDestinatario remetente = GrupoDestinatarioLocalServiceUtil.getGrupoDestinatario(mensagem.getContaSaidaId());
nomeRemetente = remetente.getNome();
}
String conteudoEditor = (mensagem != null ? mensagem.getConteudo() : StringPool.BLANK);
//long roleId = WorkflowUtil.getWorkflowRoleId(renderRequest);
boolean papelAprovador = WorkflowUtil.isAprovador(renderRequest);
List<AnexoMensagem> anexos = null;
if (mensagem != null){
anexos = AnexoMensagemLocalServiceUtil.recuperaAnexosPorMensagem(mensagem.getMensagemId());
}
%>
<aui:form name="fmMensagemWorkFlow" method="post">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<aui:input name="mensagemId" value="<%=mensagem.getMensagemId()%>" type="hidden"/>
<c:set var="htmlMensagem">
<c:choose>
<c:when test="${template.estilo == 0}">
${template.cabecalho}
${mensagem.conteudo}
${template.rodape}
</c:when>
<c:otherwise>
<!-- {template.corpo}-->
${mensagem.conteudo}
</c:otherwise>
</c:choose>
</c:set>
<aui:input name="htmlMensagem" value="${htmlMensagem}" type="hidden"/>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="mensagem.solicitante"/>: </strong><%=mensagem.getNomeSolicitante()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="destinatario.lista"/>: </strong><%=sb.toString()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="destinatario.conta"/>: </strong><%=nomeRemetente%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="mensagem.assunto"/>: </strong><%=mensagem.getAssunto()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><%=mensagem.getLiteralAgendamento()%></p>
</div>
<!-- Editor para aprovador -->
<% if (papelAprovador){ %>
<!-- <div class="alerta-rascunho-recuperado alert alert-warn">
<liferay-ui:message key="wizard.modificando.mensagem"/>
</div> -->
<div class="alert alert-success" style="display:none;" id="div_msg_conteudo_editado">
<liferay-ui:message key="mensagem.conteudo.editado"/>
</div>
<button id="myBtn" class="btn taglib-icon"><liferay-ui:message key="mensagem.editar.conteudo"/></button>
<div id="myModal" class="modal-message">
<div class="modal-message-content">
<span class="close-message"><liferay-ui:message key="mensagem.edicao.salvar"/></span>
<aui:field-wrapper label="mensagem.conteudo" cssClass="conteudo-wrapper">
<div class="alert alert-error validacao conteudo"><liferay-ui:message key="mensagem.validacao.erro.conteudo"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorConteudo" %>'
toolbarSet="liferay-article"
name="editorConteudo"/>
<aui:input name="conteudo" type="hidden"/>
</aui:field-wrapper>
</div>
</div>
<%} %>
<% if (anexos != null && anexos.size() > 0 ) {%>
<div>
<p></p>
<p><strong><liferay-ui:message key="anexos.visualizacao"/>:</strong></p>
<% for (AnexoMensagem anexo : anexos) {%>
<a target="_blank" href="<%=anexo.getAnexoUrl()%>"><%=anexo.getFileName()%></a><br/>
<%} %>
<p></p>
</div>
<%} %>
<aui:button-row>
<div id="divControle" >
<aui:select name="prioridadeId"
label="mensagem.prioridade"
required="true"
inlineLabel="left"
inlineField="false"
showRequiredLabel="false">
<aui:option value="0"><liferay-ui:message key="mensagem.prioridade.baixa"/></aui:option>
<aui:option value="1"><liferay-ui:message key="mensagem.prioridade.alta"/></aui:option>
</aui:select>
<% if (mensagem.getStatusWorkflow() == StatusWorkflowEnum.PENDENTE_APROVACAO.getStatus() && mensagem.getAtivo() && papelAprovador){ %>
<aui:button type="button" cssClass="btn-primary" onClick="aprovar();" value="Aprovar Mensagem" name="btnAprovar" />
<aui:button type="button" cssClass="btn btn-cancel" onClick="exibirBotaoReprovar();" value="mensagem.reprovar" name="btnReprovar" />
<aui:button type="button" cssClass="btn btn-cancel" onClick="cancelar();" value="Cancelar Mensagem" name="btnCancelar"/>
<% } %>
</div>
<br/>
<div id="divReprovacao" style="display:none;">
<aui:input name="motivo"
type="textarea"
label="mensagem.motivo.reprovacao"
rows="7"
required="true"
showRequiredLabel="false"
cssClass="span6"
>
<aui:validator name="maxLength">4000</aui:validator>
</aui:input>
<aui:button type="button" name="btnEnviar" cssClass="btn-primary" onClick="reprovar();" value="Enviar" />
<aui:button type="button" cssClass="btn btn-cancel" onClick="esconderBotaoReprovar();" value="Cancelar" name="btnCancelarReprovacao" />
</div>
</aui:button-row>
</aui:form>
</div>
<aui:script use="node, liferay-search-container">
$(window).resize(function(){
var altura = $('.modal-message-content').height() - 130;
$('.cke_reset').css('min-height',altura + 'px');
});
var hiddenConteudo = A.one("#<portlet:namespace />conteudo");
function atualizarInputsHTML() {
//atualizar o valor dos campos hidden com o que estiver informado no CKEditor HTML
hiddenConteudo.val(window.<portlet:namespace />editorConteudo.getHTML());
}
Liferay.provide(
window,
'exibirBotaoReprovar',
function() {
var div = document.getElementById('divReprovacao');
var divControle = document.getElementById('divControle');
var motivo = document.getElementById('<portlet:namespace/>motivo');
divControle.style.display = 'none';
div.style.display = "block";
motivo.focus();
}
);
Liferay.provide(
window,
'esconderBotaoReprovar',
function() {
var div = document.getElementById('divReprovacao');
var divControle = document.getElementById('divControle');
var motivo = document.getElementById('<portlet:namespace/>motivo');
divControle.style.display = 'block';
div.style.display = "none";
motivo.value = "";
}
);
<% if (papelAprovador){ %>
Liferay.provide(
window,
'<portlet:namespace />initEditorConteudo',
function() {
window.<portlet:namespace />editorConteudo.setHTML("<%= UnicodeFormatter.toString(conteudoEditor) %>");
}
);
<%}%>
Liferay.provide(
window,
'aprovar',
function() {
atualizarInputsHTML();
var form = document.getElementById('<portlet:namespace/>fmMensagemWorkFlow');
form.action = "${aprovarMensagem}";
form.submit();
}
);
Liferay.provide(
window,
'reprovar',
function() {
atualizarInputsHTML();
var form = document.getElementById('<portlet:namespace/>fmMensagemWorkFlow');
form.action = "${reprovarMensagem}";
form.submit();
}
);
Liferay.provide(
window,
'cancelar',
function() {
if (confirm('<liferay-ui:message key="mensagem.aviso-cancelamento"/>')) {
var form = document.getElementById('<portlet:namespace/>fmMensagemWorkFlow');
form.action = "${cancelarMensagem}";
form.submit();
}
}
);
//Get the modal
var modal = document.getElementById('myModal');
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close-message")[0];
// When the user clicks the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
var altura = $('.modal-message-content').height() - 130;
$('.cke_reset').css('min-height',altura + 'px');
return false;
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
document.getElementById("div_msg_conteudo_editado").style.display = "block";
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
document.getElementById("div_msg_conteudo_editado").style.display = "block";
modal.style.display = "none";
}
}
document.getElementById('<portlet:namespace/>prioridadeId').value = '<%=mensagem.getPrioridade()%>';
</aui:script>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<div class="span10 context-pane">
<%@ include file="/jsp/admin/includes/carregar-dados-wizard.jspf" %>
<div class="formulario-mensagem-preview">
<liferay-ui:header title="mensagem.header.pre-visualizar"/>
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/agendamento.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="4"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="paginaAnteriorURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<aui:form name="fmEmailTeste" method="post">
<aui:input name="rascunho" value="${param.rascunho}" type="hidden"/>
<c:set var="htmlMensagem">
<c:choose>
<c:when test="${template.estilo == 0}">
${template.cabecalho}
${mensagem.conteudo}
${template.rodape}
</c:when>
<c:otherwise>
${mensagem.conteudo}
</c:otherwise>
</c:choose>
</c:set>
<aui:input name="htmlMensagem" value="${htmlMensagem}" type="hidden"/>
<c:set var="tituloPreview">
<liferay-ui:message key='mensagem.titulo-preview'/>
</c:set>
<liferay-util:include
page="/jsp/admin/includes/componente-preview-html.jsp"
servletContext="<%=this.getServletContext()%>">
<liferay-util:param name="tituloPreview" value="${tituloPreview}"/>
<liferay-util:param name="html" value="${htmlMensagem}"/>
</liferay-util:include>
<% if (anexos != null && anexos.size() > 0 ) {%>
<div>
<p></p>
<p><strong><liferay-ui:message key="anexos.visualizacao"/>:</strong></p>
<% for (AnexoMensagem anexo : anexos) {%>
<a target="_blank" href="<%=anexo.getAnexoUrl()%>"><%=anexo.getFileName()%></a> <br/>
<%} %>
</div>
<%} %>
<aui:field-wrapper cssClass="campos-email-teste">
<div class="checkbox-wrapper" class="span8">
<aui:input name="chkEnviarEmail" label="mensagem.preview.checkbox-email-teste" inlineField="true" type="checkbox"/>
</div>
<div class="clearfix"></div>
<div id="camposWrapper" class="span8">
<aui:input name="emailTeste" inlineField="true" cssClass="span9" label="" value="<%=user.getEmailAddress()%>"/>
<aui:input name="contaSaidaId" value="${mensagem.contaSaidaId}" type="hidden"/>
<aui:button name="btEnviarEmail" cssClass="btn-primary" value="mensagem.preview.botao.enviar-email"/>
<div id="msgStatusEmailPreview"></div>
</div>
<div class="clearfix"></div>
</aui:field-wrapper>
</aui:form>
<div class="botoes-acao-wizard-wrapper clearfix">
<div class="botao-wizard-wrapper lado-esquerdo">
<a href="javascript:" id="<portlet:namespace/>btAnterior" class="botao-wizard anterior">
<i class="icon-circle-arrow-left"></i>
<liferay-ui:message key="wizard.navegacao.botao.mensagem.preencher-dados"/>
</a>
</div>
<div class="botao-wizard-wrapper lado-direito">
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="wizard.navegacao.botao.mensagem.agendar"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
<liferay-portlet:resourceURL var="enviarEmalTesteURL" id="EnviarEmailMensagemTeste"/>
<aui:script use="node,aui-io-request">
var camposWrapper = $("#camposWrapper");
var chkEnviarEmail = $("#<portlet:namespace/>chkEnviarEmail");
var showEnviarEmail = function() {
if (chkEnviarEmail.val() == "true"){
camposWrapper.css("display", "block");
} else {
camposWrapper.css("display", "none");
}
};
$(':checkbox').click(function() {
showEnviarEmail();
});
A.one("#<portlet:namespace/>btProximo").on('click', function() {
window.location='${proximaPaginaURL}';
});
A.one("#<portlet:namespace/>btAnterior").on('click', function() {
window.location='${paginaAnteriorURL}';
});
A.one("#<portlet:namespace/>btEnviarEmail").on("click", function(event){
var objBotao = this;
A.io.request('${enviarEmalTesteURL}', {
method: 'post',
data: {
<portlet:namespace/>emailTeste: A.one("#<portlet:namespace/>emailTeste").val(),
<portlet:namespace/>contaSaidaId: A.one("#<portlet:namespace/>contaSaidaId").val()
},
on: {
start: function() {
exibirStatusEmailPreview("<liferay-ui:message key='mensagem.teste.enviando'/>");
objBotao.disabled = true;
},
success: function(){
exibirStatusEmailPreview("<liferay-ui:message key='mensagem.teste.sucesso'/>");
},
failure: function() {
exibirStatusEmailPreview("<liferay-ui:message key='mensagem.teste.enviando'/>");
},
end: function() {
objBotao.disabled = false;
}
}
});
});
function exibirStatusEmailPreview(mensagem) {
var obj = A.one("#msgStatusEmailPreview");
obj.html(mensagem);
}
</aui:script>
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<div class="span10 context-pane">
<%
String cabecalho = StringPool.BLANK;
String rodape = StringPool.BLANK;
String corpo = StringPool.BLANK;
Template template = null;
long templateId = ParamUtil.getLong(request, "templateId");
if (templateId > 0) {
template = TemplateLocalServiceUtil.getTemplate(templateId);
} else {
template = (Template) request.getAttribute("template");
}
if (template != null){
//preencher variaveis que serao utilizadas em funcoes com scriptlet
cabecalho = template.getCabecalho();
rodape = template.getRodape();
corpo = template.getCorpo();
pageContext.setAttribute("template", template);
}
%>
<aui:model-context bean="<%= template %>" model="<%= Template.class %>" />
<liferay-ui:header title="template.header.formulario.edicao"/>
<div class="formulario-template">
<liferay-ui:error key="template.nome.existe" message="template.nome.existe"/>
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="gravarURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='TemplateAlterarIncluir'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/edicao.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
<liferay-portlet:param name="redirect" value="${param}"/>
</liferay-portlet:actionURL>
<c:if test="${param.wizard eq true}">
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="exibirProximoPasso" value="true"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
</c:if>
<aui:form action="${gravarURL}" name="fmDados" method="post" enctype="multipart/form-data">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<aui:input name="rascunho" value="${param.rascunho}" type="hidden"/>
<aui:input name="wizard" value="${param.wizard}" type="hidden"/>
<aui:input name="templateId" value="<%=template.getTemplateId()%>" type="hidden"/>
<aui:input name="nome" label="template.nome" required="true"/>
<aui:field-wrapper label="template.estilo">
<aui:input name="estilo"
value="0"
type="radio"
label="template.estilo.cabecalho-rodape"
checked="${empty template or template.estilo == 0 ? true : false}"
required="true"
onClick="exibirEditor(this.value);previewConteudo()"/>
<aui:input name="estilo"
value="1"
type="radio"
label="template.estilo.corpo"
checked="${template.estilo == 1 ? true : false}"
required="true"
onClick="exibirEditor(this.value);previewConteudo()"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.cabecalho" cssClass="cabecalho-wrapper">
<div class="alert alert-error validacao cabecalho"><liferay-ui:message key="template.validacao.erro.cabecalho"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorCabecalho" %>'
toolbarSet="liferay-article"
name="editorCabecalho"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="cabecalho" type="hidden" value="${template.cabecalho}" />
</aui:field-wrapper>
<aui:field-wrapper label="template.rodape" cssClass="rodape-wrapper">
<div class="alert alert-error validacao rodape"><liferay-ui:message key="template.validacao.erro.rodape"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorRodape" %>'
toolbarSet="liferay-article"
name="editorRodape"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="rodape" type="hidden" value="${template.rodape}"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.corpo" cssClass="corpo-wrapper">
<div class="alert alert-error validacao corpo"><liferay-ui:message key="template.validacao.erro.corpo"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorCorpo" %>'
toolbarSet="liferay-article"
name="editorCorpo"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="corpo" type="hidden" value="${template.corpo}"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.imagem-miniatura">
<liferay-ui:message key="template.imagem-miniatura.instrucoes"/>
<aui:input name="imgThumb" type="file" label="">
<aui:validator name="acceptFiles">'jpg,png'</aui:validator>
</aui:input>
<c:if test="${not empty template.thumbnailURL}">
<div id="preview-thumbnail">
<img alt="Imagem de thumbnail" src='<%=ImagemUtil.getUrlThumbnailTemplate(renderRequest, template.getThumbnailURL())%>'>
</div>
</c:if>
</aui:field-wrapper>
<!-- DIV que sera utilizado como 'corpo' no preview, quando o estilo
cabecalho e rodape for selecionado, para simular um espaçamento entre
o topo e rodape. -->
<div id="preview-corpo-container">
<div style="height:50px;"></div>
</div>
<!-- componente de preview -->
<c:set var="tituloPreview">
<liferay-ui:message key='template.titulo-preview'/>
</c:set>
<liferay-util:include
page="/jsp/admin/includes/componente-preview-html.jsp"
servletContext="<%=this.getServletContext()%>">
<liferay-util:param name="tituloPreview" value="${tituloPreview}"/>
</liferay-util:include>
</aui:form>
<!-- Definir botoes de acordo com o tipo de acao que oroginou o formulario. -->
<c:choose>
<c:when test="${param.wizard eq true}">
<div class="botoes-acao-wizard-wrapper clearfix">
<div class="botao-wizard-wrapper lado-esquerdo">
<a href="javascript:" id="<portlet:namespace/>btAnterior" class="botao-wizard anterior">
<i class="icon-circle-arrow-left"></i>
<liferay-ui:message key="wizard.navegacao.botao.template.selecionar"/>
</a>
</div>
<div class="botao-wizard-wrapper lado-direito">
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="wizard.navegacao.botao.template.criar"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
</div>
</c:when>
<c:otherwise>
<aui:button-row>
<aui:button type="button" cssClass="btn-primary" value="save" name="btGravar" />
<input type="button" value="Cancelar" class="btn btn-cancel" onclick="javascript:window.location.href = $('#<portlet:namespace/>redirect').val()"/>
</aui:button-row>
</c:otherwise>
</c:choose>
</div>
</div>
<aui:script use="node">
var hiddenCabecalho = A.one("#<portlet:namespace />cabecalho");
var hiddenRodape = A.one("#<portlet:namespace />rodape");
var hiddenCorpo = A.one("#<portlet:namespace />corpo");
A.one("#<portlet:namespace />btGravar").on("click", function() {
<portlet:namespace />gravar();
});
function atualizarInputsHTML() {
//atualizar o valor dos campos hidden com o que estiver informado no CKEditor HTML
hiddenCabecalho.val(window.<portlet:namespace />editorCabecalho.getHTML());
hiddenRodape.val(window.<portlet:namespace />editorRodape.getHTML());
hiddenCorpo.val(window.<portlet:namespace />editorCorpo.getHTML());
}
//funcao que sera utilizada pelo Editor HTML para carregar o valor inicial
Liferay.provide(
window,
'<portlet:namespace />initEditorCabecalho',
function() {
window.<portlet:namespace />editorCabecalho.setHTML("<%= UnicodeFormatter.toString(cabecalho) %>");
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorRodape',
function() {
<portlet:namespace />editorRodape.setHTML("<%= UnicodeFormatter.toString(rodape) %>");
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorCorpo',
function() {
window.<portlet:namespace />editorCorpo.setHTML("<%= UnicodeFormatter.toString(corpo) %>");
}
);
//
Liferay.provide(
window,
'<portlet:namespace />gravar',
function(urlRedirect) {
atualizarInputsHTML();
exibirMsgValidadaoEditor(false);
var estilo = A.one("input[name='<portlet:namespace />estilo']:checked").val();
var erro = false;
if (estilo == '0') {
if (hiddenCabecalho.val() == '') {
exibirMsgValidadaoEditor(true, 'cabecalho');
erro = true;
}
if (hiddenRodape.val() == '') {
exibirMsgValidadaoEditor(true, 'rodape');
erro = true;
}
}
else {
if (hiddenCorpo.val() == '') {
exibirMsgValidadaoEditor(true, 'corpo');
erro = true;
}
}
if (!erro) {
//redefinir o redirecionamento apos o processamento do formulario, quando necessario
if (urlRedirect != undefined) {
A.one("#<portlet:namespace/>redirect").val(urlRedirect);
}
submitForm(document.<portlet:namespace />fmDados);
}
else {
window.scroll(0,0);
}
}
);
Liferay.provide(
window,
'exibirEditor',
function(estilo) {
A.one(".cabecalho-wrapper").setStyle("display", (estilo == '0' ? 'block' : 'none'));
A.one(".rodape-wrapper").setStyle("display", (estilo == '0' ? 'block' : 'none'));
A.one(".corpo-wrapper").setStyle("display", (estilo == '1' ? 'block' : 'none'));
}
);
//define a funcao que sera utilizada pelo componente de pre-visualizacao do dispositivo
Liferay.provide(
window,
'definirConteudoPreview',
function() {
atualizarInputsHTML();
var conteudo = '';
//obtem o radio button do estilo selecionado
var estilo = A.one("input[name='<portlet:namespace />estilo']:checked");
if (estilo != null) {
estilo = estilo.val();
if (estilo == 0) {
conteudo += hiddenCabecalho.val();
//obter o 'corpo' para simular o espacamento entre o topo e rodape
conteudo += A.one("#preview-corpo-container").html();
conteudo += hiddenRodape.val();
}
else {
conteudo += hiddenCorpo.val();
}
}
else {
console.error("Estilo nao selecionado!");
}
return conteudo;
}
);
A.one("#<portlet:namespace/>nome").focus();
exibirEditor('${template.estilo}');
definirConteudoPreview();
previewConteudo();
</aui:script>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<div class="span10 context-pane">
<%@ include file="/jsp/admin/includes/carregar-dados-wizard.jspf" %>
<%
//pagina (fragmento) utilizada para definir variaveis e atributos utilizados pelo modulo.
//Template template = (Template) request.getAttribute("template");
String cabecalho = StringPool.BLANK;
String rodape = StringPool.BLANK;
String corpo = StringPool.BLANK;
//verificar se deve recuperar o template da sessao, ou forçar um novo
if (!ParamUtil.getBoolean(renderRequest, "novoTemplate")) {
//verifica se obteve o template atraves do include carregar-dados-wizard.
if (template == null) {
template = (Template) request.getAttribute("template");
//caso nao tenha conseguido obter do atributo request, verifica se ha parametro com o id
if (template == null) {
long templateId = ParamUtil.getLong(request, "templateId");
if (templateId > 0) {
template = TemplateLocalServiceUtil.getTemplate(templateId);
//preencher variaveis que serao utilizadas em funcoes com scriptlet
cabecalho = template.getCabecalho();
rodape = template.getRodape();
corpo = template.getCorpo();
}
}
}
}
else {
//garantir que nao vai tentar obter o template da session ou request.
template = null;
pageContext.removeAttribute("template");
}
if (template != null) {
pageContext.setAttribute("template", template);
cabecalho = template.getCabecalho();
rodape = template.getRodape();
corpo = template.getCorpo();
}
%>
<aui:model-context bean="<%= template %>" model="<%= Template.class %>" />
<liferay-ui:header title="template.header.formulario"/>
<div class="formulario-template">
<liferay-ui:error key="template.nome.existe" message="template.nome.existe"/>
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="gravarURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='TemplateAlterarIncluir'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/formulario.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
<liferay-portlet:param name="redirect" value="${param}"/>
</liferay-portlet:actionURL>
<c:if test="${param.wizard eq true}">
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="exibirProximoPasso" value="true"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
</c:if>
<aui:form action="${gravarURL}" name="fmDados" method="post" enctype="multipart/form-data">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<aui:input name="rascunho" value="${param.rascunho}" type="hidden"/>
<aui:input name="wizard" value="${param.wizard}" type="hidden"/>
<aui:input name="nome" label="template.nome" required="true">
<aui:validator name="maxLength">255</aui:validator>
</aui:input>
<aui:field-wrapper label="template.estilo">
<aui:input name="estilo"
value="0"
type="radio"
label="template.estilo.cabecalho-rodape"
checked="${empty template or template.estilo == 0 ? true : false}"
required="true"
onClick="exibirEditor(this.value);previewConteudo()"/>
<aui:input name="estilo"
value="1"
type="radio"
label="template.estilo.corpo"
checked="${template.estilo == 1 ? true : false}"
required="true"
onClick="exibirEditor(this.value);previewConteudo()"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.cabecalho" cssClass="cabecalho-wrapper">
<div class="alert alert-error validacao cabecalho"><liferay-ui:message key="template.validacao.erro.cabecalho"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorCabecalho" %>'
toolbarSet="liferay-article"
name="editorCabecalho"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="cabecalho" type="hidden" value="${template.cabecalho}" />
</aui:field-wrapper>
<aui:field-wrapper label="template.rodape" cssClass="rodape-wrapper">
<div class="alert alert-error validacao rodape"><liferay-ui:message key="template.validacao.erro.rodape"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorRodape" %>'
toolbarSet="liferay-article"
name="editorRodape"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="rodape" type="hidden" value="${template.rodape}"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.corpo" cssClass="corpo-wrapper">
<div class="alert alert-error validacao corpo"><liferay-ui:message key="template.validacao.erro.corpo"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorCorpo" %>'
toolbarSet="liferay-article"
name="editorCorpo"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="corpo" type="hidden" value="${template.corpo}"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.imagem-miniatura">
<liferay-ui:message key="template.imagem-miniatura.instrucoes"/>
<aui:input name="imgThumb" type="file" label="">
<aui:validator name="acceptFiles">'jpg,png'</aui:validator>
</aui:input>
<c:if test="${not empty template.thumbnailURL}">
<div id="preview-thumbnail">
<img alt="Imagem de thumbnail" src='<%=ImagemUtil.getUrlThumbnailTemplate(renderRequest, template.getThumbnailURL())%>'>
</div>
</c:if>
</aui:field-wrapper>
<!-- DIV que sera utilizado como 'corpo' no preview, quando o estilo
cabecalho e rodape for selecionado, para simular um espacamento entre
o topo e rodape. -->
<div id="preview-corpo-container">
<div style="height:50px;"></div>
</div>
<!-- componente de preview -->
<c:set var="tituloPreview">
<liferay-ui:message key='template.titulo-preview'/>
</c:set>
<liferay-util:include
page="/jsp/admin/includes/componente-preview-html.jsp"
servletContext="<%=this.getServletContext()%>">
<liferay-util:param name="tituloPreview" value="${tituloPreview}"/>
</liferay-util:include>
</aui:form>
<!-- Definir botoes de acordo com o tipo de acao que originou o formulario. -->
<c:choose>
<c:when test="${param.wizard eq true}">
<div class="botoes-acao-wizard-wrapper clearfix">
<div class="botao-wizard-wrapper lado-esquerdo">
<a href="javascript:" id="<portlet:namespace/>btAnterior" class="botao-wizard anterior">
<i class="icon-circle-arrow-left"></i>
<liferay-ui:message key="wizard.navegacao.botao.template.selecionar"/>
</a>
</div>
<div class="botao-wizard-wrapper lado-direito">
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="wizard.navegacao.botao.template.salvar"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
</div>
</c:when>
<c:otherwise>
<aui:button-row>
<aui:button type="button" cssClass="btn-primary" value="save" name="btGravar" />
<aui:button type="cancel" value="cancel" href="javascript:window.location.href = $('#<portlet:namespace/>redirect').val()"/>
</aui:button-row>
</c:otherwise>
</c:choose>
</div>
</div>
<aui:script use="node">
var hiddenCabecalho = A.one("#<portlet:namespace />cabecalho");
var hiddenRodape = A.one("#<portlet:namespace />rodape");
var hiddenCorpo = A.one("#<portlet:namespace />corpo");
//definir os acoes dos botoes relacionados a navegacao por etapa (wizard) da criacao de mensagem
if (${param.wizard eq true}) {
A.one("#<portlet:namespace/>btAnterior").on("click", function() {
window.location = '${redirect}';
});
A.one("#<portlet:namespace/>btProximo").on("click", function() {
<portlet:namespace/>gravar('${proximaPaginaURL}');
});
}
else {
A.one("#<portlet:namespace />btGravar").on("click", function() {
<portlet:namespace />gravar();
});
}
function atualizarInputsHTML() {
//atualizar o valor dos campos hidden com o que estiver informado no CKEditor HTML
hiddenCabecalho.val(window.<portlet:namespace />editorCabecalho.getHTML());
hiddenRodape.val(window.<portlet:namespace />editorRodape.getHTML());
hiddenCorpo.val(window.<portlet:namespace />editorCorpo.getHTML());
}
//funcao que sera utilizada pelo Editor HTML para carregar o valor inicial
Liferay.provide(
window,
'<portlet:namespace />initEditorCabecalho',
function() {
window.<portlet:namespace />editorCabecalho.setHTML("<%= UnicodeFormatter.toString(cabecalho) %>");
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorRodape',
function() {
<portlet:namespace />editorRodape.setHTML("<%= UnicodeFormatter.toString(rodape) %>");
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorCorpo',
function() {
window.<portlet:namespace />editorCorpo.setHTML("<%= UnicodeFormatter.toString(corpo) %>");
}
);
//
Liferay.provide(
window,
'<portlet:namespace />gravar',
function(urlRedirect) {
atualizarInputsHTML();
exibirMsgValidadaoEditor(false);
var estilo = A.one("input[name='<portlet:namespace />estilo']:checked").val();
var erro = false;
if (estilo == '0') {
if (hiddenCabecalho.val() == '') {
exibirMsgValidadaoEditor(true, 'cabecalho');
erro = true;
}
if (hiddenRodape.val() == '') {
exibirMsgValidadaoEditor(true, 'rodape');
erro = true;
}
}
else {
if (hiddenCorpo.val() == '') {
exibirMsgValidadaoEditor(true, 'corpo');
erro = true;
}
}
if (!erro) {
//redefinir o redirecionamento apos o processamento do formulario, quando necessario
if (urlRedirect != undefined) {
A.one("#<portlet:namespace/>redirect").val(urlRedirect);
}
submitForm(document.<portlet:namespace />fmDados);
}
else {
window.scroll(0,0);
}
}
);
Liferay.provide(
window,
'exibirEditor',
function(estilo) {
A.one(".cabecalho-wrapper").setStyle("display", (estilo == '0' ? 'block' : 'none'));
A.one(".rodape-wrapper").setStyle("display", (estilo == '0' ? 'block' : 'none'));
A.one(".corpo-wrapper").setStyle("display", (estilo == '1' ? 'block' : 'none'));
}
);
//define a funcao que sera utilizada pelo componente de pre-visualizacao do dispositivo
Liferay.provide(
window,
'definirConteudoPreview',
function() {
atualizarInputsHTML();
var conteudo = '';
//obtem o radio button do estilo selecionado
var estilo = A.one("input[name='<portlet:namespace />estilo']:checked");
if (estilo != null) {
estilo = estilo.val();
if (estilo == 0) {
conteudo += hiddenCabecalho.val();
//obter o 'corpo' para simular o espacamento entre o topo e rodape
conteudo += A.one("#preview-corpo-container").html();
conteudo += hiddenRodape.val();
}
else {
conteudo += hiddenCorpo.val();
}
}
else {
console.error("Estilo nao selecionado!");
}
return conteudo;
}
);
A.one("#<portlet:namespace/>nome").focus();
<%if (template != null) {%>
exibirEditor('${template.estilo}');
definirConteudoPreview();
previewConteudo();
<% }%>
</aui:script>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<div class="span10 context-pane">
<%@ include file="/jsp/admin/includes/carregar-dados-wizard.jspf" %>
<liferay-ui:success key="mensagem-gravada-aguardar-workflow" message="mensagem-gravada-aguardar-workflow"/>
<liferay-ui:success key="mensagem-gravada-aprovada-workflow" message="mensagem-gravada-aprovada-workflow"/>
<aui:model-context bean="<%= template %>" model="<%= Template.class %>" />
<div id="selecao-template-wrapper">
<liferay-ui:success key="template-sucesso-gravar" message="template.sucesso-gravar"/>
<liferay-ui:success key="sucesso-excluir" message="template.sucesso-excluir"/>
<liferay-ui:header title="template.header.listagem"/>
<aui:form name="fmSearchTemplate" action="#" cssClass="search-terms grupo-campos-busca">
<div>
<aui:input name="nomeTemplateSearch"
value="${param.nomeTemplateSearch}"
type="text"
inlineField="true"
inlineLabel="left"
label="template.busca.campo.nome"
cssClass="span10"
wrapperCssClass="span5"/>
<aui:button cssClass="pesquisa inline" type="submit" value="search"/>
<div class="clearfix"></div>
</div>
</aui:form>
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="exibirProximoPasso" value="true"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="processarPassoURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='WizardTemplate'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:actionURL>
<aui:form name="fmWizard" action="${processarPassoURL}" method="post">
<aui:input name="redirect" value="${proximaPaginaURL}" type="hidden"/>
<aui:field-wrapper required="true">
<div id="slider-templates-wrapper" class="">
<div class="lista-templates owl-carousel owl-theme" id="templates-scroll">
<c:set var="indexTemplateSel" value="-1"/>
<c:set var="listaTemplates" value="<%=TemplateSearch.pesquisar(renderRequest)%>" />
<c:forEach var="templateItem" items="${listaTemplates}" varStatus="status">
<%
Template templateItem = (Template)pageContext.getAttribute("templateItem");
%>
<c:if test="${templateItem.templateId eq template.templateId }">
<c:set var="indexTemplateSel" value="${status.index}"/>
</c:if>
<liferay-portlet:renderURL var="pesquisaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL varImpl="removerModeloURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='TemplateExcluir'/>
<liferay-portlet:param name="redirect" value="${pesquisaURL}" />
<liferay-portlet:param name="templateId" value="<%= String.valueOf(templateItem.getTemplateId()) %>" />
</liferay-portlet:actionURL>
<div class="item">
<div class="miniatura-preview-template" >
<div class="conteudo">
<img alt="${templateItem.nome}" src='<%=ImagemUtil.getUrlThumbnailTemplate(renderRequest, templateItem.getThumbnailURL())%>'>
</div>
<aui:input name="templateId"
value="${templateItem.templateId}"
label="${templateItem.nome }"
type="radio"
inlineField="true"
checked="${templateItem.templateId eq template.templateId }">
<aui:validator
name="required"
errorMessage="template.validacao.erro.selecionar"/>
</aui:input>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "ADICIONAR_TEMPLATE") %>'>
<div align="center">
<liferay-portlet:renderURL var="editarModeloURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/edicao.jsp"/>
<liferay-portlet:param name="templateId" value="${templateItem.templateId}"/>
</liferay-portlet:renderURL>
<a href="${editarModeloURL}"><liferay-ui:message key="wizard.navegacao.botao.template.editar"/></a>
</div>
</c:if>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "ADICIONAR_TEMPLATE") %>'>
<div align="center">
<a href="${removerModeloURL}" ><liferay-ui:message key="wizard.navegacao.botao.template.remover"/></a>
</div>
</c:if>
</div>
</div>
</c:forEach>
</div>
</div>
</aui:field-wrapper>
</aui:form>
<div class="botoes-acao-wizard-wrapper clearfix">
<c:set var="proximoDisabled" value="${empty listaTemplates}"/>
<div class="botao-wizard-wrapper">
<c:choose>
<c:when test="${proximoDisabled}">
<a href="javascript:" id="<portlet:namespace/>btProximoDisabled" class="botao-wizard proximo disabled" >
</c:when>
<c:otherwise>
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo" >
</c:otherwise>
</c:choose>
<liferay-ui:message key="wizard.navegacao.botao.mensagem.preencher-dados"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "ADICIONAR_TEMPLATE") %>'>
<div class="botao-wizard-wrapper link-novo-template clearfix">
<liferay-portlet:renderURL var="novoModeloURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="1"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="novoTemplate" value="true"/>
</liferay-portlet:renderURL>
<a href="${novoModeloURL}" class="botao-wizard proximo"><liferay-ui:message key="wizard.navegacao.botao.template.novo"/></a>
</div>
</c:if>
</div>
</div>
</div>
<aui:script use="node">
A.one("#<portlet:namespace/>btProximo").on('click', function() {
submitForm(document.<portlet:namespace/>fmWizard);
});
$(document).ready(function() {
//container para os itens do carousel
var owl = $("#templates-scroll");
owl.owlCarousel({
slideSpeed : 300,
paginationSpeed : 400,
items: 5,
autoPlay: false,
stopOnHover: true,
pagination: false,
paginationNumbers: false,
autoHeight: false,
transitionStyle: "fade",
navigation: true,
navigationText: [
"<i class='icon-chevron-left icon-white'></i>",
"<i class='icon-chevron-right icon-white'></i>"
],
itemsScaleUp: false,
afterInit: function(elem) {
ajustarMargemSlider($(".owl-controls").css("display") == 'block');
var indexTemplate = parseInt('${indexTemplateSel}',10);
if (indexTemplate >= 0) {
owl.trigger("owl.goTo", indexTemplate);
}
},
afterUpdate: function(elem) {
ajustarMargemSlider($(".owl-controls").css("display") == 'block');
}
});
//remove a margem do container do carousel caso as setas de navegacao
//nao estejam sendo exibidas, evitando problemas esteticos
function ajustarMargemSlider(possuiNavegacao) {
var sliderWrapper = $("#slider-templates-wrapper");
var nomeCss = 'sem-navegacao';
if (!possuiNavegacao) {
if (!sliderWrapper.hasClass(nomeCss)) {
sliderWrapper.addClass(nomeCss);
}
}
else {
sliderWrapper.removeClass(nomeCss);
}
}
//redefinir tamanho da fonte das miniaturas para o tamanho padrao
$(".miniatura-preview-template .conteudo span").css("font-size", "8px");
});
</aui:script>
<script type="text/javascript">
document.getElementById("<portlet:namespace />nomeTemplateSearch").focus();
</script>
\ No newline at end of file
<%@page import="com.liferay.portal.service.persistence.PortletUtil"%>
<%@page import="javax.portlet.PortletSession"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.GrupoDestinatarioUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.action.ConfiguracaoAction"%>
<%@ include file="/jsp/init.jsp" %>
<%
PortletPreferences preferences = renderRequest.getPreferences();
String grupoDestinatarioId = PrefsParamUtil.getString(preferences, request, "grupoDestinatarioId", PortletProps.get("configuracao.valor-padrao.IdgrupoMensagem"));
String emailRemetente = PrefsParamUtil.getString(preferences, request, "emailRemetente", PortletProps.get("configuracao.valor-padrao.IdgrupoMensagem"));
%>
Lista selecionada: <span>${nomeGrupo}</span>
<br><br>
Selecione uma lista:
<liferay-portlet:actionURL portletConfiguration="true" var="configurationURL" />
<aui:form action="${configurationURL}" method="post" name="fm">
<aui:input name="<%= Constants.CMD %>" type="hidden" value="<%= Constants.UPDATE %>" />
<aui:fieldset>
<select id="mySelect" onchange="myFunction()">
<option value="null">Selecione</option>
<c:forEach items="${grupo}" var="g">
<option value="${g.grupoDestinatarioId }">${g.nome }</option>
</c:forEach>
</select>
<aui:input id="grupoId" name="preferences--grupoDestinatarioId--" label="" type="text" value="<%=grupoDestinatarioId%>" style="display:none;"/>
<aui:input id="emailRemetente" name="preferences--emailRemetente--" label="E-mail Remetente" type="text" value="<%=emailRemetente %>"/>
<aui:button-row>
<aui:button type="submit" cssClass="btn-primary" value="save"/>
</aui:button-row>
</aui:fieldset>
</aui:form>
<aui:script>
function myFunction() {
var id = document.getElementById("mySelect").value;
document.getElementById("<portlet:namespace/>grupoId").value = id;
}
</aui:script>
\ No newline at end of file
<%@page import="com.liferay.portal.kernel.servlet.SessionMessages"%>
<%@page import="com.liferay.portal.kernel.util.SessionParamUtil"%>
<%@ include file="/jsp/init.jsp" %>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.action.GrupoDestinatarioAlterarIncluirActionCommand"%>
<%@page import="com.liferay.portal.kernel.servlet.SessionErrors" %>
<%
Boolean result = SessionMessages.contains(renderRequest, "cadastro-sucesso");
%>
<liferay-ui:error key="duplicado" message="E-mail informado j est cadastrado !" />
<liferay-portlet:actionURL var="addEmailDestinatario">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value="InserirEmailDestinatario"/>
<liferay-portlet:param name="mvcPath" value="/jsp/cadastro-usuario.jsp"/>
</liferay-portlet:actionURL>
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/cadastro-usuario.jsp"/>
</liferay-portlet:renderURL>
<c:if test="<%=result%>">
<div class="alert alert-info responsaveis-user">Seu e-mail foi cadastrado em nosso sistema. Aguarde para receber a prxima newsletter.</div>
</c:if>
<aui:form action="${addEmailDestinatario}" name="formCadEmail" id="formCadEmail" method="post">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<span>Cadastre-se e receba novidades em seu e-mail:</span>
<aui:row>
<aui:col span="9">
<aui:input name="email_usuario" type="text" label="" required="true" inlineLabel="top" inlineField="false" showRequiredLabel="false" maxlength="80">
<aui:validator name="required" />
<aui:validator name="email" errorMessage="Por favor, preencha o campo de e-mail corretamente." />
<aui:validator name="maxLength" errorMessage="Por favor, digite at 80 caracteres.">80</aui:validator>
</aui:input>
</aui:col>
<aui:col span="3" style="margin: 0 !important;">
<aui:input type = "submit" value = "Cadastrar" name = "btnEmailDestinatario" label=" " cssClass="span3" onClick="javascript:window.location.href = $('#<portlet:namespace/>redirect').val()"></aui:input>
</aui:col>
</aui:row>
</aui:form>
<%@ include file="/jsp/init.jsp" %>
<%
PortletPreferences preferences = renderRequest.getPreferences();
String horario = PrefsParamUtil.getString(preferences, request, "horarioPadrao", PortletProps.get("configuracao.valor-padrao.horario"));
String roleName = PrefsParamUtil.getString(preferences, request, "workflowRoleName", PortletProps.get("configuracao.valor-padrao.workflowRoleName"));
String urlThumbnail = PrefsParamUtil.getString(preferences, request, "template.url.thumbnail-padrao", PortletProps.get("configuracao.template.url.thumbnail-padrao"));
String urlServidorPortal = PrefsParamUtil.getString(preferences, request, "configuracao.email.url-servidor", PortletProps.get("configuracao.email.url-servidor"));
%>
<liferay-portlet:actionURL portletConfiguration="true" var="configurationURL" />
<aui:form action="${configurationURL}"
method="post"
name="fm">
<aui:input name="<%= Constants.CMD %>" type="hidden" value="<%= Constants.UPDATE %>" />
<aui:fieldset>
<aui:input name="preferences--horarioPadrao--" label="configuracao.horario-padrao" type="text" value="<%=horario%>"/>
<aui:input name="preferences--workflowRoleName--" label="configuracao.workflow-role-name-padrao" type="hidden" value="<%=roleName%>"/>
<aui:input name="preferences--template.url.thumbnail-padrao--" label="configuracao.thumbnail-padrao" type="text" value="<%=urlThumbnail%>"/>
<aui:input name="preferences--configuracao.email.url-servidor--" label="configuracao.email.url-servidor" type="text" value="<%=urlServidorPortal%>"/>
<aui:button-row>
<aui:button type="submit" cssClass="btn-primary" value="save"/>
</aui:button-row>
</aui:fieldset>
</aui:form>
\ No newline at end of file
<%@page import="javax.portlet.RenderRequest"%>
<%@page import="java.util.prefs.Preferences"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.action.ConfiguracaoAction"%>
<%@page import="com.liferay.portal.service.persistence.PortletUtil"%>
<%@page import="javax.portlet.PortletSession"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@ page import="javax.portlet.PortletPreferences" %>
<%@page import="com.liferay.portal.kernel.servlet.SessionMessages"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.EmailDestinatarioLocalServiceUtil"%>
<%@ include file="/jsp/init.jsp" %>
<%
Boolean result = SessionMessages.contains(renderRequest, "sucesso-excluir");
%>
<liferay-ui:success key="sucess" message="Seu e-mail foi removido da nossa lista de envios com sucesso."/>
<liferay-ui:error key="nao-cadastrado" message="E-mail informado j foi removido!" />
<liferay-portlet:actionURL var="removerEmailDestinatario">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value="ExcluirEmailDestinatario"/>
<liferay-portlet:param name="mvcPath" value="/jsp/excluir-usuario.jsp"/>
</liferay-portlet:actionURL>
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/excluir-usuario.jsp"/>
</liferay-portlet:renderURL>
<div class="portlet-content">
<div class=" portlet-content-container" style="">
<div class="portlet-body">
<ul aria-label="Breadcrumb" class="breadcrumb breadcrumb-horizontal" style="padding-left: 0px;">
<li class="first"><a href="/web/consumidorvencedor-rj">Consumidor Vencedor</a><span class="divider">/</span></li><li class="active last"><a href="#">Descadastrar</a><span class="divider">/</span></li>
</ul>
</div>
</div>
</div>
<c:if test="<%=result%>">
<div class="alert alert-info responsaveis-user">Seu e-mail foi removido da nossa lista de envios com sucesso.</div>
</c:if>
<aui:form action="${removerEmailDestinatario}" name="formCadEmail" id="formCadEmail" method="post">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<span>Por favor, insira seu e-mail para cancelar o recebimento de newsletter:</span>
<aui:row>
<aui:col span="9">
<aui:input name="email_usuario" type="text" label="" required="true" inlineLabel="top" inlineField="false" showRequiredLabel="false" maxlength="80">
<aui:validator name="required" />
<aui:validator name="email" errorMessage="Por favor, preencha o campo de e-mail corretamente."/>
<aui:validator name="maxLength" errorMessage="Por favor, digite at 80 caracteres.">80</aui:validator>
</aui:input>
</aui:col>
<aui:col span="3" style="margin: 0 !important;">
<aui:input type = "submit" value = "Enviar" name = "btnEmailDestinatario" label=" " cssClass="span3" onClick="javascript:window.location.href = $('#<portlet:namespace/>redirect').val();"></aui:input>
</aui:col>
</aui:row>
</aui:form>
<aui:script>
AUI().ready('aui-module', function(A){
var b = document.getElementsByClassName("breadcrumb breadcrumb-horizontal");
var c = b[0].getElementsByClassName("active last")
var d = c[0].getElementsByTagName("a");
d[0].text = "descadastrar";
d[0].href = window.location;
});
</aui:script>
\ No newline at end of file
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet"%>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme"%>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui"%>
<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util"%>
<%@ taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page import="javax.portlet.PortletPreferences" %>
<%@ page import="javax.portlet.ActionRequest" %>
<%@ page import="javax.portlet.PortletURL" %>
<%@ page import="com.liferay.portal.util.PortalUtil" %>
<%@ page import="com.liferay.portal.kernel.util.HtmlUtil" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.GetterUtil"%>
<%@ page import="com.liferay.portal.kernel.util.StringPool" %>
<%@ page import="com.liferay.portal.kernel.util.Validator" %>
<%@ page import="com.liferay.portal.kernel.dao.search.RowChecker" %>
<%@ page import="com.liferay.portal.kernel.search.Document" %>
<%@ page import="com.liferay.portal.kernel.dao.orm.QueryUtil" %>
<%@ page import="com.liferay.portal.kernel.search.Hits" %>
<%@ page import="com.liferay.portal.kernel.util.UnicodeFormatter" %>
<%@ page import="com.liferay.portal.service.UserLocalServiceUtil" %>
<%@ page import="com.liferay.util.portlet.PortletProps" %>
<%@ page import="com.liferay.portal.kernel.util.PrefsParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.Constants" %>
<%@ page import="com.liferay.portal.kernel.portlet.LiferayWindowState" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.WeakHashMap" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.GrupoDestinatarioSearch" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.UserSearch"%>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.EmailDestinatario" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioLocalServiceUtil" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.GrupoDestinatarioSearch" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.vo.UserVO" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.workflow.StatusWorkflowEnum"%>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateLocalServiceUtil" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalServiceUtil" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.TemplateSearch" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.MensagemSearch" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.enums.TipoListaEnum" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.util.ImagemUtil" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.workflow.WorkflowUtil" %>
<portlet:defineObjects />
<liferay-theme:defineObjects />
<%!
public static final String EDITOR_WYSIWYG_IMPL_KEY = "editor.wysiwyg.portal-web.docroot.html.portlet.portal_settings.email_notifications.jsp";
%>
\ No newline at end of file
package br.mp.mprj.portal.portlet.gestaomensagens.workflow;
import java.io.Serializable;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
import br.mp.mprj.portal.portlet.gestaomensagens.email.EnvioEmailMensagem;
import br.mp.mprj.portal.portlet.gestaomensagens.email.EnvioEmailWorkflow;
import br.mp.mprj.portal.portlet.gestaomensagens.enums.TipoEnvioEnum;
import br.mp.mprj.portal.portlet.gestaomensagens.job.AgendamentoJobUtil;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalServiceUtil;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemWorkflowLocalServiceUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.workflow.BaseWorkflowHandler;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.service.ServiceContext;
import com.liferay.util.portlet.PortletProps;
public class MensagemWorkflowHandler extends BaseWorkflowHandler {
private static final Log _log = LogFactoryUtil.getLog(MensagemWorkflowHandler.class);
private final String TYPE = "Mensagens";
@Override
public String getClassName() {
return Mensagem.class.getName();
}
@Override
public String getType(Locale locale) {
return TYPE;
}
@Override
public Object updateStatus(int status,
Map<String, Serializable> workflowContext) throws PortalException,
SystemException {
long userId = GetterUtil.getLong(workflowContext.get(WorkflowConstants.CONTEXT_USER_ID));
long resourcePrimKey = GetterUtil.getLong(workflowContext.get(WorkflowConstants.CONTEXT_ENTRY_CLASS_PK));
Mensagem mensagem = MensagemLocalServiceUtil.getMensagem(resourcePrimKey);
mensagem.setStatusWorkflow(status);
mensagem.setUserIdWorkflow(userId);
mensagem.setDataStatusWorkflow(new Date());
mensagem.setComentarioWorkflow(GetterUtil.getString(workflowContext.get(WorkflowConstants.CONTEXT_TASK_COMMENTS)));
mensagem = MensagemLocalServiceUtil.updateMensagem(mensagem);
MensagemWorkflowLocalServiceUtil.gravarHistoricoWorkflow(mensagem);
//se foi reprovado, colocar novamente para revisao
if (status == WorkflowConstants.STATUS_DENIED) {
try {
ServiceContext serviceContext = (ServiceContext)workflowContext.get(WorkflowConstants.CONTEXT_SERVICE_CONTEXT);
WorkflowUtil.atualizarStatusWorkflow(mensagem, AcaoWorkflowEnum.REVISAR,
GetterUtil.getString(PortletProps.get("workflow.texto-padrao.revisao")), userId,
serviceContext);
WorkflowUtil.inicializarWorkflowMensagem(mensagem, serviceContext);
}
catch (Exception ex) {
_log.error("Problemas ao definir revisao:", ex);
}
}
//envio de email
if (status == WorkflowConstants.STATUS_DENIED
|| status == WorkflowConstants.STATUS_APPROVED
|| status == WorkflowConstants.STATUS_INACTIVE) {
try {
//enviar notificacao de mensagem aprovada
EnvioEmailMensagem envio = new EnvioEmailWorkflow(mensagem);
envio.enviarEmail(0);
//enviar e-mail para os destinatarios, caso seja de envio imediato
if (status == WorkflowConstants.STATUS_APPROVED
&& mensagem.getTipoEnvio() == TipoEnvioEnum.IMEDIATO.ordinal()) {
AgendamentoJobUtil.enviaMensagemImediato(mensagem.getMensagemId());
}
}
catch (Exception ex) {
_log.error("Problemas ao enviar e-mail do status do workflow:", ex);
}
}
return mensagem;
}
@Override
public String getTitle(long classPK, Locale locale) {
String titlePadrao = super.getTitle(classPK, locale);
if (Validator.isNull(titlePadrao)) {
try {
return MensagemLocalServiceUtil.getMensagem(classPK).getAssunto();
}
catch (PortalException|SystemException ex) {
return StringPool.BLANK;
}
}
return titlePadrao;
}
@Override
public void startWorkflowInstance(long companyId, long groupId,
long userId, long classPK, Object model,
Map<String, Serializable> workflowContext) throws PortalException,
SystemException {
super.startWorkflowInstance(companyId, groupId, userId, classPK, model,
workflowContext);
/*try {
WorkflowUtil.atribuirWorkflowRole(Mensagem.class.getName(), companyId,
groupId, classPK,
userId, WorkflowUtil.getWorkflowRoleId(companyId),
GetterUtil.getString(PortletProps.get("workflow.texto-padrao.atribuicao.role")));
}
catch (Exception ex) {
_log.error("Problemas ao inicializar o workflow da Mensagem ID: " + classPK, ex);
}*/
}
}
<?xml version="1.0"?>
<beans
default-destroy-method="destroy"
default-init-method="afterPropertiesSet"
xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
>
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.aop.ServiceBeanAutoProxyCreator" />
<constructor-arg>
<map>
<entry key="beanMatcher">
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.aop.ServiceBeanMatcher" />
</bean>
</entry>
<entry key="methodInterceptor" value-ref="serviceAdvice" />
</map>
</constructor-arg>
</bean>
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.bean.BeanReferenceAnnotationBeanPostProcessor" />
</bean>
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.context.PortletBeanFactoryCleaner" />
</bean>
<bean id="portletClassLoader" class="com.liferay.portal.kernel.portlet.PortletClassLoaderUtil" factory-method="getClassLoader" />
<bean id="servletContextName" class="com.liferay.portal.kernel.portlet.PortletClassLoaderUtil" factory-method="getServletContextName" />
<bean id="basePersistence" abstract="true">
<property name="dataSource" ref="liferayDataSource" />
<property name="sessionFactory" ref="liferaySessionFactory" />
</bean>
<bean id="serviceAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.aop.SkipAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="accessControlAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="accessControlAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.security.ac.AccessControlAdvice" />
<constructor-arg>
<map>
<entry key="accessControlAdvisor">
<bean class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.security.ac.AccessControlAdvisorImpl" />
</bean>
</entry>
<entry key="nextMethodInterceptor" value-ref="portalResiliencyAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="portalResiliencyAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.resiliency.service.PortalResiliencyAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="serviceMonitorAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="serviceMonitorAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.monitoring.statistics.service.ServiceMonitorAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="asyncAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="asyncAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.messaging.async.AsyncAdvice" />
<constructor-arg>
<map>
<entry key="defaultDestinationName" value="liferay/async_service" />
<entry key="nextMethodInterceptor" value-ref="threadLocalCacheAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="threadLocalCacheAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.cache.ThreadLocalCacheAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="bufferedIncrementAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="bufferedIncrementAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.increment.BufferedIncrementAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="indexableAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="indexableAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.search.IndexableAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="systemEventAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="systemEventAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.systemevent.SystemEventAdvice" />
<constructor-arg>
<map>
<entry key="nextMethodInterceptor" value-ref="transactionAdvice" />
</map>
</constructor-arg>
</bean>
<bean id="transactionAdvice" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.transaction.TransactionInterceptorFactoryBean" />
<constructor-arg>
<map>
<entry key="platformTransactionManager" value-ref="liferayTransactionManager" />
<entry key="transactionAttributeSource" value-ref="transactionAttributeSource" />
</map>
</constructor-arg>
</bean>
<bean id="transactionAttributeSource" class="com.liferay.portal.kernel.spring.util.SpringFactoryUtil" factory-method="newBean">
<constructor-arg value="com.liferay.portal.spring.transaction.AnnotationTransactionAttributeSource" />
</bean>
</beans>
\ No newline at end of file
<?xml version="1.0"?>
<model-hints>
<hint-collection name="CLOB">
<hint name="max-length">2000000</hint>
</hint-collection>
<hint-collection name="CAMPO_MEDIO">
<hint name="max-length">4000</hint>
</hint-collection>
<hint-collection name="CAMPO_PEQUENO">
<hint name="max-length">255</hint>
</hint-collection>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento">
<field name="uuid" type="String" />
<field name="agendamentoId" type="long" />
<field name="mensagemId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="tipoAgendamento" type="int" />
<field name="dataCalendario" type="Date" />
<field name="dataInicio" type="Date" />
<field name="dataFim" type="Date" />
<field name="padraoRecorrencia" type="int" />
<field name="frequencia" type="int" />
<field name="diarioTodos" type="boolean" />
<field name="semanalDias" type="String" />
<field name="mensalDiaFrequencia" type="int" />
<field name="dataAtualizacao" type="Date" />
<field name="dataEnvio" type="Date" />
<field name="situacaoEnvio" type="int" />
<field name="erroEnvio" type="boolean" />
<field name="mensagemErro" type="String" />
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem">
<field name="uuid" type="String" />
<field name="anexoMensagemId" type="long" />
<field name="mensagemId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="dataCriacao" type="Date" />
<field name="anexoUrl" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="fileName" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="versao" type="String" />
<field name="contentType" type="String" />
<field name="ativo" type="boolean" />
<field name="anexoFileEntryId" type="long" />
<field name="anexoPath" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.EmailDestinatario">
<field name="uuid" type="String" />
<field name="emailDestinatarioId" type="long" />
<field name="email" type="String" />
<field name="grupoDestinatarioId" type="long" />
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario">
<field name="uuid" type="String" />
<field name="grupoDestinatarioId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="nome" type="String" />
<field name="finalidade" type="String">
<hint-collection name="CLOB" />
</field>
<field name="userIdResponsaveis" type="String" />
<field name="listaTemporaria" type="boolean" />
<field name="dataFinalListaTemporaria" type="Date" />
<field name="envioEmNomeLista" type="boolean" />
<field name="userIdNomesLista" type="String" />
<field name="listaModerada" type="boolean" />
<field name="userIdListaModerada" type="String" />
<field name="ativo" type="boolean" />
<field name="dataCriacao" type="Date" />
<field name="dataAtualizacao" type="Date" />
<field name="tipoLista" type="int" />
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem">
<field name="uuid" type="String" />
<field name="mensagemId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="templateId" type="long" />
<field name="grupoDestinatarioIds" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="contaSaidaId" type="long" />
<field name="codigoMensagem" type="String" />
<field name="assunto" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="conteudo" type="String">
<hint-collection name="CLOB" />
</field>
<field name="prioridade" type="int" />
<field name="ativo" type="boolean" />
<field name="tipoEnvio" type="int" />
<field name="situacaoEnvio" type="int" />
<field name="nomeSolicitante" type="String" />
<field name="userIdCriador" type="long" />
<field name="dataSolicitacao" type="Date" />
<field name="dataUltimoEnvio" type="Date" />
<field name="dataAlteracao" type="Date" />
<field name="rascunho" type="boolean" />
<field name="statusWorkflow" type="int" />
<field name="userIdWorkflow" type="long" />
<field name="dataStatusWorkflow" type="Date" />
<field name="comentarioWorkflow" type="String">
<hint-collection name="CAMPO_MEDIO" />
</field>
<field name="clonagemPai" type="long" />
<field name="literalAgendamento" type="String">
<hint-collection name="CLOB" />
</field>
<field name="userIdCancel" type="long" />
<field name="userIdAprovador" type="long" />
<field name="userIdReprovador" type="long" />
<field name="dataCancel" type="Date" />
<field name="service" type="boolean" />
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemWorkflow">
<field name="uuid" type="String" />
<field name="mensagemWorkflowId" type="long" />
<field name="mensagemId" type="long" />
<field name="userId" type="long" />
<field name="status" type="int" />
<field name="data" type="Date" />
<field name="comentario" type="String">
<hint-collection name="CAMPO_MEDIO" />
</field>
</model>
<model name="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template">
<field name="uuid" type="String" />
<field name="templateId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="nome" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
<field name="estilo" type="int" />
<field name="ativo" type="boolean" />
<field name="cabecalho" type="String">
<hint-collection name="CLOB" />
</field>
<field name="rodape" type="String">
<hint-collection name="CLOB" />
</field>
<field name="corpo" type="String">
<hint-collection name="CLOB" />
</field>
<field name="dataCriacao" type="Date" />
<field name="dataAtualizacao" type="Date" />
<field name="thumbnailFileEntryId" type="long" />
<field name="thumbnailURL" type="String">
<hint-collection name="CAMPO_PEQUENO" />
</field>
</model>
</model-hints>
\ No newline at end of file
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" default-destroy-method="destroy" default-init-method="afterPropertiesSet" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AgendamentoLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.AgendamentoLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoFinder" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoFinderImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.AnexoMensagemLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AnexoMensagemPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AnexoMensagemPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.EmailDestinatarioLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.EmailDestinatarioLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.EmailDestinatarioPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.EmailDestinatarioPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.GrupoDestinatarioLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.GrupoDestinatarioServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.GrupoDestinatarioPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.GrupoDestinatarioPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.MensagemLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.MensagemServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemWorkflowLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.MensagemWorkflowLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemWorkflowPersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemWorkflowPersistenceImpl" parent="basePersistence" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateLocalService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.TemplateLocalServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateService" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.TemplateServiceImpl" />
<bean id="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.TemplatePersistence" class="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.TemplatePersistenceImpl" parent="basePersistence" />
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<custom-sql>
<sql file="custom-sql/mensagens-agendadas.xml" />
</custom-sql>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Newsletter</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
* {
-webkit-text-size-adjust: none;
-webkit-text-resize: 100%;
text-resize: 100%;
}
.no-link a{
text-decoration:none !important;
color:#808080 !important;
}
.no-link-2 a{
text-decoration:none !important;
color:#979b9c !important;
}
#u10 {
border-width: 0px;
left: 280px;
top: 212px;
width: 384px;
height: 16px;
font-size: 14px;
color: #999999;
text-align: center;
}
@media only screen and (max-width:500px) {
table[class="wrapper"]{min-width:320px !important;}
table[class="flexible"]{width:100% !important;}
td[class="img-flex"] img{
width:100% !important;
height:auto !important;
}
td[class="aligncenter"]{text-align:center !important;}
td[class="section-1"]{padding:15px 10px !important;}
td[class="section-2"]{padding:25px 0 !important;}
td[class="section-3"]{padding:10px 0 0 !important;}
td[class="section-4"]{padding:20px 10px !important;}
td[class="section-5"]{padding:30px 10px 20px !important;}
td[class="button"]{padding:0 !important;}
td[class="button"] a{
display:block !important;
padding:12px 16px 10px !important;
text-align:center !important;
}
td[class="columns"]{padding:0 0 30px !important;}
td[class="col"]{width:32% !important;}
td[class="col"] td[class="img-flex"]{
height:auto !important;
padding:0 0 10px !important;
}
td[class="col"] td[class="text"]{
padding:0 !important;
font-size:11px !important;
}
td[class="social-networks"]{padding:0 0 30px !important;}
}
</style>
</head>
<body style="margin:0; padding:0;" bgcolor="#ffffff" link="#4787ce">
<table class="wrapper" width="100%" cellspacing="0" cellpadding="0" bgcolor="#ffffff">
<tr>
<td class="section-2" style="padding:39px 10px 37px;" align="center">
<table class="flexible" width="600" cellpadding="0" cellspacing="0">
<tr>
<td mc:edit="block-1" align="center" style="padding:0 0 5px;">
<a href="http://consumidorvencedor.mp.br/">
<img src="http://rj.consumidorvencedor.mp.br/documents/13137/309578/logo_Consumidor_Vencedor_sem_estado.png" border="0" style="vertical-align:top; width:200px;" alt="Logo Consumidor Vencedor" />
</a>
</td>
</tr>
<tr>
<td style="padding:0 0 4px;">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width="50%">
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td width="50%" height="1" style="font-size:0; line-height:0;" bgcolor="#dfe0e2">&nbsp;</td></tr>
<tr><td width="50%" height="1" style="font-size:0; line-height:0;" bgcolor="#edeef0">&nbsp;</td></tr>
</table>
</td>
<td mc:edit="block-2" align="center" style="font: 17px/35px Verdana, Arial, Helvetica, sans-serif;white-space:nowrap;color:#333;padding:0 22px;">
<span> Cadastro de Newsletter</span>
</td>
<td width="50%">
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td width="50%" height="1" style="font-size:0; line-height:0;" bgcolor="#dfe0e2">&nbsp;</td></tr>
<tr><td width="50%" height="1" style="font-size:0; line-height:0;" bgcolor="#edeef0">&nbsp;</td></tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="section-2" align="center">
<table width="600" >
<tr>
<div id="u10" >
<span style="font-family: 'Arial Normal', 'Arial';">Esse é um e-mail automático. Não é necessário respondê-lo.</span>
</div>
</tr>
<br>
<br>
</table>
</td>
</tr>
<tr>
<td class="section-3" style="padding:40px 10% 40px 10%;border-top:1px solid #fdfdfd;font-family: 'Lato';font-weight: 400;font-style: normal;font-size: 16px;color: #2F3A48;" align="left" bgcolor="#f6f7f8">
<div>Seu e-mail foi cadastrado com sucesso! Seja bem-vindo!</div>
<div>Em breve, você receberá a nossa newsletter com as informações atualizadas sobre as vitórias obtidas na defesa coletiva dos consumidores.</div>
<br>
<br>
<div>Obrigado,</div>
<div>Consumidor Vencedor</div>
<div style="font-family: 'Lato Bold', 'Lato Regular', 'Lato';font-weight: 700;">consumidorvencedor.mp.br</div>
</td>
</tr>
<tr>
<td class="section-5" align="center" style=" font:12px/18px Arial, Helvetica, sans-serif; color:#979b9c; padding:39px 10px 37px; border-top:1px solid #eeeff0;">
<div style="padding: 0% 20% 2px 20%;">Você recebeu esta mensagem porque se cadastrou para receber e-mails do Consumidor Vencedor.
Respeitamos a sua privacidade, se você não deseja receber estes e-mails,clique <a href=[$URL$]>aqui</a> para cancelar o recebimento.</div>
<br>
[$RODAPE_TEXTO$]<br/>
[$RODAPE_ENDERECO$]
</td>
</tr>
</table>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>portlet-gestao-mensagens</portlet-name>
<icon>/icon.png</icon>
<configuration-action-class>com.liferay.portal.kernel.portlet.DefaultConfigurationAction</configuration-action-class>
<indexer-class>br.mp.mprj.portal.portlet.gestaomensagens.search.indexer.TemplateIndexer</indexer-class>
<indexer-class>br.mp.mprj.portal.portlet.gestaomensagens.search.indexer.MensagemIndexer</indexer-class>
<indexer-class>br.mp.mprj.portal.portlet.gestaomensagens.search.indexer.GrupoDestinatarioIndexer</indexer-class>
<indexer-class>br.mp.mprj.portal.portlet.gestaomensagens.search.indexer.AgendamentoIndexer</indexer-class>
<scheduler-entry>
<scheduler-description>Job para enviar os e-mails das mensagens aprovadas e pendentes</scheduler-description>
<scheduler-event-listener-class>br.mp.mprj.portal.portlet.gestaomensagens.job.AgendamentoJob</scheduler-event-listener-class>
<trigger>
<cron>
<cron-trigger-value>0 0/2 * 1/1 * ? *</cron-trigger-value>
</cron>
</trigger>
</scheduler-entry>
<control-panel-entry-category>content</control-panel-entry-category>
<control-panel-entry-weight>4</control-panel-entry-weight>
<asset-renderer-factory>br.mp.mprj.portal.portlet.gestaomensagens.asset.MensagemAssetRendererFactory</asset-renderer-factory>
<workflow-handler>br.mp.mprj.portal.portlet.gestaomensagens.workflow.MensagemWorkflowHandler</workflow-handler>
<preferences-unique-per-layout>false</preferences-unique-per-layout>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
<header-portlet-css>/css/main.css</header-portlet-css>
<header-portlet-css>/css/owl.carousel.css</header-portlet-css>
<header-portlet-css>/css/owl.theme.css</header-portlet-css>
<header-portlet-javascript>/js/jquery.min.js</header-portlet-javascript>
<header-portlet-javascript>/js/owl.carousel.min.js</header-portlet-javascript>
<header-portlet-javascript>/js/jquery.maskedinput.min.js</header-portlet-javascript>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
<css-class-wrapper>gestao-msg-admin</css-class-wrapper>
</portlet>
<portlet>
<portlet-name>portlet-gestao-mensagens-cadastroUsuario</portlet-name>
<icon>/icon.png</icon>
<configuration-action-class>br.mp.mprj.portal.portlet.gestaomensagens.action.ConfiguracaoAction</configuration-action-class>
<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>gestao</friendly-url-mapping>
<friendly-url-routes>content/url-routes.xml</friendly-url-routes>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
<header-portlet-css>/css/main.css</header-portlet-css>
<css-class-wrapper>gestao-msg</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
\ No newline at end of file
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
version="2.0">
<portlet>
<portlet-name>portlet-gestao-mensagens</portlet-name>
<display-name>portlet-gestao-mensagens</display-name>
<portlet-class>br.mp.mprj.portal.portlet.gestaomensagens.principal.AdministracaoPortlet</portlet-class>
<init-param>
<name>check-auth-token</name>
<value>false</value>
</init-param>
<init-param>
<name>view-template</name>
<value>/jsp/view.jsp</value>
</init-param>
<init-param>
<name>action.package.prefix</name>
<value>br.mp.mprj.portal.portlet.gestaomensagens.action</value>
</init-param>
<init-param>
<name>add-process-action-success-action</name>
<value>false</value>
</init-param>
<init-param>
<name>config-jsp</name>
<value>/jsp/config.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<resource-bundle>content/Language</resource-bundle>
<portlet-info>
<title>Gestão de Mensagens</title>
<short-title>Gestão Mensagens</short-title>
<keywords>gestao mensagens mensagem portlet</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
<portlet>
<portlet-name>portlet-gestao-mensagens-cadastroUsuario</portlet-name>
<display-name>portlet-gestao-mensagens-cadastroUsuario</display-name>
<portlet-class>br.mp.mprj.portal.portlet.gestaomensagens.principal.AdministracaoPortlet</portlet-class>
<init-param>
<name>check-auth-token</name>
<value>false</value>
</init-param>
<init-param>
<name>view-template</name>
<value>/jsp/cadastro-usuario.jsp</value>
</init-param>
<init-param>
<name>action.package.prefix</name>
<value>br.mp.mprj.portal.portlet.gestaomensagens.action</value>
</init-param>
<init-param>
<name>add-process-action-success-action</name>
<value>true</value>
</init-param>
<init-param>
<name>config-template</name>
<value>/jsp/cadastro-usuario-config.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<resource-bundle>content/Language</resource-bundle>
<portlet-info>
<title>Gestão de Mensagens - Cadastro Usuário</title>
<short-title>Gestão de Mensagens - Cadastro Usuário</short-title>
<keywords>gestao mensagens mensagem portlet</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
</portlet-app>
\ No newline at end of file
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.2.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_2_0.dtd">
<service-builder package-path="br.mp.mprj.portal.portlet.gestaomensagens.service" auto-namespace-tables="false">
<author>Henrique Simoes</author>
<namespace>GESTMSG</namespace>
<entity name="Template" table="PRT_GESTMSG_TEMPLATE" uuid="true" remote-service="true" local-service="true">
<column name="templateId" type="long" primary="true"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="userId" type="long"/>
<column name="nome" type="String"/>
<column name="estilo" type="int"/>
<column name="ativo" type="boolean"/>
<column name="cabecalho" type="String"/>
<column name="rodape" type="String"/>
<column name="corpo" type="String"/>
<column name="dataCriacao" type="Date"/>
<column name="dataAtualizacao" type="Date"/>
<!-- Referenciao ao fileEntryId da imagem enviada -->
<column name="thumbnailFileEntryId" type="long"/>
<!-- URL da imagem enviada (quando ha upload) -->
<column name="thumbnailURL" type="String"/>
<finder name="GroupId"
return-type="Collection">
<finder-column name="groupId"/>
</finder>
<finder name="GroupIdNome"
return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template"
unique="true">
<finder-column name="groupId"/>
<finder-column name="nome"/>
</finder>
<finder name="NomeAtivo"
return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template"
unique="true">
<finder-column name="nome"/>
<finder-column name="ativo"/>
</finder>
</entity>
<entity name="Mensagem" table="PRT_GESTMSG_MENSAGEM" uuid="true" remote-service="true" local-service="true">
<column name="mensagemId" type="long" primary="true"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="templateId" type="long"/>
<column name="grupoDestinatarioIds" type="String"/>
<column name="contaSaidaId" type="long"/>
<column name="codigoMensagem" type="String"/>
<column name="assunto" type="String"/>
<column name="conteudo" type="String"/>
<column name="prioridade" type="int"/>
<column name="ativo" type="boolean"/>
<column name="tipoEnvio" type="int"/>
<column name="situacaoEnvio" type="int"/>
<column name="nomeSolicitante" type="String"/>
<column name="userIdCriador" type="long"/>
<column name="dataSolicitacao" type="Date"/>
<column name="dataUltimoEnvio" type="Date"/>
<column name="dataAlteracao" type="Date"/>
<column name="rascunho" type="boolean"/>
<column name="statusWorkflow" type="int"/>
<column name="userIdWorkflow" type="long"/>
<column name="dataStatusWorkflow" type="Date"/>
<column name="comentarioWorkflow" type="String"/>
<column name="clonagemPai" type="long"/>
<column name="literalAgendamento" type="String"/>
<column name="userIdCancel" type="long"/>
<column name="userIdAprovador" type="long"/>
<column name="userIdReprovador" type="long"/>
<column name="dataCancel" type="Date"/>
<column name="service" type="boolean"/>
<finder name="Codigo" return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem" unique="true">
<finder-column name="codigoMensagem"/>
</finder>
<finder name="GroupId" return-type="Collection">
<finder-column name="groupId"/>
</finder>
<finder name="StatusWorkflow" return-type="Collection">
<finder-column name="statusWorkflow"/>
</finder>
<finder name="UserIdCriador" return-type="Collection">
<finder-column name="userIdCriador"/>
</finder>
<finder name="RascunhoCriador" return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem">
<finder-column name="rascunho"/>
<finder-column name="userIdCriador"/>
</finder>
<reference package-path="com.liferay.portal" entity="User" />
<reference package-path="com.liferay.portlet.asset" entity="AssetEntry" />
<reference package-path="com.liferay.portal" entity="WorkflowDefinitionLink"></reference>
<reference package-path="com.liferay.portal" entity="WorkflowInstanceLink"></reference>
</entity>
<entity name="Agendamento" table="PRT_GESTMSG_AGENDAMENTO" uuid="true" remote-service="false" local-service="true">
<column name="agendamentoId" type="long" primary="true"/>
<column name="mensagemId" type="long"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="tipoAgendamento" type="int"/>
<!-- dataCalendario possui apenas a data do agendamento,
para fins de controle e pesquisa mais eficiente em determinadas situacoes
durante o calculo. -->
<column name="dataCalendario" type="Date"/>
<!-- dataInicio e dataFim possuem data e hora completas. -->
<column name="dataInicio" type="Date"/>
<column name="dataFim" type="Date"/>
<column name="padraoRecorrencia" type="int"/>
<column name="frequencia" type="int"/>
<column name="diarioTodos" type="boolean"/>
<column name="semanalDias" type="String"/>
<column name="mensalDiaFrequencia" type="int"/>
<column name="dataAtualizacao" type="Date"/>
<column name="dataEnvio" type="Date"/>
<column name="situacaoEnvio" type="int"/>
<column name="erroEnvio" type="boolean"/>
<column name="mensagemErro" type="String"/>
<order>
<order-column name="dataInicio" order-by="asc"/>
</order>
<finder name="MensagemTipo" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="tipoAgendamento"/>
</finder>
<finder name="MensagemTipoMultipo" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="tipoAgendamento" arrayable-operator="OR"/>
</finder>
<finder name="MensagemDataCalendario" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="dataCalendario"/>
</finder>
<finder name="Situacao" return-type="Collection">
<finder-column name="situacaoEnvio"/>
</finder>
<finder name="SituacaoMensagem" return-type="Collection">
<finder-column name="situacaoEnvio"/>
<finder-column name="mensagemId"/>
</finder>
<finder name="MensagemId" return-type="Collection">
<finder-column name="mensagemId"/>
</finder>
<finder name="MensagemIdSituacaoEnvio" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="situacaoEnvio"/>
</finder>
<!-- Finder para excluir os agendamentos de determinada mensagem, de terminado tipo,
com o status especifico e que o ID do agendamento nao esteja no array -->
<finder name="AgendamentoExclusao" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="tipoAgendamento" arrayable-operator="OR" />
<finder-column name="situacaoEnvio"/>
<finder-column name="agendamentoId" arrayable-operator="AND" comparator="!="/>
</finder>
</entity>
<entity name="EmailDestinatario" table="PRT_GESTMSG_MAIL_DESTINATARIO" uuid="true" remote-service="false" local-service="true">
<column name="emailDestinatarioId" type="long" primary="true"/>
<column name="email" type="String"/>
<column name="grupoDestinatarioId" type="long"/>
<finder name="GrupoDestinatarioId" return-type="Collection">
<finder-column name="grupoDestinatarioId"/>
</finder>
</entity>
<entity name="GrupoDestinatario" table="PRT_GESTMSG_GRP_DESTINATARIO" uuid="true" remote-service="true" local-service="true">
<column name="grupoDestinatarioId" type="long" primary="true"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="userId" type="long"/>
<column name="nome" type="String"/>
<column name="finalidade" type="String"/>
<column name="userIdResponsaveis" type="String"/>
<column name="listaTemporaria" type="boolean"/>
<column name="dataFinalListaTemporaria" type="Date"/>
<column name="envioEmNomeLista" type="boolean"/>
<column name="userIdNomesLista" type="String"/>
<column name="listaModerada" type="boolean"/>
<column name="userIdListaModerada" type="String"/>
<column name="ativo" type="boolean"/>
<column name="dataCriacao" type="Date"/>
<column name="dataAtualizacao" type="Date"/>
<column name="tipoLista" type="int"/>
<finder name="TipoListaAtivo" return-type="Collection">
<finder-column name="tipoLista"/>
<finder-column name="ativo"/>
</finder>
<finder name="NomeTipoListaAtivo" return-type="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario">
<finder-column name="nome"/>
<finder-column name="tipoLista"/>
<finder-column name="ativo"/>
</finder>
<finder name="GrupoDestinatarioIdArray" return-type="Collection">
<finder-column name="grupoDestinatarioId" arrayable-operator="OR"/>
</finder>
</entity>
<entity name="MensagemWorkflow" table="PRT_GESTMSG_MENSAGEM_WORKFLOW" uuid="true" remote-service="false" local-service="true">
<column name="mensagemWorkflowId" type="long" primary="true"/>
<column name="mensagemId" type="long"/>
<column name="userId" type="long"/>
<column name="status" type="int"/>
<column name="data" type="Date"/>
<column name="comentario" type="String"/>
<finder name="MensagemId" return-type="Collection">
<finder-column name="mensagemId"/>
</finder>
</entity>
<entity name="AnexoMensagem" table="PRT_GESTMSG_ANEXO_MENSAGEM" uuid="true" remote-service="false" local-service="true">
<column name="anexoMensagemId" type="long" primary="true"/>
<column name="mensagemId" type="long"/>
<column name="companyId" type="long"/>
<column name="groupId" type="long"/>
<column name="userId" type="long"/>
<column name="dataCriacao" type="Date"/>
<column name="anexoUrl" type="String"/>
<column name="fileName" type="String"/>
<column name="versao" type="String"/>
<column name="contentType" type="String"/>
<column name="ativo" type="boolean"/>
<column name="anexoFileEntryId" type="long"/>
<column name="anexoPath" type="String"/>
<finder name="MensagemIdAtivo" return-type="Collection">
<finder-column name="mensagemId"/>
<finder-column name="ativo"/>
</finder>
</entity>
</service-builder>
\ No newline at end of file
create index IX_B2BB3C9B on PRT_GESTMSG_AGENDAMENTO (mensagemId);
create index IX_257A84BD on PRT_GESTMSG_AGENDAMENTO (mensagemId, dataCalendario);
create index IX_C3FC0321 on PRT_GESTMSG_AGENDAMENTO (mensagemId, situacaoEnvio);
create index IX_CBC3D426 on PRT_GESTMSG_AGENDAMENTO (mensagemId, tipoAgendamento);
create index IX_2AB99FFA on PRT_GESTMSG_AGENDAMENTO (mensagemId, tipoAgendamento, situacaoEnvio, agendamentoId);
create index IX_6358D27B on PRT_GESTMSG_AGENDAMENTO (situacaoEnvio);
create index IX_A0040395 on PRT_GESTMSG_AGENDAMENTO (situacaoEnvio, mensagemId);
create index IX_8DCA6213 on PRT_GESTMSG_AGENDAMENTO (uuid_);
create index IX_40EDA835 on PRT_GESTMSG_AGENDAMENTO (uuid_, companyId);
create unique index IX_36BCB7F7 on PRT_GESTMSG_AGENDAMENTO (uuid_, groupId);
create index IX_AAB7F445 on PRT_GESTMSG_ANEXO_MENSAGEM (mensagemId);
create index IX_6719BEDA on PRT_GESTMSG_ANEXO_MENSAGEM (mensagemId, ativo);
create index IX_EEF00829 on PRT_GESTMSG_ANEXO_MENSAGEM (uuid_);
create index IX_128785F on PRT_GESTMSG_ANEXO_MENSAGEM (uuid_, companyId);
create unique index IX_ECE18AA1 on PRT_GESTMSG_ANEXO_MENSAGEM (uuid_, groupId);
create index IX_D471496A on PRT_GESTMSG_GRP_DESTINATARIO (grupoDestinatarioId);
create index IX_CC3E6DC8 on PRT_GESTMSG_GRP_DESTINATARIO (nome, tipoLista, ativo);
create index IX_1794A67B on PRT_GESTMSG_GRP_DESTINATARIO (tipoLista, ativo);
create index IX_37E03B59 on PRT_GESTMSG_GRP_DESTINATARIO (uuid_);
create index IX_9779672F on PRT_GESTMSG_GRP_DESTINATARIO (uuid_, companyId);
create unique index IX_213FED71 on PRT_GESTMSG_GRP_DESTINATARIO (uuid_, groupId);
create index IX_475B6B70 on PRT_GESTMSG_MAIL_DESTINATARIO (grupoDestinatarioId);
create index IX_B767BFDF on PRT_GESTMSG_MAIL_DESTINATARIO (uuid_);
create unique index IX_A5CC8173 on PRT_GESTMSG_MENSAGEM (codigoMensagem);
create index IX_B0F07EF on PRT_GESTMSG_MENSAGEM (groupId);
create index IX_2CBB7E3C on PRT_GESTMSG_MENSAGEM (rascunho, userIdCriador);
create index IX_30363020 on PRT_GESTMSG_MENSAGEM (statusWorkflow);
create index IX_19EEBEAF on PRT_GESTMSG_MENSAGEM (userIdCriador);
create index IX_E8D3CA39 on PRT_GESTMSG_MENSAGEM (uuid_);
create index IX_25D1CC4F on PRT_GESTMSG_MENSAGEM (uuid_, companyId);
create unique index IX_4EAF1A91 on PRT_GESTMSG_MENSAGEM (uuid_, groupId);
create index IX_A8F9E8C9 on PRT_GESTMSG_MENSAGEM_WORKFLOW (mensagemId);
create index IX_A9A05125 on PRT_GESTMSG_MENSAGEM_WORKFLOW (uuid_);
create index IX_2B34A40 on PRT_GESTMSG_TEMPLATE (groupId);
create unique index IX_1C82330D on PRT_GESTMSG_TEMPLATE (groupId, nome);
create unique index IX_666E8BE8 on PRT_GESTMSG_TEMPLATE (nome, ativo);
create index IX_46966CCA on PRT_GESTMSG_TEMPLATE (uuid_);
create index IX_C114951E on PRT_GESTMSG_TEMPLATE (uuid_, companyId);
create unique index IX_225BCB20 on PRT_GESTMSG_TEMPLATE (uuid_, groupId);
\ No newline at end of file
create table PRT_GESTMSG_AGENDAMENTO (
uuid_ VARCHAR(75) null,
agendamentoId LONG not null primary key,
mensagemId LONG,
companyId LONG,
groupId LONG,
tipoAgendamento INTEGER,
dataCalendario DATE null,
dataInicio DATE null,
dataFim DATE null,
padraoRecorrencia INTEGER,
frequencia INTEGER,
diarioTodos BOOLEAN,
semanalDias VARCHAR(75) null,
mensalDiaFrequencia INTEGER,
dataAtualizacao DATE null,
dataEnvio DATE null,
situacaoEnvio INTEGER,
erroEnvio BOOLEAN,
mensagemErro VARCHAR(75) null
);
create table PRT_GESTMSG_ANEXO_MENSAGEM (
uuid_ VARCHAR(75) null,
anexoMensagemId LONG not null primary key,
mensagemId LONG,
companyId LONG,
groupId LONG,
userId LONG,
dataCriacao DATE null,
anexoUrl VARCHAR(255) null,
fileName VARCHAR(255) null,
versao VARCHAR(75) null,
contentType VARCHAR(75) null,
ativo BOOLEAN,
anexoFileEntryId LONG,
anexoPath VARCHAR(255) null
);
create table PRT_GESTMSG_GRP_DESTINATARIO (
uuid_ VARCHAR(75) null,
grupoDestinatarioId LONG not null primary key,
companyId LONG,
groupId LONG,
userId LONG,
nome VARCHAR(75) null,
finalidade TEXT null,
userIdResponsaveis VARCHAR(75) null,
listaTemporaria BOOLEAN,
dataFinalListaTemporaria DATE null,
envioEmNomeLista BOOLEAN,
userIdNomesLista VARCHAR(75) null,
listaModerada BOOLEAN,
userIdListaModerada VARCHAR(75) null,
ativo BOOLEAN,
dataCriacao DATE null,
dataAtualizacao DATE null,
tipoLista INTEGER
);
create table PRT_GESTMSG_MAIL_DESTINATARIO (
uuid_ VARCHAR(75) null,
emailDestinatarioId LONG not null primary key,
email VARCHAR(75) null,
grupoDestinatarioId LONG
);
create table PRT_GESTMSG_MENSAGEM (
uuid_ VARCHAR(75) null,
mensagemId LONG not null primary key,
companyId LONG,
groupId LONG,
templateId LONG,
grupoDestinatarioIds VARCHAR(255) null,
contaSaidaId LONG,
codigoMensagem VARCHAR(75) null,
assunto VARCHAR(255) null,
conteudo TEXT null,
prioridade INTEGER,
ativo BOOLEAN,
tipoEnvio INTEGER,
situacaoEnvio INTEGER,
nomeSolicitante VARCHAR(75) null,
userIdCriador LONG,
dataSolicitacao DATE null,
dataUltimoEnvio DATE null,
dataAlteracao DATE null,
rascunho BOOLEAN,
statusWorkflow INTEGER,
userIdWorkflow LONG,
dataStatusWorkflow DATE null,
comentarioWorkflow STRING null,
clonagemPai LONG,
literalAgendamento TEXT null,
userIdCancel LONG,
userIdAprovador LONG,
userIdReprovador LONG,
dataCancel DATE null,
service BOOLEAN
);
create table PRT_GESTMSG_MENSAGEM_WORKFLOW (
uuid_ VARCHAR(75) null,
mensagemWorkflowId LONG not null primary key,
mensagemId LONG,
userId LONG,
status INTEGER,
data_ DATE null,
comentario STRING null
);
create table PRT_GESTMSG_TEMPLATE (
uuid_ VARCHAR(75) null,
templateId LONG not null primary key,
companyId LONG,
groupId LONG,
userId LONG,
nome VARCHAR(255) null,
estilo INTEGER,
ativo BOOLEAN,
cabecalho TEXT null,
rodape TEXT null,
corpo TEXT null,
dataCriacao DATE null,
dataAtualizacao DATE null,
thumbnailFileEntryId LONG,
thumbnailURL VARCHAR(255) null
);
\ No newline at end of file
/*
jQuery Masked Input Plugin
Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com)
Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
Version: 1.4.1
*/
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b,c=navigator.userAgent,d=/iphone/i.test(c),e=/chrome/i.test(c),f=/android/i.test(c);a.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},autoclear:!0,dataName:"rawMaskFn",placeholder:"_"},a.fn.extend({caret:function(a,b){var c;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof a?(b="number"==typeof b?b:a,this.each(function(){this.setSelectionRange?this.setSelectionRange(a,b):this.createTextRange&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select())})):(this[0].setSelectionRange?(a=this[0].selectionStart,b=this[0].selectionEnd):document.selection&&document.selection.createRange&&(c=document.selection.createRange(),a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length),{begin:a,end:b})},unmask:function(){return this.trigger("unmask")},mask:function(c,g){var h,i,j,k,l,m,n,o;if(!c&&this.length>0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(""),function(a,b){"?"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger("unmask").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a<g.placeholder.length?a:0)}function q(a){for(;++a<n&&!j[a];);return a}function r(a){for(;--a>=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(o&&o.length&&o.length>a.length){for(A(!0);b.begin>0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.begin<l&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}else{for(A(!0);b.begin<n&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}h()}function v(){A(),B.val()!=E&&B.change()}function w(a){if(!B.prop("readonly")){var b,c,e,f=a.which||a.keyCode;o=B.val(),8===f||46===f||d&&127===f?(b=B.caret(),c=b.begin,e=b.end,e-c===0&&(c=46!==f?r(c):e=q(c-1),e=46===f?q(e):e),y(c,e),s(c,e-1),a.preventDefault()):13===f?v.call(this,a):27===f&&(B.val(E),B.caret(0,A()),a.preventDefault())}}function x(b){if(!B.prop("readonly")){var c,d,e,g=b.which||b.keyCode,i=B.caret();if(!(b.ctrlKey||b.altKey||b.metaKey||32>g)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(""))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++<e.length;)if(c=e.charAt(d-1),j[b].test(c)){C[b]=c,f=b;break}if(d>e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join("")===D?(B.val()&&B.val(""),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(""),function(a,b){return"?"!=a?i[a]?p(b):a:void 0}),D=C.join(""),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join("")}),B.one("unmask",function(){B.off(".mask").removeData(a.mask.dataName)}).on("focus.mask",function(){if(!B.prop("readonly")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){B.get(0)===document.activeElement&&(z(),a==c.replace("?","").length?B.caret(0,a):B.caret(a))},10)}}).on("blur.mask",v).on("keydown.mask",w).on("keypress.mask",x).on("input.mask paste.mask",function(){B.prop("readonly")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off("input.mask").on("input.mask",u),A()})}})});
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<liferay-portlet:renderURL var="pesquisaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/listagem.jsp"/>
<liferay-portlet:param name="acao" value="pesquisar"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="viewURL">
<liferay-portlet:param name="admin" value="true"/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/listagem.jsp"/>
</liferay-portlet:renderURL>
<div class="span10 context-pane">
<div id="selecao-template-wrapper">
<liferay-ui:success key="destinatario.sucesso-gravar" message="destinatario.sucesso-gravar"/>
<liferay-ui:success key="destinatario.sucesso-excluir" message="destinatario.sucesso-excluir"/>
<liferay-ui:success key="destinatario.sucesso-atualizar" message="destinatario.sucesso-atualizar"/>
<liferay-ui:header title="destinatario.header.listagem"/>
<%
String orderByCol = ParamUtil.getString(request, "orderByCol");
String orderByType = ParamUtil.getString(request, "orderByType");
String sortingOrder = orderByType;
if(orderByType.equals("desc")){
orderByType = "asc";
}else{
orderByType = "desc";
}
String nomeParam = "";
String tipoListaParam = "";
// String nomeParam = (!"".equals(ParamUtil.getString(request, "nomeListaDestinatarioSearch")) ? ParamUtil.getString(request, "nomeListaDestinatarioSearch")
// : ParamUtil.getString(request, "nome"));
if (!"".equals(ParamUtil.getString(request, "nomeListaDestinatarioSearch"))){
nomeParam = ParamUtil.getString(request, "nomeListaDestinatarioSearch");
} else if (!"".equals(ParamUtil.getString(request, "nome")) && "".equals(ParamUtil.getString(request, "operacao"))){
nomeParam = ParamUtil.getString(request, "nome");
}
if (!"".equals(ParamUtil.getString(request, "tipoLista"))){
tipoListaParam = ParamUtil.getString(request, "tipoLista");
} else if (!"".equals(ParamUtil.getString(request, "tipoListaParam")) && "".equals(ParamUtil.getString(request, "operacao"))){
tipoListaParam = ParamUtil.getString(request, "tipoListaParam");
} else {
tipoListaParam = "-1";
}
//String nomeParam = ParamUtil.getString(request, "nomeListaDestinatarioSearch");
PortletURL portletURL = renderResponse.createRenderURL();
portletURL.setParameter("nome", nomeParam);
portletURL.setParameter("tipoListaParam", tipoListaParam);
portletURL.setParameter("mvcPath", "/jsp/admin/destinatario/listagem.jsp");
portletURL.setParameter("redirect", viewURL);
%>
<div class="formulario-lista-dados">
<liferay-ui:search-container
emptyResultsMessage="destinatario.lista.vazia"
deltaConfigurable="false"
orderByType="<%=orderByType%>"
iteratorURL="<%=portletURL%>">
<aui:form name="fmSearchDestinatario" cssClass="search-terms" action="#">
<aui:input name="nomeListaDestinatarioSearch"
cssClass="label-mensagem-dados"
value="${param.nome}"
type="text"
inlineField="false"
inlineLabel="left"
label="destinatario.busca.campo.nome"/>
<input type="hidden" name="operacao" id="operacao" value="pesquisa"/>
<label class="control-label"><liferay-ui:message key="lista.tipos"/></label>
<% if ("0".equals(tipoListaParam)) {%>
<span id="radioDestinatario">
<aui:input checked="true" name="tipoLista" id="tipoDestinatario" value="0" label="destinatario.lista" type="radio" inlineField="true" inlineLabel="left"/>
<% } else {%>
<span id="radioDestinatario">
<aui:input name="tipoLista" id="tipoDestinatario" value="0" label="destinatario.lista" type="radio" inlineField="true" inlineLabel="left"/>
</span>
<% }%>
<% if ("1".equals(tipoListaParam)) {%>
<span id="radioConta">
<aui:input checked="true" name="tipoLista" id="contaSaida" value="1" label="destinatario.conta" type="radio" inlineField="true" inlineLabel="left" >
</aui:input>
</span>
<% } else {%>
<span id="radioConta">
<aui:input name="tipoLista" id="contaSaida" value="1" label="destinatario.conta" type="radio" inlineField="true" inlineLabel="left" >
</aui:input>
</span>
<% }%>
<div>
<br/>
<aui:button cssClass="pesquisa" type="submit" value="search" onClick="alert(document.get('_portletgestaomensagens_WAR_portletgestaomensagens_nomeListaDestinatarioSearch').value)"/>&nbsp;
<aui:button type="cancel" value="Limpar" onClick="limparFormulario();"/>
</div>
<liferay-ui:search-container-results>
<%
Map<Integer , List<GrupoDestinatario>> retorno = GrupoDestinatarioSearch.pesquisar(renderRequest , themeDisplay.getCompanyId(),
searchContainer.getStart() , searchContainer.getEnd() , ParamUtil.getString(request, "orderByCol") , false);
java.util.Map.Entry entry = retorno.entrySet().iterator().next();
List<GrupoDestinatario> lista = (List<GrupoDestinatario>) entry.getValue();
pageContext.setAttribute("results", lista);
pageContext.setAttribute("total", entry.getKey());
%>
</liferay-ui:search-container-results>
<liferay-ui:search-container-row
className="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario"
escapedModel="true"
keyProperty="grupoDestinatarioId"
modelVar="grupoDestinatario"
rowIdProperty="grupoDestinatarioId">
<liferay-portlet:renderURL varImpl="rowURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/formulario.jsp"/>
<liferay-portlet:param name="grupoDestinatarioId" value="<%= String.valueOf(grupoDestinatario.getGrupoDestinatarioId()) %>" />
</liferay-portlet:renderURL>
<liferay-ui:search-container-column-text
href="<%= rowURL.toString() %>"
name="nome_sortable"
orderableProperty="nome_sortable"
orderable="true"
property="nome"
cssClass="tabela-td-center"
/>
<liferay-ui:search-container-column-text
href="<%= rowURL.toString() %>"
name="Finalidade"
orderableProperty="Finalidade"
property="finalidade"
cssClass="tabela-td-center"
/>
<liferay-ui:search-container-column-text
href="<%= rowURL.toString() %>"
name="Tipo da Lista"
orderable="false"
property="descricaoTipoLista"
cssClass="tabela-td-center"
/>
<liferay-ui:search-container-column-text name="table.header.acoes" align="center" cssClass="tabela-td-center">
<liferay-ui:icon-menu>
<liferay-ui:icon image="edit" url="<%= rowURL.toString() %>" />
<liferay-portlet:actionURL var="deleteURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='GrupoDestinatarioExcluir'/>
<liferay-portlet:param name="redirect" value="${pesquisaURL}" />
<liferay-portlet:param name="grupoDestinatarioId" value="<%= String.valueOf(grupoDestinatario.getGrupoDestinatarioId()) %>" />
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/listagem.jsp"/>
</liferay-portlet:actionURL>
<liferay-ui:icon-delete url="${deleteURL}"/>
</liferay-ui:icon-menu>
</liferay-ui:search-container-column-text>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator />
</aui:form>
</liferay-ui:search-container>
</div>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "ADICIONAR_MENSAGEM") %>'>
<liferay-portlet:renderURL var="novaListaDestinatario">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/formulario.jsp"/>
</liferay-portlet:renderURL>
<div class="botoes-acao-wizard-wrapper clearfix">
<br/>
<div class="botao-wizard-wrapper">
<a href="${novaListaDestinatario}" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="destinatario.nova-lista"/>
<!-- <i class="icon-circle-arrow-right"></i> -->
</a>
</div>
</div>
</c:if>
<div>
</div>
</div>
<aui:script use="node, liferay-search-container">
Liferay.provide(
window,
'limparFormulario',
function() {
var tituloMensagemSearch = A.one('#<portlet:namespace />nomeListaDestinatarioSearch');
tituloMensagemSearch.val("");
var tipoDestintario = A.one('#<portlet:namespace />tipoDestinatario');
tipoDestintario.attr('checked',false);
var contaSaida = A.one('#<portlet:namespace />contaSaida');
contaSaida.attr('checked',false);
}
);
</aui:script>
<script type="text/javascript">
$('.btn-group.lfr-icon-menu').width(120);
$('.lfr-pagination-delta-selector').hide();
$('.table-sort-liner').children().attr('href', $('.table-sort-liner').children().attr('href').replace('_portletgestaomensagens_WAR_portletgestaomensagens_cur=' , '_portletgestaomensagens_WAR_portletgestaomensagens_cur=1&R=' ));
document.getElementById("<portlet:namespace />nomeListaDestinatarioSearch").focus();
</script>
\ No newline at end of file
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.search.UserSearch"%>
<%@ include file="/jsp/init.jsp" %>
<liferay-portlet:renderURL var="pesquisaURL" windowState="<%=LiferayWindowState.POP_UP.toString()%>">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/destinatario/user-popup.jsp"/>
</liferay-portlet:renderURL>
<aui:form action="${pesquisaURL}" method="post" name="fmSearch" cssClass="search-terms">
<aui:input label="lista.usuario.nome" name="fullName" size="50" value="${param.fullName}" type="text" inlineField="true" />
<aui:input label="lista.usuario.email" name="emailAddress" size="50" value="${param.emailAddress}" type="text" inlineField="true" />
<aui:input type="hidden" name="tipoSelecao" value="${param.tipoSelecao}" />
<aui:button type="submit" value="search"/>
</aui:form>
<div class="separator"></div>
<%
PortletURL portletURL = renderResponse.createRenderURL();
portletURL.setParameter("fullName", ParamUtil.getString(request, "fullName"));
portletURL.setParameter("emailAddress", ParamUtil.getString(request, "emailAddress"));
portletURL.setParameter("tipoSelecao", ParamUtil.getString(request, "tipoSelecao"));
portletURL.setParameter("mvcPath", "/jsp/admin/destinatario/user-popup.jsp");
portletURL.setWindowState(LiferayWindowState.POP_UP);
%>
<aui:form name="fmUser" cssClass="search-results">
<liferay-ui:search-container
emptyResultsMessage="search.empty.usuarios"
delta="20" id="listaUsuarios"
deltaConfigurable="true"
iteratorURL="<%=portletURL%>"
rowChecker="<%= new RowChecker(renderResponse) %>">
<liferay-ui:search-container-results>
<%
Map<Integer , List<UserVO>> retorno = UserSearch.pesquisar(renderRequest, themeDisplay.getCompanyId(),
searchContainer.getStart() , searchContainer.getEnd() , ParamUtil.getString(request, "orderByCol"));
java.util.Map.Entry entry = retorno.entrySet().iterator().next();
List<UserVO> lista = (List<UserVO>) entry.getValue();
pageContext.setAttribute("results", lista);
pageContext.setAttribute("total", entry.getKey());
%>
</liferay-ui:search-container-results>
<liferay-ui:search-container-row
className="br.mp.mprj.portal.portlet.gestaomensagens.search.vo.UserVO"
escapedModel="true"
keyProperty="userId"
modelVar="users"
rowIdProperty="userId"
>
<aui:input name="userSel_${users.userId}_fullName" type="hidden" value="${users.fullName}"/>
<aui:input name="userSel_${users.userId}_emailAddress" type="hidden" value="${users.emailAddress}"/>
<liferay-ui:search-container-column-text
name="Nome"
property="fullName"
/>
<liferay-ui:search-container-column-text
name="Email"
property="emailAddress"
/>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator />
</liferay-ui:search-container>
<aui:button cssClass="btn-primary"
type="button"
value="atualizar.usuario.associacao"
onClick="javascript:selecionarUsuarios()"/>
</aui:form>
<aui:script use="node">
Liferay.provide(
window,
'selecionarUsuarios',
function() {
var tipoSelecao = '<%=ParamUtil.getString(request, "tipoSelecao")%>';
var idsSel = Liferay.Util.listChecked(document.<portlet:namespace/>fmUser).split(',');
var rowAdd = [];
for (var i = 0; i < idsSel.length; i++) {
var id = idsSel[i];
if (id == 'on' || id == '') continue;
var fullName = A.one("#<portlet:namespace/>userSel_" + id + "_fullName").val();
var emailAddress = A.one("#<portlet:namespace/>userSel_" + id + "_emailAddress").val();
var obj = {
id: id,
fullName: fullName,
emailAddress: emailAddress
}
rowAdd.push(obj);
}
if (tipoSelecao == 'R'){
Liferay.Util.getOpener().associarUsuariosResponsaveis(rowAdd);
} else if (tipoSelecao == 'M'){
Liferay.Util.getOpener().associarUsuariosModeracao(rowAdd);
} else if (tipoSelecao == 'N'){
Liferay.Util.getOpener().associarUsuariosEmNome(rowAdd);
}
},
['liferay-util-list-fields']
);
</aui:script>
\ No newline at end of file
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalServiceUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.impl.MensagemImpl"%>
<%@page import="javax.mail.search.MessageIDTerm"%>
<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.workflow.StatusWorkflowEnum"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.enums.SituacaoEnvioEnum"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalServiceUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem"%>
<%
Mensagem mensagem = null;
if (ParamUtil.getBoolean(renderRequest, "clonar")){
mensagem = MensagemLocalServiceUtil.clonaMensagem(ParamUtil.getLong(renderRequest, "mensagemId"), renderRequest);
portletSession.setAttribute("mensagem", mensagem);
} else {
mensagem = MensagemLocalServiceUtil.getMensagem(renderRequest);
}
boolean rascunhoRecuperado = GetterUtil.getBoolean((Boolean)portletSession.getAttribute("rascunhoRecuperado")) || (mensagem != null && mensagem.getRascunho());
boolean edicao = ParamUtil.getBoolean(renderRequest, "edicao") || (portletSession.getAttribute("edicao") != null && ((Boolean) portletSession.getAttribute("edicao")) ? true : false);
if (edicao){
portletSession.setAttribute("edicao", true);
} else {
portletSession.removeAttribute("edicao");
}
boolean revisao = false;
if (mensagem!= null && (mensagem.getStatusWorkflow() == StatusWorkflowEnum.PENDENTE_REVISAO.getStatus() || edicao)){
revisao = true;
rascunhoRecuperado = true;
}
pageContext.setAttribute("mensagem", mensagem);
Template template = null;
if (mensagem != null) {
template = mensagem.getTemplate();
pageContext.setAttribute("template", template);
if (!mensagem.isNew() && rascunhoRecuperado) {
pageContext.setAttribute("rascunhoRecuperado", rascunhoRecuperado);
}
if (mensagem.getStatusWorkflow() == StatusWorkflowEnum.PENDENTE_REVISAO.getStatus() && revisao){
pageContext.setAttribute("pendenteRevisao", true);
}
}
List<AnexoMensagem> anexos = null;
if (mensagem != null){
anexos = AnexoMensagemLocalServiceUtil.recuperaAnexosPorMensagem(mensagem.getMensagemId());
}
%>
<c:if test="${rascunhoRecuperado eq true}">
<liferay-portlet:renderURL var="descartarRedirectURL">
<!-- <liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="1"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="edicao" value=""/> -->
<portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp" />
<portlet:param name="navigation" value="preencher-mensagem" />
<portlet:param name="rascunho" value="true" />
<portlet:param name="primeiroPasso" value="true" />
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="descartarRascunhoURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='WizardMensagemDescartar'/>
<liferay-portlet:param name="mensagemId" value='${mensagem.mensagemId}'/>
<liferay-portlet:param name="redirect" value='${descartarRedirectURL}'/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="edicao" value="<%=String.valueOf(edicao)%>"/>
</liferay-portlet:actionURL>
<div class="alerta-rascunho-recuperado alert alert-warn">
<liferay-ui:message key="wizard.rascunho.recuperado"/>
<a href="${descartarRascunhoURL}"><liferay-ui:message key="wizard.rascunho.descartar"/></a>
</div>
</c:if>
<c:if test="${pendenteRevisao eq true}">
<div class="alerta-rascunho-recuperado alert alert-warn">
<liferay-ui:message key="wizard.revisando.mensagem"/>
</div>
</c:if>
<%@ include file="/jsp/admin/includes/wizard-navegacao.jspf" %>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<c:set var="portletImgFolder" value="${pageContext.request.contextPath}/images/preview-dispositivos"/>
<div id="preview-dispositivos" class="">
<aui:input name="htmlPreviewParametro" value='<%=ParamUtil.getString(request, "html")%>' type="hidden"/>
<div class="titulo" style="font-family:Verdana;font-size:10.0pt;">
<c:set var="tituloPreviewPadrao">
<liferay-ui:message key='preview.titulo-padrao'/>
</c:set>
<c:set var="tituloParam">
<%=ParamUtil.getString(request, "tituloPreview")%>
</c:set>
${empty tituloParam ? tituloPreviewPadrao : tituloParam}
</div>
<div class="corpo">
<div class="tipos-wrapper">
<div class="dispositivo desktop" data-tipo="desktop">
<div class="icone-wrapper">
<img src="${portletImgFolder}/desktop.png" class="icone">
</div>
<span class="nome" style="font-family:Verdana;font-size:10.0pt;"><liferay-ui:message key="preview.dispositivo.desktop"/></span>
</div>
<div class="dispositivo mobile" data-tipo="mobile">
<div class="icone-wrapper">
<img src="${portletImgFolder}/mobile.png" class="icone">
</div>
<span class="nome" style="font-family:Verdana;font-size:10.0pt;"><liferay-ui:message key="preview.dispositivo.mobile"/></span>
</div>
<div class="dispositivo tablet" data-tipo="tablet">
<div class="icone-wrapper">
<img src="${portletImgFolder}/tablet.png" class="icone">
</div>
<span class="nome" style="font-family:Verdana;font-size:10.0pt;"><liferay-ui:message key="preview.dispositivo.tablet"/></span>
</div>
<div style="clear: both;"></div>
</div>
<div style="clear: both;"></div>
<div id="preview-conteudo">
</div>
</div>
</div>
<aui:script use="node">
var containerPreview = A.one("#preview-dispositivos");
var objConteudo = A.one("#preview-conteudo");
var botoesDispositivos = A.all(".tipos-wrapper .dispositivo");
var hiddenHtmlParametro = A.one("#<portlet:namespace />htmlPreviewParametro");
var tipoSelecionado;
//atributos com dimensoes de cada dispositivo
var dispositivos = [
{
nome : 'desktop',
largura : '100%',
altura : '1024px'
},
{
nome : 'mobile',
largura: '480px',
altura : '640px'
},
{
nome : 'tablet',
largura: '768px',
altura : '1024px'
}
];
//define o evento para cada icone que representa um dispositivo
//executando a funcao previewConteudo, passando como parametro definido
//no atributo data-tipo.
botoesDispositivos.each(function(){
var obj = this;
obj.on('click', function(){
<portlet:namespace />previewConteudo(obj.attr("data-tipo"));
});
});
function getDispositivo(nome) {
if (nome == undefined) {
nome = tipoSelecionado;
}
if (nome != undefined) {
for (var i = 0; i < dispositivos.length; i++) {
if (dispositivos[i].nome == nome) {
return dispositivos[i];
}
}
}
return undefined;
}
function definirTipoSelecionado(nomeDispositivo) {
if (nomeDispositivo == undefined) return;
//desmarcar o ativo
botoesDispositivos.removeClass('ativo');
//definir o ativo de acordo com o dispositivo atual
A.one('.tipos-wrapper .dispositivo.' + nomeDispositivo).addClass('ativo');
tipoSelecionado = nomeDispositivo;
}
//funcao para atualizar o preview, a partir do click de algum dispositivo ou outro elemento
Liferay.provide(
window,
'<portlet:namespace />previewConteudo',
function(nomeDispositivo, conteudo) {
definirTipoSelecionado(nomeDispositivo);
var dispositivo = getDispositivo(nomeDispositivo);
if (dispositivo != undefined) {
//obter valor numerico da configuracao do dispositivo, de acordo com o tipo: % ou px
var valLarguraDisposivo = dispositivo.largura.indexOf('%') >= 0 ? containerPreview.width() : parseInt(dispositivo.largura, 10);
//verifica se o container principal, com os componentes de pre-visualizacao, comportara a largura do dispostivo
//sem exceder sua largura, caso contrario, define o tamanho do corpo do preview para 100%
objConteudo.setStyle('width', (containerPreview.width() >= valLarguraDisposivo ? dispositivo.largura : '100%'));
//objConteudo.setStyle('height', dispositivo.altura);
objConteudo.setStyle('max-height', dispositivo.altura);
if (conteudo != undefined) {
objConteudo.html(conteudo);
}
else if (window.definirConteudoPreview != undefined) {
conteudo = window.definirConteudoPreview();
if (conteudo != undefined) {
objConteudo.html(conteudo);
}
}
else if (hiddenHtmlParametro.val() != '') {
objConteudo.html(hiddenHtmlParametro.val());
}
else {
console.error('Conteúdo não definido!')
}
}
else {
console.error('Dispositivo não encontrado!');
}
}
);
//versao da funcao sem prefixo com portletnamespace.
Liferay.provide(
window,
'previewConteudo',
function(nomeDispositivo, conteudo) {
<portlet:namespace />previewConteudo(nomeDispositivo, conteudo);
}
);
//funcao para ser executado a partir de eventos definidos no CKEditor atraves da tag
//aui:input-editor, evitando utilizar o valor no parametro da funcao, que eh definido
//por padrao pelo proprio evento disparado pelo editor, com o valor do campo.
//Neste caso, esta informacao nao eh necessaria e pode causar problemas nas funcionalidades do preview,
//ja que o parametro padrao do preview eh o nome do dispositivo, e o evento disparado pelo editor manda todo
//o conteudo do campo!
Liferay.provide(
window,
'<portlet:namespace />previewConteudoEventoEditor',
function(conteudoEditor) {
//executa a funcao para pre-visualizar o conteudo com base nos editores HTML da pagina,
//e nao apenas o conteudo do editor que disparou o evento
<portlet:namespace />previewConteudo();
}
);
//inicializar com o dispositivo padrao: desktop
<portlet:namespace />previewConteudo('desktop');
</aui:script>
<%-- Referencia p/ navegacao lateral:
/liferay-portal-src-6.2-ee-sp11/portal-web/docroot/html/portlet/journal/view_folders.jsp
--%>
<%
String navigation = ParamUtil.getString(request, "navigation", "moduloPadrao");
%>
<div class="span2 navigation-pane">
<div id="<portlet:namespace/>menuLateralContainer" class="menu-lateral-wrapper">
<div id="<portlet:namespace />folderContainer">
<aui:nav cssClass="nav-list well">
<c:if test="${not empty parentTitle}">
<li class="nav-header">
${parentTitle}
</li>
</c:if>
<!-- Inicio do item de menu do modulo -->
<liferay-portlet:renderURL varImpl="viewModuloTemplateURL">
<portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp" />
<portlet:param name="navigation" value="preencher-mensagem" />
<portlet:param name="rascunho" value="true" />
<portlet:param name="primeiroPasso" value="true" />
</liferay-portlet:renderURL>
<liferay-portlet:renderURL varImpl="viewModuloDestinatarioURL">
<portlet:param name="mvcPath" value="/jsp/admin/destinatario/listagem.jsp" />
<portlet:param name="navigation" value="template" />
</liferay-portlet:renderURL>
<liferay-portlet:renderURL varImpl="viewModuloPainelMensagemURL">
<portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel.jsp" />
<portlet:param name="navigation" value="template" />
</liferay-portlet:renderURL>
<% Map<String, Object> dataView = new HashMap<String, Object>(); %>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "LISTAR_TEMPLATE") %>'>
<% dataView.put("navigation", "preencher-mensagem"); %>
<liferay-ui:app-view-navigation-entry
dataView="<%= dataView %>"
entryTitle='Mensagem e Modelos'
selected='<%= navigation.equals("preencher-mensagem") %>'
viewURL="<%= viewModuloTemplateURL.toString() %>"
/>
</c:if>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "MANTER_LISTAS") %>'>
<%
dataView = new HashMap<String, Object>();
dataView.put("navigation", "destinatario");
%>
<liferay-ui:app-view-navigation-entry
dataView="<%= dataView %>"
entryTitle='Gerenciar Listas'
selected='<%= navigation.equals("destinatario") %>'
viewURL="<%= viewModuloDestinatarioURL.toString() %>"
/>
</c:if>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "LISTAR_PAINEL_APROVACAO") %>'>
<%
dataView = new HashMap<String, Object>();
dataView.put("navigation", "painel-mensagem");
%>
<liferay-ui:app-view-navigation-entry
dataView="<%= dataView %>"
entryTitle='Painel de Mensagens'
selected='<%= navigation.equals("painel-mensagem") %>'
viewURL="<%= viewModuloPainelMensagemURL.toString() %>"
/>
</c:if>
<!-- Termino do item de menu do modulo -->
</aui:nav>
</div>
</div>
</div>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<liferay-portlet:renderURL var="pesquisaURL" windowState="<%=LiferayWindowState.POP_UP.toString()%>">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/destinatario-popup.jsp"/>
</liferay-portlet:renderURL>
<%
String orderByCol = ParamUtil.getString(request, "orderByCol");
String orderByType = ParamUtil.getString(request, "orderByType");
String sortingOrder = orderByType;
if(orderByType.equals("desc")){
orderByType = "asc";
}else{
orderByType = "desc";
}
String nomeParam = "";
if (!"".equals(ParamUtil.getString(request, "nomeListaDestinatarioSearch"))){
nomeParam = ParamUtil.getString(request, "nomeListaDestinatarioSearch");
} else if (!"".equals(ParamUtil.getString(request, "nome")) && "".equals(ParamUtil.getString(request, "operacao"))){
nomeParam = ParamUtil.getString(request, "nome");
}
PortletURL portletURL = renderResponse.createRenderURL();
portletURL.setParameter("nome", nomeParam);
portletURL.setParameter("tipoListaParam", "0");
portletURL.setParameter("mvcPath", "/jsp/admin/mensagem/destinatario-popup.jsp");
portletURL.setWindowState(LiferayWindowState.POP_UP);;
%>
<aui:form action="${pesquisaURL}" method="post" name="fmSearch" cssClass="search-terms">
<aui:input name="tipoLista" value="0" type="hidden" />
<aui:input name="nomeListaDestinatarioSearch"
cssClass="label-mensagem-dados"
value="${param.nome}"
type="text"
inlineField="false"
inlineLabel="left"
label="destinatario.busca.campo.nome"/>
<aui:button type="submit" value="search"/>
</aui:form>
<div class="separator"></div>
<aui:form name="fmDestinatarios" cssClass="search-results">
<liferay-ui:search-container
emptyResultsMessage="destinatario.lista.vazia"
deltaConfigurable="false"
delta="10"
orderByType="<%=orderByType %>"
iteratorURL="<%=portletURL%>"
rowChecker="<%= new RowChecker(renderResponse) %>">
<liferay-ui:search-container-results>
<%
Map<Integer , List<GrupoDestinatario>> retorno = GrupoDestinatarioSearch.pesquisar(renderRequest , themeDisplay.getCompanyId(),
searchContainer.getStart() , searchContainer.getEnd() , ParamUtil.getString(request, "orderByCol"), false);
java.util.Map.Entry entry = retorno.entrySet().iterator().next();
List<GrupoDestinatario> lista = (List<GrupoDestinatario>) entry.getValue();
pageContext.setAttribute("results", lista);
pageContext.setAttribute("total", entry.getKey());
%>
</liferay-ui:search-container-results>
<liferay-ui:search-container-row
className="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario"
escapedModel="true"
keyProperty="grupoDestinatarioId"
modelVar="grupoDestinatario"
rowIdProperty="grupoDestinatarioId">
<aui:input name="destinatario_${grupoDestinatario.grupoDestinatarioId}_nome" type="hidden" value="${grupoDestinatario.nome}"/>
<input type="hidden" name="operacao" id="operacao" value="pesquisa"/>
<liferay-ui:search-container-column-text
name="Nome"
orderable="false"
property="nome"
cssClass="tabela-td-center"
/>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator />
</liferay-ui:search-container>
<aui:button cssClass="btn-primary"
type="button"
value="atualizar-associacao-destinatarios"
onClick="javascript:selecionarRegistros()"/>
</aui:form>
<aui:script use="node">
Liferay.provide(
window,
'selecionarRegistros',
function() {
//cria um array de objetos com as informações dos usuários selecionados,
//para que sejam incluídos na página que originou o popup, para futura persistência na base.
var idsSel = Liferay.Util.listChecked(document.<portlet:namespace/>fmDestinatarios).split(',');
var rowAdd = [];
for (var i = 0; i < idsSel.length; i++) {
var id = idsSel[i];
if (id == 'on' || id == '') continue;
//campos hidden criados através do componente searchContainer
var nome = A.one("#<portlet:namespace/>destinatario_" + id + "_nome").val();
var obj = {
id: id,
nome: nome
}
rowAdd.push(obj);
}
Liferay.Util.getOpener().associarDestinatarios(rowAdd);
},
['liferay-util-list-fields']
);
</aui:script>
<script>
$('.lfr-pagination-delta-selector').hide();
</script>
<%@page import="com.liferay.portal.theme.ThemeDisplay"%>
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<style>
.delta-selector,.page-selector {
display: none
}
</style>
<div class="span10 context-pane">
<liferay-ui:success key="template-sucesso-gravar" message="template.sucesso-gravar"/>
<%@ include file="/jsp/admin/includes/carregar-dados-wizard.jspf" %>
<aui:model-context bean="<%= mensagem %>" model="<%= Mensagem.class %>" />
<%
String conteudoEditor = (mensagem != null ? mensagem.getConteudo() : StringPool.BLANK);
if (template != null && template.getEstilo() == 1 && conteudoEditor == ""){
conteudoEditor = template.getCorpo();
}
boolean papelAprovador = WorkflowUtil.isAprovador(renderRequest);
%>
<div class="formulario-mensagem-dados">
<liferay-ui:header title="mensagem.header.formulario"/>
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/pre-visualizar.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="3"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="paginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="tipoListaParam" value="0"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="formularioMensagemURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="paginaAnteriorURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="1"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="processarPassoURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='WizardMensagemDados'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:actionURL>
<aui:form name="fmDadosMensagem" action="${processarPassoURL}" method="post" enctype="multipart/form-data">
<aui:input name="redirect" value="${proximaPaginaURL}" type="hidden"/>
<aui:input name="rascunho" value="${param.rascunho}" type="hidden"/>
<aui:input name="templateId" value="${template.templateId}" type="hidden"/>
<aui:input name="goBack" value="${paginaAnteriorURL}" type="hidden" />
<input type="hidden" name="temAnexos" id="temAnexos" value="0"/>
<aui:fieldset>
<% if (papelAprovador && !revisao) { %>
<aui:input name="checkAprovacao" label="mensagem.aprovacao.direta" type="checkbox" checked="${mensagem != null && mensagem.statusWorkflow == 0}"/>
<% }%>
<aui:input name="nomeSolicitante"
type="text"
label="mensagem.solicitante"
required="true"
inlineLabel="left"
showRequiredLabel="false"
wrapperCssClass="label-mensagem-dados"
cssClass="span6">
<aui:validator name="maxLength">75</aui:validator>
</aui:input>
<aui:field-wrapper cssClass="label-mensagem-dados form-inline container-destinatarios">
<label class="control-label">
<liferay-ui:message key="mensagem.destinatarios"/>
</label>
<div class="lista-destinatarios-wrapper">
<div class="alert alert-error validacao destinatario"><liferay-ui:message key="mensagem.validacao.erro.destinatario"/></div>
<liferay-ui:icon
cssClass="selecionar-destinatarios"
iconCssClass="icon-search"
id="selectDestinatarioLink"
label="<%= true %>"
linkCssClass="btn"
message="mensagem.selecionar-destinatarios"
url="javascript:;"
/>
<liferay-ui:search-container
headerNames="Nome"
rowChecker="<%= new RowChecker(renderResponse) %>">
<liferay-ui:search-container-results>
<%
List<GrupoDestinatario> lista = GrupoDestinatarioLocalServiceUtil
.findByGrupoDestinatarioIdArray(
mensagem.getGrupoDestinatarioIds());
if (lista != null){
pageContext.setAttribute("results", lista);
pageContext.setAttribute("total", lista.size());
}
%>
</liferay-ui:search-container-results>
<liferay-ui:search-container-row
className="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario"
escapedModel="true"
keyProperty="grupoDestinatarioId"
modelVar="grupoDestinatario"
rowIdProperty="grupoDestinatarioId">
<liferay-ui:search-container-column-text
name="Nome"
orderable="false"
property="nome"
cssClass="tabela-td-center"
/>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator paginate="<%=false%>"/>
</liferay-ui:search-container>
<aui:button cssClass="remover-destinatarios" type="button" value="delete" onClick="javascript:excluirDestinatarios()"/>
</div>
<div class="clearfix"></div>
</aui:field-wrapper>
<div class="label-mensagem-dados">
<aui:select name="contaSaidaId"
label="mensagem.conta-saida"
required="true"
inlineLabel="left"
showRequiredLabel="false">
<aui:option value=""><liferay-ui:message key="mensagem.opcao.conta-saida"/></aui:option>
<c:forEach var="contaSaida" items="<%=GrupoDestinatarioSearch.pesquisar(renderRequest ,themeDisplay.getCompanyId(), TipoListaEnum.CONTA_SAIDA.getId(), true)%>">
<aui:option value="${contaSaida.grupoDestinatarioId}">${contaSaida.nome}</aui:option>
</c:forEach>
</aui:select>
<aui:select name="prioridadeId"
label="mensagem.prioridade"
required="true"
inlineLabel="left"
inlineField="false"
showRequiredLabel="false">
<aui:option value="0"><liferay-ui:message key="mensagem.prioridade.baixa"/></aui:option>
<aui:option value="1"><liferay-ui:message key="mensagem.prioridade.alta"/></aui:option>
</aui:select>
</div>
<aui:input name="assunto"
type="text"
label="mensagem.assunto"
required="true"
inlineLabel="left"
showRequiredLabel="false"
wrapperCssClass="label-mensagem-dados"
cssClass="span6">
<aui:validator name="maxLength">255</aui:validator>
</aui:input>
<div class="alert alert-success" style="display:none;" id="div_msg_conteudo_editado">
<liferay-ui:message key="mensagem.conteudo.editado"/>
</div>
<div class="alert alert-error validacao conteudo"><liferay-ui:message key="mensagem.validacao.erro.conteudo"/></div>
<button id="myBtn" class="btn taglib-icon"><liferay-ui:message key="mensagem.editar.conteudo"/></button>
<input type="file" id="file" name="uploadedFile" multiple="multiple" style="display: none;">
<input type="button" class="btn taglib-icon" value="Anexar arquivos..." onclick="document.getElementById('file').click();" />
<div id="myModal" class="modal-message">
<div class="modal-message-content">
<span class="close-message"><liferay-ui:message key="mensagem.edicao.salvar"/></span>
<aui:field-wrapper label="mensagem.conteudo" cssClass="conteudo-wrapper">
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorConteudo" %>'
toolbarSet="liferay-article"
name="editorConteudo"/>
<aui:input name="conteudo" type="hidden"/>
</aui:field-wrapper>
</div>
</div>
<div>
<% if (anexos != null && anexos.size() > 0 ) {%>
<div>
<p></p>
<p><strong><liferay-ui:message key="anexos.visualizacao"/>:</strong></p>
<table class="table table-bordered table-hover table-striped">
<% for (AnexoMensagem anexo : anexos) {%>
<liferay-portlet:actionURL varImpl="removerAnexo">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='AnexoMensagemExcluir'/>
<liferay-portlet:param name="redirect" value="${formularioMensagemURL}" />
<liferay-portlet:param name="anexoMensagemId" value="<%= String.valueOf(anexo.getAnexoMensagemId()) %>" />
</liferay-portlet:actionURL>
<tr>
<td>
<a href="<%=anexo.getAnexoUrl()%>"><%=anexo.getFileName()%></a>
</td>
<td >
<a href="${removerAnexo}" ><liferay-ui:message key="anexo.remover"/></a>
</td>
</tr>
<%} %>
</table>
</div>
<%} %>
</div>
<div id="fileList"></div>
</aui:fieldset>
<hr/>
</aui:form>
<div class="botoes-acao-wizard-wrapper clearfix">
<div class="botao-wizard-wrapper lado-esquerdo">
<a href="javascript:window.location.href = $('#<portlet:namespace/>goBack').val()" id="<portlet:namespace/>btAnterior" class="botao-wizard anterior">
<i class="icon-circle-arrow-left"></i>
<liferay-ui:message key="wizard.navegacao.botao.template.selecionar"/>
</a>
</div>
<div class="botao-wizard-wrapper lado-direito">
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="wizard.navegacao.botao.mensagem.pre-visualizar"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
<liferay-portlet:renderURL var="selDestinatariosURL" windowState="<%=LiferayWindowState.POP_UP.toString()%>">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/destinatario-popup.jsp"/>
<liferay-portlet:param name="tipoLista" value="0"/>
</liferay-portlet:renderURL>
<aui:script use="node,liferay-search-container">
var dialogId = 'dialogSelDestinatarios';
var searchContainer = Liferay.SearchContainer.get('<portlet:namespace />grupoDestinatariosSearchContainer');
//template para o checkbox a ser adicionado na tabela de resultados
var templateChkBoxSearch = "<input name='<portlet:namespace/>rowIds' type='checkbox' value='_ID_' onclick='Liferay.Util.checkAllBox(AUI().one(this).ancestor('.table'), '<portlet:namespace/>rowIds', '<portlet:namespace/>allRowIds');AUI().one(this).ancestor('tr:not(.lfr-template)').toggleClass('info');'>";
var hiddenConteudo = A.one("#<portlet:namespace />conteudo");
A.one("#<portlet:namespace/>btProximo").on('click', function() {
gravarDadosMensagem('${proximaPaginaURL}');
});
A.one("#file").on('change', function() {
$("#temAnexos").val(1);
gravarDadosMensagem('${paginaURL}');
});
A.one('#<portlet:namespace />selectDestinatarioLink', true).on(
'click',
function(event) {
exibirSelDestinatarioPopup();
}
);
function atualizarInputsHTML() {
//atualizar o valor dos campos hidden com o que estiver informado no CKEditor HTML
hiddenConteudo.val(window.<portlet:namespace />editorConteudo.getHTML());
}
function gravarDadosMensagem(urlRedirect) {
atualizarInputsHTML();
if (validarForm()) {
A.one('#<portlet:namespace/>redirect').val(urlRedirect);
submitForm(document.<portlet:namespace/>fmDadosMensagem);
}
}
function validarForm() {
exibirMsgValidadaoEditor(false);
if (hiddenConteudo.val() == '') {
exibirMsgValidadaoEditor(true, 'conteudo');
return false;
}
else if (searchContainer.getData() == '') {
exibirMsgValidadaoEditor(true, 'destinatario');
window.scroll(0,0);
return false;
}
return true;
}
Liferay.provide(
window,
'anexar',
function() {
gravarDadosMensagem('${paginaURL}');
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorConteudo',
function() {
window.<portlet:namespace />editorConteudo.setHTML("<%= UnicodeFormatter.toString(conteudoEditor) %>");
}
);
Liferay.provide(
window,
'associarDestinatarios',
function(destinatarios) {
Liferay.Util.getWindow(dialogId).hide();
if (destinatarios != undefined && destinatarios != null) {
for (var i = 0; i < destinatarios.length; i++) {
var dest = destinatarios[i];
if (possuiDestinatario(dest.id)) continue;
var rowColumns = [];
rowColumns.push(templateChkBoxSearch.replace("_ID_", dest.id));
rowColumns.push(dest.nome);
$(".validacao.destinatario").hide();
searchContainer.addRow(rowColumns, dest.id);
searchContainer.updateDataStore();
}
ocultarExibirAlertaSemDestinatario(false);
ocultarExibirBtExclusao(searchContainer.getData() != '');
}
}
);
Liferay.provide(
window,
'exibirSelDestinatarioPopup',
function() {
Liferay.Util.openWindow({
dialog: {
centered: true,
modal: true
},
id: dialogId,
title: "<liferay-ui:message key='mensagem.selecionar-destinatarios' />",
uri: '${selDestinatariosURL}'
});
}
);
function possuiDestinatario(destinatarioId) {
//verificar se o ID já foi selecionado.
//caso já exista, retorna true.
var ids = searchContainer.getData(true); //retorna um array (parâmetro true)
var index = A.Array.indexOf(ids, destinatarioId.toString());
return (index > -1);
}
function ocultarExibirAlertaSemDestinatario(exibir) {
var div = A.one(".alert-info.grupo-destinatario");
if (div != null) {
if (exibir) {
div.show();
}
else {
div.hide();
}
}
}
Liferay.provide(
window,
'excluirDestinatarios',
function() {
//cria um array de objetos com as informações dos destinatarios selecionados,
//para que sejam incluídos na página que originou o popup, para futura persistência na base.
var idsSel = Liferay.Util.listChecked(document.<portlet:namespace/>fmDadosMensagem).split(',');
if (idsSel != null) {
for (var i = 0; i < idsSel.length; i++) {
var id = idsSel[i];
if (id == 'on' || id == '') continue;
//obter o elemento TR relacionado com o checkbox, para exclusao
var tr = A.one("input[name='<portlet:namespace/>rowIds'][value='" + id + "']").ancestor("tr");
searchContainer.deleteRow(tr, id);
}
}
ocultarExibirBtExclusao(searchContainer.getData() != '');
},
['liferay-util-list-fields']
);
function ocultarExibirBtExclusao(exibir) {
var div = A.one("button.remover-destinatarios");
if (div != null) {
div.setStyle("display", (exibir == true ? "block" : "none"));
}
}
// Get the modal
var modal = document.getElementById('myModal');
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close-message")[0];
// When the user clicks the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
var altura = $('.modal-message-content').height() - 130;
$('.cke_reset').css('min-height',altura + 'px');
return false;
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
document.getElementById("div_msg_conteudo_editado").style.display = "block";
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
document.getElementById("div_msg_conteudo_editado").style.display = "block";
modal.style.display = "none";
}
}
$(document).ready(function(){
$(window).resize(function(){
var altura = $('.modal-message-content').height() - 130;
$('.cke_reset').css('min-height',altura + 'px');
});
});
ocultarExibirBtExclusao(searchContainer.getData() != '');
document.getElementById('<portlet:namespace/>prioridadeId').value = '<%=mensagem.getPrioridade()%>';
</aui:script>
<script type="text/javascript">
document.getElementById("<portlet:namespace />nomeSolicitante").focus();
</script>
\ No newline at end of file
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalServiceUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem"%>
<%@ include file="/jsp/init.jsp"%>
<%@ page import="com.liferay.portal.kernel.util.StringBundler" %>
<%
Mensagem mensagem = MensagemLocalServiceUtil.getMensagem(ParamUtil.getLong(renderRequest, "mensagemId"));
pageContext.setAttribute("mensagem", mensagem);
StringBundler sb = null;
String nomeRemetente = "";
if (mensagem != null) {
if (mensagem.getTemplate() == null && mensagem.getTemplateId() > 0){
mensagem.setTemplate(TemplateLocalServiceUtil.getTemplate(mensagem.getTemplateId()));
Template template = null;
if (mensagem != null) {
template = mensagem.getTemplate();
pageContext.setAttribute("template", template);
}
}
long[] destIds = GetterUtil.getLongValues(mensagem.getGrupoDestinatarioIds().split("\\s"));
List<GrupoDestinatario> destinatarios = new ArrayList<GrupoDestinatario>();
for (long id : destIds) {
destinatarios.add(GrupoDestinatarioLocalServiceUtil.getGrupoDestinatario(id));
}
sb = new StringBundler(destinatarios.size() * 2);
for (int i = 0; i < destinatarios.size(); i++) {
GrupoDestinatario dest = destinatarios.get(i);
if (i > 0) {
sb.append(StringPool.COMMA + StringPool.SPACE);
}
sb.append(dest.getNome());
}
GrupoDestinatario remetente = GrupoDestinatarioLocalServiceUtil.getGrupoDestinatario(mensagem.getContaSaidaId());
nomeRemetente = remetente.getNome();
}
List<AnexoMensagem> anexos = null;
if (mensagem != null){
anexos = AnexoMensagemLocalServiceUtil.recuperaAnexosPorMensagem(mensagem.getMensagemId());
}
%>
<div class="context-pane painel-mensagens">
<c:set var="htmlMensagem">
<c:choose>
<c:when test="${template.templateId > 0 && template.estilo == 0}">
${template.cabecalho}
${mensagem.conteudo}
${template.rodape}
</c:when>
<c:otherwise>
<!-- {template.corpo}-->
${mensagem.conteudo}
</c:otherwise>
</c:choose>
</c:set>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="mensagem.solicitante"/>: </strong><%=mensagem.getNomeSolicitante()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="destinatario.lista"/>: </strong><%=sb.toString()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="destinatario.conta"/>: </strong><%=nomeRemetente%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="mensagem.assunto"/>: </strong><%=mensagem.getAssunto()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><%=mensagem.getLiteralAgendamento()%></p>
</div>
<% if (anexos != null && anexos.size() > 0 ) {%>
<div>
<p></p>
<p><strong><liferay-ui:message key="anexos.visualizacao"/>:</strong></p>
<% for (AnexoMensagem anexo : anexos) {%>
<a target="_blank" href="<%=anexo.getAnexoUrl()%>"><%=anexo.getFileName()%></a> <br/>
<%} %>
</div>
<%} %>
<div><p></p></div>
<aui:input name="htmlMensagem" value="${htmlMensagem}" type="hidden" />
<c:set var="tituloPreview">
<liferay-ui:message key='mensagem.titulo-preview' />
</c:set>
<liferay-util:include
page="/jsp/admin/includes/componente-preview-html.jsp"
servletContext="<%=this.getServletContext()%>">
<liferay-util:param name="tituloPreview" value="${tituloPreview}" />
<liferay-util:param name="html" value="${htmlMensagem}" />
</liferay-util:include>
</div>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalServiceUtil"%>
<%@ include file="/jsp/init.jsp" %>
<%@ page import="com.liferay.portal.kernel.util.StringBundler" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<%
PortletURL urlBack = renderResponse.createRenderURL();
urlBack.setParameter("jspPage", "/jsp/admin/mensagem/painel.jsp");
%>
<div class="span10 context-pane">
<div>
<liferay-ui:header
backURL="<%= urlBack.toString()%>"
title="mensagem.painel.controle" />
</div>
</div>
<div class="span10 context-pane">
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel.jsp"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="aprovarMensagem">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='MensagemWorkFlow'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel-aprovacao.jsp"/>
<liferay-portlet:param name="acao" value="approve"/>
</liferay-portlet:actionURL>
<liferay-portlet:actionURL var="reprovarMensagem">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='MensagemWorkFlow'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel-aprovacao.jsp"/>
<liferay-portlet:param name="acao" value="reject"/>
</liferay-portlet:actionURL>
<liferay-portlet:actionURL varImpl="cancelarMensagem">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='MensagemWorkFlow'/>
<liferay-portlet:param name="mensagemId" value='<%= ParamUtil.getString(renderRequest, "mensagemId") %>' />
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/painel.jsp"/>
<liferay-portlet:param name="acao" value="cancel"/>
</liferay-portlet:actionURL>
<%
Mensagem mensagem = MensagemLocalServiceUtil.getMensagem(ParamUtil.getLong(renderRequest, "mensagemId"));
pageContext.setAttribute("mensagem", mensagem);
StringBundler sb = null;
String nomeRemetente = "";
if (mensagem != null
&& mensagem.getTemplate() == null
&& mensagem.getTemplateId() > 0) {
mensagem.setTemplate(TemplateLocalServiceUtil.getTemplate(mensagem.getTemplateId()));
Template template = null;
if (mensagem != null) {
template = mensagem.getTemplate();
pageContext.setAttribute("template", template);
}
long[] destIds = GetterUtil.getLongValues(mensagem.getGrupoDestinatarioIds().split("\\s"));
List<GrupoDestinatario> destinatarios = new ArrayList<GrupoDestinatario>();
for (long id : destIds) {
destinatarios.add(GrupoDestinatarioLocalServiceUtil.getGrupoDestinatario(id));
}
sb = new StringBundler(destinatarios.size() * 2);
for (int i = 0; i < destinatarios.size(); i++) {
GrupoDestinatario dest = destinatarios.get(i);
if (i > 0) {
sb.append(StringPool.COMMA + StringPool.SPACE);
}
sb.append(dest.getNome());
}
GrupoDestinatario remetente = GrupoDestinatarioLocalServiceUtil.getGrupoDestinatario(mensagem.getContaSaidaId());
nomeRemetente = remetente.getNome();
}
String conteudoEditor = (mensagem != null ? mensagem.getConteudo() : StringPool.BLANK);
//long roleId = WorkflowUtil.getWorkflowRoleId(renderRequest);
boolean papelAprovador = WorkflowUtil.isAprovador(renderRequest);
List<AnexoMensagem> anexos = null;
if (mensagem != null){
anexos = AnexoMensagemLocalServiceUtil.recuperaAnexosPorMensagem(mensagem.getMensagemId());
}
%>
<aui:form name="fmMensagemWorkFlow" method="post">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<aui:input name="mensagemId" value="<%=mensagem.getMensagemId()%>" type="hidden"/>
<c:set var="htmlMensagem">
<c:choose>
<c:when test="${template.estilo == 0}">
${template.cabecalho}
${mensagem.conteudo}
${template.rodape}
</c:when>
<c:otherwise>
<!-- {template.corpo}-->
${mensagem.conteudo}
</c:otherwise>
</c:choose>
</c:set>
<aui:input name="htmlMensagem" value="${htmlMensagem}" type="hidden"/>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="mensagem.solicitante"/>: </strong><%=mensagem.getNomeSolicitante()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="destinatario.lista"/>: </strong><%=sb.toString()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="destinatario.conta"/>: </strong><%=nomeRemetente%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><strong><liferay-ui:message key="mensagem.assunto"/>: </strong><%=mensagem.getAssunto()%></p>
</div>
<div>
<p style="font-family:Verdana;font-size:10.0pt;"><%=mensagem.getLiteralAgendamento()%></p>
</div>
<!-- Editor para aprovador -->
<% if (papelAprovador){ %>
<!-- <div class="alerta-rascunho-recuperado alert alert-warn">
<liferay-ui:message key="wizard.modificando.mensagem"/>
</div> -->
<div class="alert alert-success" style="display:none;" id="div_msg_conteudo_editado">
<liferay-ui:message key="mensagem.conteudo.editado"/>
</div>
<button id="myBtn" class="btn taglib-icon"><liferay-ui:message key="mensagem.editar.conteudo"/></button>
<div id="myModal" class="modal-message">
<div class="modal-message-content">
<span class="close-message"><liferay-ui:message key="mensagem.edicao.salvar"/></span>
<aui:field-wrapper label="mensagem.conteudo" cssClass="conteudo-wrapper">
<div class="alert alert-error validacao conteudo"><liferay-ui:message key="mensagem.validacao.erro.conteudo"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorConteudo" %>'
toolbarSet="liferay-article"
name="editorConteudo"/>
<aui:input name="conteudo" type="hidden"/>
</aui:field-wrapper>
</div>
</div>
<%} %>
<% if (anexos != null && anexos.size() > 0 ) {%>
<div>
<p></p>
<p><strong><liferay-ui:message key="anexos.visualizacao"/>:</strong></p>
<% for (AnexoMensagem anexo : anexos) {%>
<a target="_blank" href="<%=anexo.getAnexoUrl()%>"><%=anexo.getFileName()%></a><br/>
<%} %>
<p></p>
</div>
<%} %>
<aui:button-row>
<div id="divControle" >
<aui:select name="prioridadeId"
label="mensagem.prioridade"
required="true"
inlineLabel="left"
inlineField="false"
showRequiredLabel="false">
<aui:option value="0"><liferay-ui:message key="mensagem.prioridade.baixa"/></aui:option>
<aui:option value="1"><liferay-ui:message key="mensagem.prioridade.alta"/></aui:option>
</aui:select>
<% if (mensagem.getStatusWorkflow() == StatusWorkflowEnum.PENDENTE_APROVACAO.getStatus() && mensagem.getAtivo() && papelAprovador){ %>
<aui:button type="button" cssClass="btn-primary" onClick="aprovar();" value="Aprovar Mensagem" name="btnAprovar" />
<aui:button type="button" cssClass="btn btn-cancel" onClick="exibirBotaoReprovar();" value="mensagem.reprovar" name="btnReprovar" />
<aui:button type="button" cssClass="btn btn-cancel" onClick="cancelar();" value="Cancelar Mensagem" name="btnCancelar"/>
<% } %>
</div>
<br/>
<div id="divReprovacao" style="display:none;">
<aui:input name="motivo"
type="textarea"
label="mensagem.motivo.reprovacao"
rows="7"
required="true"
showRequiredLabel="false"
cssClass="span6"
>
<aui:validator name="maxLength">4000</aui:validator>
</aui:input>
<aui:button type="button" name="btnEnviar" cssClass="btn-primary" onClick="reprovar();" value="Enviar" />
<aui:button type="button" cssClass="btn btn-cancel" onClick="esconderBotaoReprovar();" value="Cancelar" name="btnCancelarReprovacao" />
</div>
</aui:button-row>
</aui:form>
</div>
<aui:script use="node, liferay-search-container">
$(window).resize(function(){
var altura = $('.modal-message-content').height() - 130;
$('.cke_reset').css('min-height',altura + 'px');
});
var hiddenConteudo = A.one("#<portlet:namespace />conteudo");
function atualizarInputsHTML() {
//atualizar o valor dos campos hidden com o que estiver informado no CKEditor HTML
hiddenConteudo.val(window.<portlet:namespace />editorConteudo.getHTML());
}
Liferay.provide(
window,
'exibirBotaoReprovar',
function() {
var div = document.getElementById('divReprovacao');
var divControle = document.getElementById('divControle');
var motivo = document.getElementById('<portlet:namespace/>motivo');
divControle.style.display = 'none';
div.style.display = "block";
motivo.focus();
}
);
Liferay.provide(
window,
'esconderBotaoReprovar',
function() {
var div = document.getElementById('divReprovacao');
var divControle = document.getElementById('divControle');
var motivo = document.getElementById('<portlet:namespace/>motivo');
divControle.style.display = 'block';
div.style.display = "none";
motivo.value = "";
}
);
<% if (papelAprovador){ %>
Liferay.provide(
window,
'<portlet:namespace />initEditorConteudo',
function() {
window.<portlet:namespace />editorConteudo.setHTML("<%= UnicodeFormatter.toString(conteudoEditor) %>");
}
);
<%}%>
Liferay.provide(
window,
'aprovar',
function() {
atualizarInputsHTML();
var form = document.getElementById('<portlet:namespace/>fmMensagemWorkFlow');
form.action = "${aprovarMensagem}";
form.submit();
}
);
Liferay.provide(
window,
'reprovar',
function() {
atualizarInputsHTML();
var form = document.getElementById('<portlet:namespace/>fmMensagemWorkFlow');
form.action = "${reprovarMensagem}";
form.submit();
}
);
Liferay.provide(
window,
'cancelar',
function() {
if (confirm('<liferay-ui:message key="mensagem.aviso-cancelamento"/>')) {
var form = document.getElementById('<portlet:namespace/>fmMensagemWorkFlow');
form.action = "${cancelarMensagem}";
form.submit();
}
}
);
//Get the modal
var modal = document.getElementById('myModal');
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close-message")[0];
// When the user clicks the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
var altura = $('.modal-message-content').height() - 130;
$('.cke_reset').css('min-height',altura + 'px');
return false;
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
document.getElementById("div_msg_conteudo_editado").style.display = "block";
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
document.getElementById("div_msg_conteudo_editado").style.display = "block";
modal.style.display = "none";
}
}
document.getElementById('<portlet:namespace/>prioridadeId').value = '<%=mensagem.getPrioridade()%>';
</aui:script>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<div class="span10 context-pane">
<%@ include file="/jsp/admin/includes/carregar-dados-wizard.jspf" %>
<div class="formulario-mensagem-preview">
<liferay-ui:header title="mensagem.header.pre-visualizar"/>
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/agendamento.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="4"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:renderURL var="paginaAnteriorURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<aui:form name="fmEmailTeste" method="post">
<aui:input name="rascunho" value="${param.rascunho}" type="hidden"/>
<c:set var="htmlMensagem">
<c:choose>
<c:when test="${template.estilo == 0}">
${template.cabecalho}
${mensagem.conteudo}
${template.rodape}
</c:when>
<c:otherwise>
${mensagem.conteudo}
</c:otherwise>
</c:choose>
</c:set>
<aui:input name="htmlMensagem" value="${htmlMensagem}" type="hidden"/>
<c:set var="tituloPreview">
<liferay-ui:message key='mensagem.titulo-preview'/>
</c:set>
<liferay-util:include
page="/jsp/admin/includes/componente-preview-html.jsp"
servletContext="<%=this.getServletContext()%>">
<liferay-util:param name="tituloPreview" value="${tituloPreview}"/>
<liferay-util:param name="html" value="${htmlMensagem}"/>
</liferay-util:include>
<% if (anexos != null && anexos.size() > 0 ) {%>
<div>
<p></p>
<p><strong><liferay-ui:message key="anexos.visualizacao"/>:</strong></p>
<% for (AnexoMensagem anexo : anexos) {%>
<a target="_blank" href="<%=anexo.getAnexoUrl()%>"><%=anexo.getFileName()%></a> <br/>
<%} %>
</div>
<%} %>
<aui:field-wrapper cssClass="campos-email-teste">
<div class="checkbox-wrapper" class="span8">
<aui:input name="chkEnviarEmail" label="mensagem.preview.checkbox-email-teste" inlineField="true" type="checkbox"/>
</div>
<div class="clearfix"></div>
<div id="camposWrapper" class="span8">
<aui:input name="emailTeste" inlineField="true" cssClass="span9" label="" value="<%=user.getEmailAddress()%>"/>
<aui:input name="contaSaidaId" value="${mensagem.contaSaidaId}" type="hidden"/>
<aui:button name="btEnviarEmail" cssClass="btn-primary" value="mensagem.preview.botao.enviar-email"/>
<div id="msgStatusEmailPreview"></div>
</div>
<div class="clearfix"></div>
</aui:field-wrapper>
</aui:form>
<div class="botoes-acao-wizard-wrapper clearfix">
<div class="botao-wizard-wrapper lado-esquerdo">
<a href="javascript:" id="<portlet:namespace/>btAnterior" class="botao-wizard anterior">
<i class="icon-circle-arrow-left"></i>
<liferay-ui:message key="wizard.navegacao.botao.mensagem.preencher-dados"/>
</a>
</div>
<div class="botao-wizard-wrapper lado-direito">
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="wizard.navegacao.botao.mensagem.agendar"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
<liferay-portlet:resourceURL var="enviarEmalTesteURL" id="EnviarEmailMensagemTeste"/>
<aui:script use="node,aui-io-request">
var camposWrapper = $("#camposWrapper");
var chkEnviarEmail = $("#<portlet:namespace/>chkEnviarEmail");
var showEnviarEmail = function() {
if (chkEnviarEmail.val() == "true"){
camposWrapper.css("display", "block");
} else {
camposWrapper.css("display", "none");
}
};
$(':checkbox').click(function() {
showEnviarEmail();
});
A.one("#<portlet:namespace/>btProximo").on('click', function() {
window.location='${proximaPaginaURL}';
});
A.one("#<portlet:namespace/>btAnterior").on('click', function() {
window.location='${paginaAnteriorURL}';
});
A.one("#<portlet:namespace/>btEnviarEmail").on("click", function(event){
var objBotao = this;
A.io.request('${enviarEmalTesteURL}', {
method: 'post',
data: {
<portlet:namespace/>emailTeste: A.one("#<portlet:namespace/>emailTeste").val(),
<portlet:namespace/>contaSaidaId: A.one("#<portlet:namespace/>contaSaidaId").val()
},
on: {
start: function() {
exibirStatusEmailPreview("<liferay-ui:message key='mensagem.teste.enviando'/>");
objBotao.disabled = true;
},
success: function(){
exibirStatusEmailPreview("<liferay-ui:message key='mensagem.teste.sucesso'/>");
},
failure: function() {
exibirStatusEmailPreview("<liferay-ui:message key='mensagem.teste.enviando'/>");
},
end: function() {
objBotao.disabled = false;
}
}
});
});
function exibirStatusEmailPreview(mensagem) {
var obj = A.one("#msgStatusEmailPreview");
obj.html(mensagem);
}
</aui:script>
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<div class="span10 context-pane">
<%
String cabecalho = StringPool.BLANK;
String rodape = StringPool.BLANK;
String corpo = StringPool.BLANK;
Template template = null;
long templateId = ParamUtil.getLong(request, "templateId");
if (templateId > 0) {
template = TemplateLocalServiceUtil.getTemplate(templateId);
} else {
template = (Template) request.getAttribute("template");
}
if (template != null){
//preencher variaveis que serao utilizadas em funcoes com scriptlet
cabecalho = template.getCabecalho();
rodape = template.getRodape();
corpo = template.getCorpo();
pageContext.setAttribute("template", template);
}
%>
<aui:model-context bean="<%= template %>" model="<%= Template.class %>" />
<liferay-ui:header title="template.header.formulario.edicao"/>
<div class="formulario-template">
<liferay-ui:error key="template.nome.existe" message="template.nome.existe"/>
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="gravarURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='TemplateAlterarIncluir'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/edicao.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
<liferay-portlet:param name="redirect" value="${param}"/>
</liferay-portlet:actionURL>
<c:if test="${param.wizard eq true}">
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="exibirProximoPasso" value="true"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
</c:if>
<aui:form action="${gravarURL}" name="fmDados" method="post" enctype="multipart/form-data">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<aui:input name="rascunho" value="${param.rascunho}" type="hidden"/>
<aui:input name="wizard" value="${param.wizard}" type="hidden"/>
<aui:input name="templateId" value="<%=template.getTemplateId()%>" type="hidden"/>
<aui:input name="nome" label="template.nome" required="true"/>
<aui:field-wrapper label="template.estilo">
<aui:input name="estilo"
value="0"
type="radio"
label="template.estilo.cabecalho-rodape"
checked="${empty template or template.estilo == 0 ? true : false}"
required="true"
onClick="exibirEditor(this.value);previewConteudo()"/>
<aui:input name="estilo"
value="1"
type="radio"
label="template.estilo.corpo"
checked="${template.estilo == 1 ? true : false}"
required="true"
onClick="exibirEditor(this.value);previewConteudo()"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.cabecalho" cssClass="cabecalho-wrapper">
<div class="alert alert-error validacao cabecalho"><liferay-ui:message key="template.validacao.erro.cabecalho"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorCabecalho" %>'
toolbarSet="liferay-article"
name="editorCabecalho"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="cabecalho" type="hidden" value="${template.cabecalho}" />
</aui:field-wrapper>
<aui:field-wrapper label="template.rodape" cssClass="rodape-wrapper">
<div class="alert alert-error validacao rodape"><liferay-ui:message key="template.validacao.erro.rodape"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorRodape" %>'
toolbarSet="liferay-article"
name="editorRodape"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="rodape" type="hidden" value="${template.rodape}"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.corpo" cssClass="corpo-wrapper">
<div class="alert alert-error validacao corpo"><liferay-ui:message key="template.validacao.erro.corpo"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorCorpo" %>'
toolbarSet="liferay-article"
name="editorCorpo"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="corpo" type="hidden" value="${template.corpo}"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.imagem-miniatura">
<liferay-ui:message key="template.imagem-miniatura.instrucoes"/>
<aui:input name="imgThumb" type="file" label="">
<aui:validator name="acceptFiles">'jpg,png'</aui:validator>
</aui:input>
<c:if test="${not empty template.thumbnailURL}">
<div id="preview-thumbnail">
<img alt="Imagem de thumbnail" src='<%=ImagemUtil.getUrlThumbnailTemplate(renderRequest, template.getThumbnailURL())%>'>
</div>
</c:if>
</aui:field-wrapper>
<!-- DIV que sera utilizado como 'corpo' no preview, quando o estilo
cabecalho e rodape for selecionado, para simular um espaçamento entre
o topo e rodape. -->
<div id="preview-corpo-container">
<div style="height:50px;"></div>
</div>
<!-- componente de preview -->
<c:set var="tituloPreview">
<liferay-ui:message key='template.titulo-preview'/>
</c:set>
<liferay-util:include
page="/jsp/admin/includes/componente-preview-html.jsp"
servletContext="<%=this.getServletContext()%>">
<liferay-util:param name="tituloPreview" value="${tituloPreview}"/>
</liferay-util:include>
</aui:form>
<!-- Definir botoes de acordo com o tipo de acao que oroginou o formulario. -->
<c:choose>
<c:when test="${param.wizard eq true}">
<div class="botoes-acao-wizard-wrapper clearfix">
<div class="botao-wizard-wrapper lado-esquerdo">
<a href="javascript:" id="<portlet:namespace/>btAnterior" class="botao-wizard anterior">
<i class="icon-circle-arrow-left"></i>
<liferay-ui:message key="wizard.navegacao.botao.template.selecionar"/>
</a>
</div>
<div class="botao-wizard-wrapper lado-direito">
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="wizard.navegacao.botao.template.criar"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
</div>
</c:when>
<c:otherwise>
<aui:button-row>
<aui:button type="button" cssClass="btn-primary" value="save" name="btGravar" />
<input type="button" value="Cancelar" class="btn btn-cancel" onclick="javascript:window.location.href = $('#<portlet:namespace/>redirect').val()"/>
</aui:button-row>
</c:otherwise>
</c:choose>
</div>
</div>
<aui:script use="node">
var hiddenCabecalho = A.one("#<portlet:namespace />cabecalho");
var hiddenRodape = A.one("#<portlet:namespace />rodape");
var hiddenCorpo = A.one("#<portlet:namespace />corpo");
A.one("#<portlet:namespace />btGravar").on("click", function() {
<portlet:namespace />gravar();
});
function atualizarInputsHTML() {
//atualizar o valor dos campos hidden com o que estiver informado no CKEditor HTML
hiddenCabecalho.val(window.<portlet:namespace />editorCabecalho.getHTML());
hiddenRodape.val(window.<portlet:namespace />editorRodape.getHTML());
hiddenCorpo.val(window.<portlet:namespace />editorCorpo.getHTML());
}
//funcao que sera utilizada pelo Editor HTML para carregar o valor inicial
Liferay.provide(
window,
'<portlet:namespace />initEditorCabecalho',
function() {
window.<portlet:namespace />editorCabecalho.setHTML("<%= UnicodeFormatter.toString(cabecalho) %>");
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorRodape',
function() {
<portlet:namespace />editorRodape.setHTML("<%= UnicodeFormatter.toString(rodape) %>");
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorCorpo',
function() {
window.<portlet:namespace />editorCorpo.setHTML("<%= UnicodeFormatter.toString(corpo) %>");
}
);
//
Liferay.provide(
window,
'<portlet:namespace />gravar',
function(urlRedirect) {
atualizarInputsHTML();
exibirMsgValidadaoEditor(false);
var estilo = A.one("input[name='<portlet:namespace />estilo']:checked").val();
var erro = false;
if (estilo == '0') {
if (hiddenCabecalho.val() == '') {
exibirMsgValidadaoEditor(true, 'cabecalho');
erro = true;
}
if (hiddenRodape.val() == '') {
exibirMsgValidadaoEditor(true, 'rodape');
erro = true;
}
}
else {
if (hiddenCorpo.val() == '') {
exibirMsgValidadaoEditor(true, 'corpo');
erro = true;
}
}
if (!erro) {
//redefinir o redirecionamento apos o processamento do formulario, quando necessario
if (urlRedirect != undefined) {
A.one("#<portlet:namespace/>redirect").val(urlRedirect);
}
submitForm(document.<portlet:namespace />fmDados);
}
else {
window.scroll(0,0);
}
}
);
Liferay.provide(
window,
'exibirEditor',
function(estilo) {
A.one(".cabecalho-wrapper").setStyle("display", (estilo == '0' ? 'block' : 'none'));
A.one(".rodape-wrapper").setStyle("display", (estilo == '0' ? 'block' : 'none'));
A.one(".corpo-wrapper").setStyle("display", (estilo == '1' ? 'block' : 'none'));
}
);
//define a funcao que sera utilizada pelo componente de pre-visualizacao do dispositivo
Liferay.provide(
window,
'definirConteudoPreview',
function() {
atualizarInputsHTML();
var conteudo = '';
//obtem o radio button do estilo selecionado
var estilo = A.one("input[name='<portlet:namespace />estilo']:checked");
if (estilo != null) {
estilo = estilo.val();
if (estilo == 0) {
conteudo += hiddenCabecalho.val();
//obter o 'corpo' para simular o espacamento entre o topo e rodape
conteudo += A.one("#preview-corpo-container").html();
conteudo += hiddenRodape.val();
}
else {
conteudo += hiddenCorpo.val();
}
}
else {
console.error("Estilo nao selecionado!");
}
return conteudo;
}
);
A.one("#<portlet:namespace/>nome").focus();
exibirEditor('${template.estilo}');
definirConteudoPreview();
previewConteudo();
</aui:script>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<div class="span10 context-pane">
<%@ include file="/jsp/admin/includes/carregar-dados-wizard.jspf" %>
<%
//pagina (fragmento) utilizada para definir variaveis e atributos utilizados pelo modulo.
//Template template = (Template) request.getAttribute("template");
String cabecalho = StringPool.BLANK;
String rodape = StringPool.BLANK;
String corpo = StringPool.BLANK;
//verificar se deve recuperar o template da sessao, ou forçar um novo
if (!ParamUtil.getBoolean(renderRequest, "novoTemplate")) {
//verifica se obteve o template atraves do include carregar-dados-wizard.
if (template == null) {
template = (Template) request.getAttribute("template");
//caso nao tenha conseguido obter do atributo request, verifica se ha parametro com o id
if (template == null) {
long templateId = ParamUtil.getLong(request, "templateId");
if (templateId > 0) {
template = TemplateLocalServiceUtil.getTemplate(templateId);
//preencher variaveis que serao utilizadas em funcoes com scriptlet
cabecalho = template.getCabecalho();
rodape = template.getRodape();
corpo = template.getCorpo();
}
}
}
}
else {
//garantir que nao vai tentar obter o template da session ou request.
template = null;
pageContext.removeAttribute("template");
}
if (template != null) {
pageContext.setAttribute("template", template);
cabecalho = template.getCabecalho();
rodape = template.getRodape();
corpo = template.getCorpo();
}
%>
<aui:model-context bean="<%= template %>" model="<%= Template.class %>" />
<liferay-ui:header title="template.header.formulario"/>
<div class="formulario-template">
<liferay-ui:error key="template.nome.existe" message="template.nome.existe"/>
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="gravarURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='TemplateAlterarIncluir'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/formulario.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
<liferay-portlet:param name="redirect" value="${param}"/>
</liferay-portlet:actionURL>
<c:if test="${param.wizard eq true}">
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="wizard" value="${param.wizard}"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="exibirProximoPasso" value="true"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
</c:if>
<aui:form action="${gravarURL}" name="fmDados" method="post" enctype="multipart/form-data">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<aui:input name="rascunho" value="${param.rascunho}" type="hidden"/>
<aui:input name="wizard" value="${param.wizard}" type="hidden"/>
<aui:input name="nome" label="template.nome" required="true">
<aui:validator name="maxLength">255</aui:validator>
</aui:input>
<aui:field-wrapper label="template.estilo">
<aui:input name="estilo"
value="0"
type="radio"
label="template.estilo.cabecalho-rodape"
checked="${empty template or template.estilo == 0 ? true : false}"
required="true"
onClick="exibirEditor(this.value);previewConteudo()"/>
<aui:input name="estilo"
value="1"
type="radio"
label="template.estilo.corpo"
checked="${template.estilo == 1 ? true : false}"
required="true"
onClick="exibirEditor(this.value);previewConteudo()"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.cabecalho" cssClass="cabecalho-wrapper">
<div class="alert alert-error validacao cabecalho"><liferay-ui:message key="template.validacao.erro.cabecalho"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorCabecalho" %>'
toolbarSet="liferay-article"
name="editorCabecalho"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="cabecalho" type="hidden" value="${template.cabecalho}" />
</aui:field-wrapper>
<aui:field-wrapper label="template.rodape" cssClass="rodape-wrapper">
<div class="alert alert-error validacao rodape"><liferay-ui:message key="template.validacao.erro.rodape"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorRodape" %>'
toolbarSet="liferay-article"
name="editorRodape"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="rodape" type="hidden" value="${template.rodape}"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.corpo" cssClass="corpo-wrapper">
<div class="alert alert-error validacao corpo"><liferay-ui:message key="template.validacao.erro.corpo"/></div>
<liferay-ui:input-editor
editorImpl="<%= EDITOR_WYSIWYG_IMPL_KEY %>"
initMethod='<%= "initEditorCorpo" %>'
toolbarSet="liferay-article"
name="editorCorpo"
onChangeMethod="previewConteudoEventoEditor"/>
<aui:input name="corpo" type="hidden" value="${template.corpo}"/>
</aui:field-wrapper>
<aui:field-wrapper label="template.imagem-miniatura">
<liferay-ui:message key="template.imagem-miniatura.instrucoes"/>
<aui:input name="imgThumb" type="file" label="">
<aui:validator name="acceptFiles">'jpg,png'</aui:validator>
</aui:input>
<c:if test="${not empty template.thumbnailURL}">
<div id="preview-thumbnail">
<img alt="Imagem de thumbnail" src='<%=ImagemUtil.getUrlThumbnailTemplate(renderRequest, template.getThumbnailURL())%>'>
</div>
</c:if>
</aui:field-wrapper>
<!-- DIV que sera utilizado como 'corpo' no preview, quando o estilo
cabecalho e rodape for selecionado, para simular um espacamento entre
o topo e rodape. -->
<div id="preview-corpo-container">
<div style="height:50px;"></div>
</div>
<!-- componente de preview -->
<c:set var="tituloPreview">
<liferay-ui:message key='template.titulo-preview'/>
</c:set>
<liferay-util:include
page="/jsp/admin/includes/componente-preview-html.jsp"
servletContext="<%=this.getServletContext()%>">
<liferay-util:param name="tituloPreview" value="${tituloPreview}"/>
</liferay-util:include>
</aui:form>
<!-- Definir botoes de acordo com o tipo de acao que originou o formulario. -->
<c:choose>
<c:when test="${param.wizard eq true}">
<div class="botoes-acao-wizard-wrapper clearfix">
<div class="botao-wizard-wrapper lado-esquerdo">
<a href="javascript:" id="<portlet:namespace/>btAnterior" class="botao-wizard anterior">
<i class="icon-circle-arrow-left"></i>
<liferay-ui:message key="wizard.navegacao.botao.template.selecionar"/>
</a>
</div>
<div class="botao-wizard-wrapper lado-direito">
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo">
<liferay-ui:message key="wizard.navegacao.botao.template.salvar"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
</div>
</c:when>
<c:otherwise>
<aui:button-row>
<aui:button type="button" cssClass="btn-primary" value="save" name="btGravar" />
<aui:button type="cancel" value="cancel" href="javascript:window.location.href = $('#<portlet:namespace/>redirect').val()"/>
</aui:button-row>
</c:otherwise>
</c:choose>
</div>
</div>
<aui:script use="node">
var hiddenCabecalho = A.one("#<portlet:namespace />cabecalho");
var hiddenRodape = A.one("#<portlet:namespace />rodape");
var hiddenCorpo = A.one("#<portlet:namespace />corpo");
//definir os acoes dos botoes relacionados a navegacao por etapa (wizard) da criacao de mensagem
if (${param.wizard eq true}) {
A.one("#<portlet:namespace/>btAnterior").on("click", function() {
window.location = '${redirect}';
});
A.one("#<portlet:namespace/>btProximo").on("click", function() {
<portlet:namespace/>gravar('${proximaPaginaURL}');
});
}
else {
A.one("#<portlet:namespace />btGravar").on("click", function() {
<portlet:namespace />gravar();
});
}
function atualizarInputsHTML() {
//atualizar o valor dos campos hidden com o que estiver informado no CKEditor HTML
hiddenCabecalho.val(window.<portlet:namespace />editorCabecalho.getHTML());
hiddenRodape.val(window.<portlet:namespace />editorRodape.getHTML());
hiddenCorpo.val(window.<portlet:namespace />editorCorpo.getHTML());
}
//funcao que sera utilizada pelo Editor HTML para carregar o valor inicial
Liferay.provide(
window,
'<portlet:namespace />initEditorCabecalho',
function() {
window.<portlet:namespace />editorCabecalho.setHTML("<%= UnicodeFormatter.toString(cabecalho) %>");
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorRodape',
function() {
<portlet:namespace />editorRodape.setHTML("<%= UnicodeFormatter.toString(rodape) %>");
}
);
Liferay.provide(
window,
'<portlet:namespace />initEditorCorpo',
function() {
window.<portlet:namespace />editorCorpo.setHTML("<%= UnicodeFormatter.toString(corpo) %>");
}
);
//
Liferay.provide(
window,
'<portlet:namespace />gravar',
function(urlRedirect) {
atualizarInputsHTML();
exibirMsgValidadaoEditor(false);
var estilo = A.one("input[name='<portlet:namespace />estilo']:checked").val();
var erro = false;
if (estilo == '0') {
if (hiddenCabecalho.val() == '') {
exibirMsgValidadaoEditor(true, 'cabecalho');
erro = true;
}
if (hiddenRodape.val() == '') {
exibirMsgValidadaoEditor(true, 'rodape');
erro = true;
}
}
else {
if (hiddenCorpo.val() == '') {
exibirMsgValidadaoEditor(true, 'corpo');
erro = true;
}
}
if (!erro) {
//redefinir o redirecionamento apos o processamento do formulario, quando necessario
if (urlRedirect != undefined) {
A.one("#<portlet:namespace/>redirect").val(urlRedirect);
}
submitForm(document.<portlet:namespace />fmDados);
}
else {
window.scroll(0,0);
}
}
);
Liferay.provide(
window,
'exibirEditor',
function(estilo) {
A.one(".cabecalho-wrapper").setStyle("display", (estilo == '0' ? 'block' : 'none'));
A.one(".rodape-wrapper").setStyle("display", (estilo == '0' ? 'block' : 'none'));
A.one(".corpo-wrapper").setStyle("display", (estilo == '1' ? 'block' : 'none'));
}
);
//define a funcao que sera utilizada pelo componente de pre-visualizacao do dispositivo
Liferay.provide(
window,
'definirConteudoPreview',
function() {
atualizarInputsHTML();
var conteudo = '';
//obtem o radio button do estilo selecionado
var estilo = A.one("input[name='<portlet:namespace />estilo']:checked");
if (estilo != null) {
estilo = estilo.val();
if (estilo == 0) {
conteudo += hiddenCabecalho.val();
//obter o 'corpo' para simular o espacamento entre o topo e rodape
conteudo += A.one("#preview-corpo-container").html();
conteudo += hiddenRodape.val();
}
else {
conteudo += hiddenCorpo.val();
}
}
else {
console.error("Estilo nao selecionado!");
}
return conteudo;
}
);
A.one("#<portlet:namespace/>nome").focus();
<%if (template != null) {%>
exibirEditor('${template.estilo}');
definirConteudoPreview();
previewConteudo();
<% }%>
</aui:script>
\ No newline at end of file
<%@ include file="/jsp/init.jsp" %>
<%@ include file="/jsp/admin/includes/menu-lateral-principal.jspf" %>
<div class="span10 context-pane">
<%@ include file="/jsp/admin/includes/carregar-dados-wizard.jspf" %>
<liferay-ui:success key="mensagem-gravada-aguardar-workflow" message="mensagem-gravada-aguardar-workflow"/>
<liferay-ui:success key="mensagem-gravada-aprovada-workflow" message="mensagem-gravada-aprovada-workflow"/>
<aui:model-context bean="<%= template %>" model="<%= Template.class %>" />
<div id="selecao-template-wrapper">
<liferay-ui:success key="template-sucesso-gravar" message="template.sucesso-gravar"/>
<liferay-ui:success key="sucesso-excluir" message="template.sucesso-excluir"/>
<liferay-ui:header title="template.header.listagem"/>
<aui:form name="fmSearchTemplate" action="#" cssClass="search-terms grupo-campos-busca">
<div>
<aui:input name="nomeTemplateSearch"
value="${param.nomeTemplateSearch}"
type="text"
inlineField="true"
inlineLabel="left"
label="template.busca.campo.nome"
cssClass="span10"
wrapperCssClass="span5"/>
<aui:button cssClass="pesquisa inline" type="submit" value="search"/>
<div class="clearfix"></div>
</div>
</aui:form>
<liferay-portlet:renderURL var="proximaPaginaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/mensagem/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="2"/>
<liferay-portlet:param name="exibirProximoPasso" value="true"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL var="processarPassoURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='WizardTemplate'/>
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
</liferay-portlet:actionURL>
<aui:form name="fmWizard" action="${processarPassoURL}" method="post">
<aui:input name="redirect" value="${proximaPaginaURL}" type="hidden"/>
<aui:field-wrapper required="true">
<div id="slider-templates-wrapper" class="">
<div class="lista-templates owl-carousel owl-theme" id="templates-scroll">
<c:set var="indexTemplateSel" value="-1"/>
<c:set var="listaTemplates" value="<%=TemplateSearch.pesquisar(renderRequest)%>" />
<c:forEach var="templateItem" items="${listaTemplates}" varStatus="status">
<%
Template templateItem = (Template)pageContext.getAttribute("templateItem");
%>
<c:if test="${templateItem.templateId eq template.templateId }">
<c:set var="indexTemplateSel" value="${status.index}"/>
</c:if>
<liferay-portlet:renderURL var="pesquisaURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/listagem.jsp"/>
</liferay-portlet:renderURL>
<liferay-portlet:actionURL varImpl="removerModeloURL">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value='TemplateExcluir'/>
<liferay-portlet:param name="redirect" value="${pesquisaURL}" />
<liferay-portlet:param name="templateId" value="<%= String.valueOf(templateItem.getTemplateId()) %>" />
</liferay-portlet:actionURL>
<div class="item">
<div class="miniatura-preview-template" >
<div class="conteudo">
<img alt="${templateItem.nome}" src='<%=ImagemUtil.getUrlThumbnailTemplate(renderRequest, templateItem.getThumbnailURL())%>'>
</div>
<aui:input name="templateId"
value="${templateItem.templateId}"
label="${templateItem.nome }"
type="radio"
inlineField="true"
checked="${templateItem.templateId eq template.templateId }">
<aui:validator
name="required"
errorMessage="template.validacao.erro.selecionar"/>
</aui:input>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "ADICIONAR_TEMPLATE") %>'>
<div align="center">
<liferay-portlet:renderURL var="editarModeloURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/edicao.jsp"/>
<liferay-portlet:param name="templateId" value="${templateItem.templateId}"/>
</liferay-portlet:renderURL>
<a href="${editarModeloURL}"><liferay-ui:message key="wizard.navegacao.botao.template.editar"/></a>
</div>
</c:if>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "ADICIONAR_TEMPLATE") %>'>
<div align="center">
<a href="${removerModeloURL}" ><liferay-ui:message key="wizard.navegacao.botao.template.remover"/></a>
</div>
</c:if>
</div>
</div>
</c:forEach>
</div>
</div>
</aui:field-wrapper>
</aui:form>
<div class="botoes-acao-wizard-wrapper clearfix">
<c:set var="proximoDisabled" value="${empty listaTemplates}"/>
<div class="botao-wizard-wrapper">
<c:choose>
<c:when test="${proximoDisabled}">
<a href="javascript:" id="<portlet:namespace/>btProximoDisabled" class="botao-wizard proximo disabled" >
</c:when>
<c:otherwise>
<a href="javascript:" id="<portlet:namespace/>btProximo" class="botao-wizard proximo" >
</c:otherwise>
</c:choose>
<liferay-ui:message key="wizard.navegacao.botao.mensagem.preencher-dados"/>
<i class="icon-circle-arrow-right"></i>
</a>
</div>
<c:if test='<%=permissionChecker.hasPermission(scopeGroupId, "br.mp.mprj.portal.portlet.gestaomensagens.service.model", scopeGroupId, "ADICIONAR_TEMPLATE") %>'>
<div class="botao-wizard-wrapper link-novo-template clearfix">
<liferay-portlet:renderURL var="novoModeloURL">
<liferay-portlet:param name="mvcPath" value="/jsp/admin/template/formulario.jsp"/>
<liferay-portlet:param name="wizard" value="true"/>
<liferay-portlet:param name="passoAtual" value="1"/>
<liferay-portlet:param name="rascunho" value="${param.rascunho}"/>
<liferay-portlet:param name="novoTemplate" value="true"/>
</liferay-portlet:renderURL>
<a href="${novoModeloURL}" class="botao-wizard proximo"><liferay-ui:message key="wizard.navegacao.botao.template.novo"/></a>
</div>
</c:if>
</div>
</div>
</div>
<aui:script use="node">
A.one("#<portlet:namespace/>btProximo").on('click', function() {
submitForm(document.<portlet:namespace/>fmWizard);
});
$(document).ready(function() {
//container para os itens do carousel
var owl = $("#templates-scroll");
owl.owlCarousel({
slideSpeed : 300,
paginationSpeed : 400,
items: 5,
autoPlay: false,
stopOnHover: true,
pagination: false,
paginationNumbers: false,
autoHeight: false,
transitionStyle: "fade",
navigation: true,
navigationText: [
"<i class='icon-chevron-left icon-white'></i>",
"<i class='icon-chevron-right icon-white'></i>"
],
itemsScaleUp: false,
afterInit: function(elem) {
ajustarMargemSlider($(".owl-controls").css("display") == 'block');
var indexTemplate = parseInt('${indexTemplateSel}',10);
if (indexTemplate >= 0) {
owl.trigger("owl.goTo", indexTemplate);
}
},
afterUpdate: function(elem) {
ajustarMargemSlider($(".owl-controls").css("display") == 'block');
}
});
//remove a margem do container do carousel caso as setas de navegacao
//nao estejam sendo exibidas, evitando problemas esteticos
function ajustarMargemSlider(possuiNavegacao) {
var sliderWrapper = $("#slider-templates-wrapper");
var nomeCss = 'sem-navegacao';
if (!possuiNavegacao) {
if (!sliderWrapper.hasClass(nomeCss)) {
sliderWrapper.addClass(nomeCss);
}
}
else {
sliderWrapper.removeClass(nomeCss);
}
}
//redefinir tamanho da fonte das miniaturas para o tamanho padrao
$(".miniatura-preview-template .conteudo span").css("font-size", "8px");
});
</aui:script>
<script type="text/javascript">
document.getElementById("<portlet:namespace />nomeTemplateSearch").focus();
</script>
\ No newline at end of file
<%@page import="com.liferay.portal.service.persistence.PortletUtil"%>
<%@page import="javax.portlet.PortletSession"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.GrupoDestinatarioUtil"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.action.ConfiguracaoAction"%>
<%@ include file="/jsp/init.jsp" %>
<%
PortletPreferences preferences = renderRequest.getPreferences();
String grupoDestinatarioId = PrefsParamUtil.getString(preferences, request, "grupoDestinatarioId", PortletProps.get("configuracao.valor-padrao.IdgrupoMensagem"));
String emailRemetente = PrefsParamUtil.getString(preferences, request, "emailRemetente", PortletProps.get("configuracao.valor-padrao.IdgrupoMensagem"));
%>
Lista selecionada: <span>${nomeGrupo}</span>
<br><br>
Selecione uma lista:
<liferay-portlet:actionURL portletConfiguration="true" var="configurationURL" />
<aui:form action="${configurationURL}" method="post" name="fm">
<aui:input name="<%= Constants.CMD %>" type="hidden" value="<%= Constants.UPDATE %>" />
<aui:fieldset>
<select id="mySelect" onchange="myFunction()">
<option value="null">Selecione</option>
<c:forEach items="${grupo}" var="g">
<option value="${g.grupoDestinatarioId }">${g.nome }</option>
</c:forEach>
</select>
<aui:input id="grupoId" name="preferences--grupoDestinatarioId--" label="" type="text" value="<%=grupoDestinatarioId%>" style="display:none;"/>
<aui:input id="emailRemetente" name="preferences--emailRemetente--" label="E-mail Remetente" type="text" value="<%=emailRemetente %>"/>
<aui:button-row>
<aui:button type="submit" cssClass="btn-primary" value="save"/>
</aui:button-row>
</aui:fieldset>
</aui:form>
<aui:script>
function myFunction() {
var id = document.getElementById("mySelect").value;
document.getElementById("<portlet:namespace/>grupoId").value = id;
}
</aui:script>
\ No newline at end of file
<%@page import="com.liferay.portal.kernel.servlet.SessionMessages"%>
<%@page import="com.liferay.portal.kernel.util.SessionParamUtil"%>
<%@ include file="/jsp/init.jsp" %>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.action.GrupoDestinatarioAlterarIncluirActionCommand"%>
<%@page import="com.liferay.portal.kernel.servlet.SessionErrors" %>
<%
Boolean result = SessionMessages.contains(renderRequest, "cadastro-sucesso");
%>
<liferay-ui:error key="duplicado" message="E-mail informado j est cadastrado !" />
<liferay-portlet:actionURL var="addEmailDestinatario">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value="InserirEmailDestinatario"/>
<liferay-portlet:param name="mvcPath" value="/jsp/cadastro-usuario.jsp"/>
</liferay-portlet:actionURL>
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/cadastro-usuario.jsp"/>
</liferay-portlet:renderURL>
<c:if test="<%=result%>">
<div class="alert alert-info responsaveis-user">Seu e-mail foi cadastrado em nosso sistema. Aguarde para receber a prxima newsletter.</div>
</c:if>
<aui:form action="${addEmailDestinatario}" name="formCadEmail" id="formCadEmail" method="post">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<span>Cadastre-se e receba novidades em seu e-mail:</span>
<aui:row>
<aui:col span="9">
<aui:input name="email_usuario" type="text" label="" required="true" inlineLabel="top" inlineField="false" showRequiredLabel="false" maxlength="80">
<aui:validator name="required" />
<aui:validator name="email" errorMessage="Por favor, preencha o campo de e-mail corretamente." />
<aui:validator name="maxLength" errorMessage="Por favor, digite at 80 caracteres.">80</aui:validator>
</aui:input>
</aui:col>
<aui:col span="3" style="margin: 0 !important;">
<aui:input type = "submit" value = "Cadastrar" name = "btnEmailDestinatario" label=" " cssClass="span3" onClick="javascript:window.location.href = $('#<portlet:namespace/>redirect').val()"></aui:input>
</aui:col>
</aui:row>
</aui:form>
<%@ include file="/jsp/init.jsp" %>
<%
PortletPreferences preferences = renderRequest.getPreferences();
String horario = PrefsParamUtil.getString(preferences, request, "horarioPadrao", PortletProps.get("configuracao.valor-padrao.horario"));
String roleName = PrefsParamUtil.getString(preferences, request, "workflowRoleName", PortletProps.get("configuracao.valor-padrao.workflowRoleName"));
String urlThumbnail = PrefsParamUtil.getString(preferences, request, "template.url.thumbnail-padrao", PortletProps.get("configuracao.template.url.thumbnail-padrao"));
String urlServidorPortal = PrefsParamUtil.getString(preferences, request, "configuracao.email.url-servidor", PortletProps.get("configuracao.email.url-servidor"));
%>
<liferay-portlet:actionURL portletConfiguration="true" var="configurationURL" />
<aui:form action="${configurationURL}"
method="post"
name="fm">
<aui:input name="<%= Constants.CMD %>" type="hidden" value="<%= Constants.UPDATE %>" />
<aui:fieldset>
<aui:input name="preferences--horarioPadrao--" label="configuracao.horario-padrao" type="text" value="<%=horario%>"/>
<aui:input name="preferences--workflowRoleName--" label="configuracao.workflow-role-name-padrao" type="hidden" value="<%=roleName%>"/>
<aui:input name="preferences--template.url.thumbnail-padrao--" label="configuracao.thumbnail-padrao" type="text" value="<%=urlThumbnail%>"/>
<aui:input name="preferences--configuracao.email.url-servidor--" label="configuracao.email.url-servidor" type="text" value="<%=urlServidorPortal%>"/>
<aui:button-row>
<aui:button type="submit" cssClass="btn-primary" value="save"/>
</aui:button-row>
</aui:fieldset>
</aui:form>
\ No newline at end of file
<%@page import="javax.portlet.RenderRequest"%>
<%@page import="java.util.prefs.Preferences"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.action.ConfiguracaoAction"%>
<%@page import="com.liferay.portal.service.persistence.PortletUtil"%>
<%@page import="javax.portlet.PortletSession"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@ page import="javax.portlet.PortletPreferences" %>
<%@page import="com.liferay.portal.kernel.servlet.SessionMessages"%>
<%@page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.EmailDestinatarioLocalServiceUtil"%>
<%@ include file="/jsp/init.jsp" %>
<%
Boolean result = SessionMessages.contains(renderRequest, "sucesso-excluir");
%>
<liferay-ui:success key="sucess" message="Seu e-mail foi removido da nossa lista de envios com sucesso."/>
<liferay-ui:error key="nao-cadastrado" message="E-mail informado j foi removido!" />
<liferay-portlet:actionURL var="removerEmailDestinatario">
<liferay-portlet:param name="<%= ActionRequest.ACTION_NAME %>" value="ExcluirEmailDestinatario"/>
<liferay-portlet:param name="mvcPath" value="/jsp/excluir-usuario.jsp"/>
</liferay-portlet:actionURL>
<liferay-portlet:renderURL var="redirect">
<liferay-portlet:param name="mvcPath" value="/jsp/excluir-usuario.jsp"/>
</liferay-portlet:renderURL>
<div class="portlet-content">
<div class=" portlet-content-container" style="">
<div class="portlet-body">
<ul aria-label="Breadcrumb" class="breadcrumb breadcrumb-horizontal" style="padding-left: 0px;">
<li class="first"><a href="/web/consumidorvencedor-rj">Consumidor Vencedor</a><span class="divider">/</span></li><li class="active last"><a href="#">Descadastrar</a><span class="divider">/</span></li>
</ul>
</div>
</div>
</div>
<c:if test="<%=result%>">
<div class="alert alert-info responsaveis-user">Seu e-mail foi removido da nossa lista de envios com sucesso.</div>
</c:if>
<aui:form action="${removerEmailDestinatario}" name="formCadEmail" id="formCadEmail" method="post">
<aui:input name="redirect" value="${redirect}" type="hidden"/>
<span>Por favor, insira seu e-mail para cancelar o recebimento de newsletter:</span>
<aui:row>
<aui:col span="9">
<aui:input name="email_usuario" type="text" label="" required="true" inlineLabel="top" inlineField="false" showRequiredLabel="false" maxlength="80">
<aui:validator name="required" />
<aui:validator name="email" errorMessage="Por favor, preencha o campo de e-mail corretamente."/>
<aui:validator name="maxLength" errorMessage="Por favor, digite at 80 caracteres.">80</aui:validator>
</aui:input>
</aui:col>
<aui:col span="3" style="margin: 0 !important;">
<aui:input type = "submit" value = "Enviar" name = "btnEmailDestinatario" label=" " cssClass="span3" onClick="javascript:window.location.href = $('#<portlet:namespace/>redirect').val();"></aui:input>
</aui:col>
</aui:row>
</aui:form>
<aui:script>
AUI().ready('aui-module', function(A){
var b = document.getElementsByClassName("breadcrumb breadcrumb-horizontal");
var c = b[0].getElementsByClassName("active last")
var d = c[0].getElementsByTagName("a");
d[0].text = "descadastrar";
d[0].href = window.location;
});
</aui:script>
\ No newline at end of file
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet"%>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme"%>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui"%>
<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util"%>
<%@ taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page import="javax.portlet.PortletPreferences" %>
<%@ page import="javax.portlet.ActionRequest" %>
<%@ page import="javax.portlet.PortletURL" %>
<%@ page import="com.liferay.portal.util.PortalUtil" %>
<%@ page import="com.liferay.portal.kernel.util.HtmlUtil" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.GetterUtil"%>
<%@ page import="com.liferay.portal.kernel.util.StringPool" %>
<%@ page import="com.liferay.portal.kernel.util.Validator" %>
<%@ page import="com.liferay.portal.kernel.dao.search.RowChecker" %>
<%@ page import="com.liferay.portal.kernel.search.Document" %>
<%@ page import="com.liferay.portal.kernel.dao.orm.QueryUtil" %>
<%@ page import="com.liferay.portal.kernel.search.Hits" %>
<%@ page import="com.liferay.portal.kernel.util.UnicodeFormatter" %>
<%@ page import="com.liferay.portal.service.UserLocalServiceUtil" %>
<%@ page import="com.liferay.util.portlet.PortletProps" %>
<%@ page import="com.liferay.portal.kernel.util.PrefsParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.Constants" %>
<%@ page import="com.liferay.portal.kernel.portlet.LiferayWindowState" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.WeakHashMap" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.GrupoDestinatarioSearch" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.UserSearch"%>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.EmailDestinatario" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioLocalServiceUtil" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.GrupoDestinatarioSearch" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.vo.UserVO" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.workflow.StatusWorkflowEnum"%>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateLocalServiceUtil" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalServiceUtil" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.TemplateSearch" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.search.MensagemSearch" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.enums.TipoListaEnum" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.util.ImagemUtil" %>
<%@ page import="br.mp.mprj.portal.portlet.gestaomensagens.workflow.WorkflowUtil" %>
<portlet:defineObjects />
<liferay-theme:defineObjects />
<%!
public static final String EDITOR_WYSIWYG_IMPL_KEY = "editor.wysiwyg.portal-web.docroot.html.portlet.portal_settings.email_notifications.jsp";
%>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment