Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1424 → Rev 1425

/branches/v3/impl/conf/language/MessageResources.properties
422,6 → 422,12
see.more=Ver mais
 
 
questionario.email.subject=Por favo preencha o assunto
questionario.email.from.email=Por favor preencha o email que quer que apareça como remetente
questionario.email.from.person=Por favor preencha a pessoa ou a entidade ou orgão que quer que apareça como remetente
questionario.email.message=Por favor preencha uma mensagem
 
 
#Cursos
 
 
/branches/v3/impl/conf/template/email/message_ipp_pt.txt
New file
0,0 → 1,24

<html>
<head>
<title>{1}</title>
</head>
<body>
 
 
<p><i>Mensagem de:</i> {0}</p>
<p><i>Assunto:</i> <b><u>{1}</u></b></p>
 
 
{2}
 
<p>Cumprimentos</p>
<p>{0}</p>
<p>Se pretender responder, use o email: {3}</p>
 
---------------------------------------------
 
<p>Instituto Politécnico de Portalegre - Sistema PAE</p>
<p><a href="http://pae.ipportalegre.pt">http://pae.ipportalegre.pt</a></p>
</body>
</html>
/branches/v3/impl/conf/berserk/sd.xml
2783,8 → 2783,53
</filterChains>
</service>
 
QuestionarioSendMessage
QuestionarioSendMessageCursoAfeto
QuestionarioSendMessageUnidadeAfeta
<service>
<name>QuestionarioSendMessage</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>sendMessage</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="AuthenticatedUsers"/>
<chain name="AdminsOrQuestionarioAdminsOrPedagogico"/>
</filterChains>
</service>
 
<service>
<name>QuestionarioSendMessageCursoAfeto</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>sendMessageCursoAfeto</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="AuthenticatedUsers"/>
<chain name="AdminsOrQuestionarioAdminsOrPedagogico"/>
</filterChains>
</service>
 
<service>
<name>QuestionarioSendMessageUnidadeAfeta</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>sendMessageUnidadeAfeta</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="AuthenticatedUsers"/>
<chain name="AdminsOrQuestionarioAdminsOrPedagogico"/>
</filterChains>
</service>
 
 
<service>
<name>SalvarFicheiro</name>
<implementationClass>pt.estgp.estgweb.services.paginasseccoes.SalvarFicheiro</implementationClass>
<description>Salvar Ficheiro</description>
/branches/v3/impl/conf/berserk/fcd.xml
510,6 → 510,17
</filterChain>
 
 
<filterChain>
<name>AdminsOrQuestionarioAdminsOrPedagogico</name>
<expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("questionarios.admin") || RoleUsers("pedagogicCouncil.president"))</expression>
<description>Admins Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
</filterChain>
 
 
 
 
 
 
</filterChainsDefinitions>
/branches/v3/impl/src/java/pt/estgp/estgweb/Globals.java
357,9 → 357,12
public static final String EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_PT = "courseUnitAnnouncement_pt.txt";
public static final String EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_EN = "courseUnitAnnouncement_en.txt";
 
public static final String EMAIL_MESSAGE_TEMPLATE_EN = "message_en.txt";
public static final String EMAIL_MESSAGE_TEMPLATE_PT = "message_pt.txt";
public static final String EMAIL_MESSAGE_TEMPLATE_EN = "message_en.txt";
 
 
public static final String EMAIL_MESSAGE_IPP_TEMPLATE_PT = "message_ipp_pt.txt";
 
public static final String EMAIL_COURSEUNIT_WORK_SUBJECT_PT = ConfigProperties.getProperty("email.courseunit.work.subject.pt");
public static final String EMAIL_COURSEUNIT_WORK_SUBJECT_EN = ConfigProperties.getProperty("email.courseunit.work.subject.en");
public static final String EMAIL_COURSEUNIT_WORK_RELATIVE_URL = ConfigProperties.getProperty("email.courseunit.work.relative.url");
/branches/v3/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java
146,13 → 146,13
{
 
fullMessage += email.getFrom() != null && email.getFrom().length()>0 && !email.getFrom().equals(Globals.SYSTEM_EMAIL_BOX) ? "<br/><br/>Responda para " + email.getFrom() : "<br/><br/>Por favor não responda a este email";
fullMessage += " <br/> <br/> <h5> Mensagem Segura - enviada através da Google Apps Api através de baco 2015 </h5>";
fullMessage += " <br/> <br/> <h5> Mensagem Segura - enviada através da Google Apps Api </h5>";
 
}
else
{
fullMessage += email.getFrom() != null && email.getFrom().length()>0 && !email.getFrom().equals(Globals.SYSTEM_EMAIL_BOX) ? "\n\nResponda para " + email.getFrom() : "\n\nPor favor não responda a este email";
fullMessage += " \n\n Mensagem Segura - enviada através da Google Apps Api através de baco 2015";
fullMessage += " \n\n Mensagem Segura - enviada através da Google Apps Api ";
}
 
message.setText(fullMessage,"utf-8");
293,6 → 293,48
return email;
}
 
public Email getMessageEmailAdulteredFromEmailIpp(String fromEmail, String from, String subject,String text, List<String> emails, User user)
{
// # 0 : From
// # 1 : Subject
// # 2 : Text
// # 2 : FromEmail Adultered in message
List<String> arguments = new ArrayList<String>();
arguments.add(from);
arguments.add(subject);
arguments.add(text);
arguments.add(fromEmail);
 
String template;
 
template = Globals.EMAIL_MESSAGE_IPP_TEMPLATE_PT;
 
 
List<String> recipients = new ArrayList<String>();
for(String e: emails)
{
if(Email.validEmail(e))
recipients.add(e);
}
logger.info("subject: " + subject);
if(fromEmail == null)
logger.info("user: " + user.getEmail());
else
logger.info("user altered to: " + fromEmail);
logger.info("template: " + template);
logger.info("arguments:");
for(String arg: arguments)
logger.info(arg);
logger.info("recipients:");
for(String rec: recipients)
logger.info(rec);
logger.info("arguments end");
fromEmail = fromEmail == null ? user.getEmail() : fromEmail;
Email email = new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
email.setFromName(from + " (PAE-IPP)");
return email;
}
 
public Email getMessageEmailOld(String from, String subject,String text, LangEnum langEnum, String target, List<User> users, User user)
{
// # 0 : From
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/QuestionariosService.java
3,10 → 3,17
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.impl.AnnouncementDaoImpl;
import pt.estgp.estgweb.domain.views.QuestionarioView;
import pt.estgp.estgweb.services.email.EMAILJob;
import pt.estgp.estgweb.services.email.SendEmailService;
import pt.estgp.estgweb.services.jobs.JobScheduleService;
import pt.estgp.estgweb.utils.Email;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
/**
193,5 → 200,60
}
 
 
SendEmailService sendEmailService = new SendEmailService();
public int sendMessage(boolean onlyNotAnswered,Long id,String msg,String emailFrom,String personFrom, String subject,UserSession userSession)
{
String source = "questionario message";
AnnouncementDaoImpl.FindUsersResult result = DaoFactory.getQuestionarioDaoImpl().findUsersEmails(id,onlyNotAnswered);
return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
}
 
private int sendEmails(Long id, String msg, String emailFrom, String personFrom, String subject, UserSession userSession, String source, AnnouncementDaoImpl.FindUsersResult result) {
List<String> usersToConsume = result.emails;
 
 
logger.info("Scheduling mail jobs to " + result.users + " users: " + usersToConsume.size() + " recipients");
while(usersToConsume.size() > 0)
{
Iterator<String> iter = usersToConsume.iterator();
List<String> usersToJob = new ArrayList<String>();
int contador = 0;
while(iter.hasNext() && contador < 20)
{
usersToJob.add(iter.next());
iter.remove();
contador++;
}
Email e = sendEmailService.getMessageEmailAdulteredFromEmailIpp(emailFrom,
personFrom,
subject,
msg,
usersToJob,
userSession.getUser());
e.setHtml(true);
EMAILJob emailJob = new EMAILJob(e);
JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id + ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject ,userSession);
}
 
return result.users;
}
 
public int sendMessageCursoAfeto(boolean onlyNotAnswered,Long id,String msg,String emailFrom,String personFrom, String subject,UserSession userSession)
{
String source = "questionario curso message";
AnnouncementDaoImpl.FindUsersResult result = DaoFactory.getQuestionarioDaoImpl().findUsersEmailsPedagogico(onlyNotAnswered,id,0);
return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
}
public int sendMessageUnidadeAfeta(boolean onlyNotAnswered,Long id,String msg,String emailFrom,String personFrom, String subject,UserSession userSession)
{
String source = "questionario unidade message";
AnnouncementDaoImpl.FindUsersResult result = DaoFactory.getQuestionarioDaoImpl().findUsersEmailsPedagogico(onlyNotAnswered,0,id);
return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
}
 
 
 
 
 
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/QuestionarioDaoImpl.java
7,12 → 7,12
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.criterion.Order;
import pt.estgp.estgweb.domain.QuestionarioImpl;
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto;
import pt.estgp.estgweb.domain.QuestionarioResposta;
import pt.estgp.estgweb.domain.QuestionarioRespostaRequisitada;
import pt.estgp.estgweb.domain.*;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import static org.hibernate.criterion.Restrictions.*;
 
129,7 → 129,83
return 0;
}
 
public AnnouncementDaoImpl.FindUsersResult findUsersEmails(Long id,boolean onlyNotAnswered)
{
 
AnnouncementDaoImpl.FindUsersResult findUsersResult = new AnnouncementDaoImpl.FindUsersResult();
List<String> users = new ArrayList<String>();
findUsersResult.emails = users;
 
 
Query q = AbstractDao.getCurrentSession().createQuery("SELECT " +
" u.outEmail, u.preferrefEmail, u.email " +
"from " + QuestionarioRespostaRequisitada.class.getName() + " rR " +
"JOIN rR.questionario q " +
"JOIN rR.user u " +
"WHERE q.id = :id " +
(onlyNotAnswered? " AND rR.resposta is null " : "" ) +
"GROUP BY u.id");
 
q.setLong("id",id);
List<Object[]> results = (List<Object[]>) q.list();
 
fullFillResults(findUsersResult, results);
 
return findUsersResult;
 
 
}
 
public AnnouncementDaoImpl.FindUsersResult findUsersEmailsPedagogico(boolean onlyNotAnswered,long cursoAfetoId,long unidadeAfetaId)
{
 
AnnouncementDaoImpl.FindUsersResult findUsersResult = new AnnouncementDaoImpl.FindUsersResult();
List<String> users = new ArrayList<String>();
findUsersResult.emails = users;
 
Query q = AbstractDao.getCurrentSession().createQuery("SELECT " +
" u.outEmail, u.preferrefEmail, u.email " +
"from " + QuestionarioPedagogicoAlunoRequisitado.class.getName() + " aR " +
"JOIN aR.respostaRequisitada rR " +
"JOIN rR.user u " +
"WHERE " +
(cursoAfetoId > 0 ?
" aR.tipologiaRequisitada.unidadeAfeta.cursoAfeto.id = " + cursoAfetoId :
" aR.tipologiaRequisitada.unidadeAfeta.id = " + unidadeAfetaId) +
(onlyNotAnswered? " AND rR.resposta is null " : "" ) +
"GROUP BY u.id");
 
List<Object[]> results = (List<Object[]>) q.list();
 
fullFillResults(findUsersResult, results);
 
return findUsersResult;
 
 
}
 
private void fullFillResults(AnnouncementDaoImpl.FindUsersResult findUsersResult, List<Object[]> results) {
Map<String,String> emailsSet = new HashMap<String, String>();
for(Object[] result: results)
{
if(result[0] != null)
{
emailsSet.put((String) result[0],"");
}
if(result[1] != null)
{
emailsSet.put((String) result[1],"");
}
if(result[2] != null)
{
emailsSet.put((String) result[2],"");
}
}
findUsersResult.emails.addAll(emailsSet.keySet());
findUsersResult.users = results.size();
}
 
 
public static class QuestionarioStatsVars
{
public long cursos;
/branches/v3/impl/src/java/pt/estgp/estgweb/web/form/questionarios/QuestionarioMessage.java
New file
0,0 → 1,89
package pt.estgp.estgweb.web.form.questionarios;
 
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.web.form.ApplicationForm;
 
import javax.servlet.http.HttpServletRequest;
 
 
public class QuestionarioMessage extends ApplicationForm
{
boolean onlyNotAnswered = false;
String message;
private long cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId;
String fromEmail;
String fromPerson;
String subject;
 
public String getSubject() {
return subject;
}
 
public void setSubject(String subject) {
this.subject = subject;
}
 
public boolean isOnlyNotAnswered() {
return onlyNotAnswered;
}
 
public void setOnlyNotAnswered(boolean onlyNotAnswered) {
this.onlyNotAnswered = onlyNotAnswered;
}
 
public String getFromEmail() {
return fromEmail;
}
 
public void setFromEmail(String fromEmail) {
this.fromEmail = fromEmail;
}
 
public String getFromPerson() {
return fromPerson;
}
 
public void setFromPerson(String fromPerson) {
this.fromPerson = fromPerson;
}
 
public String getMessage() {
return message;
}
 
public void setMessage(String message) {
this.message = message;
}
 
public long getCursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId() {
return cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId;
}
 
public void setCursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId(long cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId) {
this.cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId = cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId;
}
 
 
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
{
ActionErrors errors = new ActionErrors();
if(getSubject() == null || getSubject().trim().length() == 0)
{
addMessageWithKeys(errors,request,"errors.required","questionario.email.subject");
}
if(getFromEmail() == null || getFromEmail().trim().length() == 0)
{
addMessageWithKeys(errors,request,"errors.required","questionario.email.from.email");
}
if(getFromPerson() == null || getFromPerson().trim().length() == 0)
{
addMessageWithKeys(errors,request,"errors.required","questionario.email.from.person");
}
if(getMessage() == null || getMessage().trim().length() == 0)
{
addMessageWithKeys(errors,request,"errors.required","questionario.email.message");
}
return errors;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/questionarios/QuestionarioController.java
11,6 → 11,7
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.questionarios.QuestionarioForm;
import pt.estgp.estgweb.web.form.questionarios.QuestionarioMessage;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
254,7 → 255,82
}
 
 
/********
* EMAILS QUESTIONARIO
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Throwable
*/
public ActionForward sendEmailQuestionario(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable
{
QuestionarioMessage frm = (QuestionarioMessage) form;
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"onlyNotAnswered","id","msg","emailFrom","personFrom","subject"};
Object[] args = {
frm.isOnlyNotAnswered(),
frm.getCursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId(),
frm.getMessage(),
frm.getFromEmail(),
frm.getFromPerson(),
frm.getSubject()
};
sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessage",args,names);
return mapping.findForward("success");
}
public ActionForward sendEmailQuestionarioCursoAfeto(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable
{
QuestionarioMessage frm = (QuestionarioMessage) form;
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"onlyNotAnswered","id","msg","emailFrom","personFrom","subject"};
Object[] args = {
frm.isOnlyNotAnswered(),
frm.getCursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId(),
frm.getMessage(),
frm.getFromEmail(),
frm.getFromPerson(),
frm.getSubject()
};
sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessageCursoAfeto",args,names);
return mapping.findForward("success");
}
 
public ActionForward sendEmailQuestionarioUnidadeAfeta(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable
{
QuestionarioMessage frm = (QuestionarioMessage) form;
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"onlyNotAnswered","id","msg","emailFrom","personFrom","subject"};
Object[] args = {
frm.isOnlyNotAnswered(),
frm.getCursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId(),
frm.getMessage(),
frm.getFromEmail(),
frm.getFromPerson(),
frm.getSubject()
};
sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessageUnidadeAfeta",args,names);
return mapping.findForward("success");
}
 
 
 
 
 
}
/branches/v3/impl/src/web/user/questionarios/sendMessageQuestionarioRequisitados.jsp
New file
0,0 → 1,217
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
 
 
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
 
<%
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
List<String> importYears = (List<String>) sm.execute(RequestUtils.getRequester(request, response), "LoadCoursesImportYears", args, names);
request.setAttribute("importYears", importYears);
%>
 
<logic:present name="MessagesForm">
<logic:notEmpty name="MessagesForm" property="text">
<script>
$(document).ready(
function(){
setText();
 
}
);
 
function setText()
{
$("#editor").html('<bean:write name="MessagesForm" property="text" filter="false"/>');
}
 
</script>
</logic:notEmpty>
</logic:present>
 
<div class="panel panel-default">
<div class="panel-body">
<jomm:messages/>
<html:errors/>
 
 
<html:form styleId="formSubmitMessage" styleClass="form-horizontal" action="/user/submitMessageCourseComission" enctype="multipart/form-data" onsubmit="this.form.text.value=$('#editor').html();">
<input type="hidden" name="dispatch" value="sendMessage" >
<html:hidden property="text"/>
<html:hidden styleId="sendAnnouncementLike" property="fromRole" value="courseCoordinator"/>
<div class="form-group row">
<div class="control-label col-sm-2" for="sendAnnouncementEmail"><bean:message key="announcement.sendAnnouncementEmail"/></div>
<div class="col-sm-10">
<html:text styleId="sendAnnouncementEmail" styleClass="form-control" property="fromEmail"/>
</div>
</div>
 
 
<div class="form-group row">
<div class="control-label col-sm-2" for="year"><bean:message key="submit.todo.message.year"/></div>
<div class="col-sm-10">
<html:select styleId="year" styleClass="form-control" property="importYear" onchange="set(this.form,'loadCourses');this.form.submit()">
<option value=""><bean:message key="submit.todo.message.all"/></option>
<logic:iterate id="importYear" name="importYears">
<html:option value="${importYear}"/>
</logic:iterate>
</html:select>
</div>
</div>
 
 
<div class="form-group row">
<div class="control-label col-sm-2" for="course"><bean:message key="courseunit.course"/></div>
<div class="col-sm-10">
<html:select styleId="course" styleClass="form-control" property="courseId" onchange="this.form.text.value=$('#editor').html();set(this.form,'loadCourse');this.form.submit();$('#modalPleaseWait').modal({show: 'true'})">
<option value="0"></option>
<logic:notEmpty name="MessagesForm" property="courseViews">
<logic:iterate id="courseView" name="MessagesForm" property="courseViews" type="pt.estgp.estgweb.domain.views.CourseView">
<%
if(UserSession.getUser().hasRole(courseView.getValidationRole()))
{
%>
<html:option value="${courseView.id}">(${courseView.code}) ${courseView.name}</html:option>
<%
}
%>
</logic:iterate>
</logic:notEmpty>
</html:select>
</div>
</div>
 
<logic:notEmpty name="MessagesForm" property="courseView">
 
<div class="form-group row">
<div class="control-label col-sm-2" for="semestre"><bean:message key="courseunit.semestre"/></div>
<div class="col-sm-10">
<html:select styleId="semestre" styleClass="form-control" property="semestre" onchange="this.form.text.value=$('#editor').html();set(this.form,'loadCourse');this.form.submit()">
<html:option value="" key="submit.todo.message.all"/>
<html:option value="S1"><bean:message key="courseunit.S1"/></html:option>
<html:option value="S2"><bean:message key="courseunit.S2"/></html:option>
<html:option value="T1"><bean:message key="courseunit.T1"/></html:option>
<html:option value="T2"><bean:message key="courseunit.T2"/></html:option>
<html:option value="T3"><bean:message key="courseunit.T3"/></html:option>
<html:option value="T4"><bean:message key="courseunit.T4"/></html:option>
</html:select>
</div>
</div>
 
 
</logic:notEmpty>
 
<logic:notEmpty name="MessagesForm" property="courseView">
<div class="form-group row">
<div class="control-label col-sm-2" for="unit"><bean:message key="courseunit.menu.unit"/></div>
<div class="col-sm-10">
<html:select styleId="unit" styleClass="form-control" property="courseUnitId">
<html:option value="" key="submit.todo.message.all"/>
<logic:iterate id="courseUnitView" name="MessagesForm" property="courseView.courseUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView">
<html:option value="${courseUnitView.id}">(${courseUnitView.code}) ${courseUnitView.name}</html:option>
</logic:iterate>
</html:select>
</div>
</div>
</logic:notEmpty>
 
 
<div class="form-group row">
<div class="control-label col-sm-2" for="person"><bean:message key="submit.todo.message.target.person"/></div>
<div class="col-sm-10">
<html:select styleId="person" styleClass="form-control" property="target">
<html:option value="students" key="submit.todo.message.students"/>
<html:option value="teachers" key="submit.todo.message.teachers"/>
<html:option value="teachers.students" key="submit.todo.message.teachers.students"/>
</html:select>
</div>
</div>
 
<div class="form-group row">
<div class="control-label col-sm-2" for="sendAnnouncementEmail"><bean:message key="submit.todo.message.subject"/></div>
<div class="col-sm-10">
<html:text styleId="subject" styleClass="form-control" property="subject"/>
</div>
</div>
 
 
<div class="form-group row">
<div class="col-sm-12">
<div class="btn-toolbar" data-role="editor-toolbar" data-target="#editor">
<!-- <div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" title="Font"><i class="aweicon-font"></i><b class="caret"></b></a>
<ul class="dropdown-menu">
</ul>
</div>
<div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" title="Font Size"><i class="aweicon-text-height"></i>&nbsp;<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a data-edit="fontSize 5"><font size="5">Huge</font></a></li>
<li><a data-edit="fontSize 3"><font size="3">Normal</font></a></li>
<li><a data-edit="fontSize 1"><font size="1">Small</font></a></li>
</ul>
</div>-->
<div class="btn-group">
<a class="btn btn-default" data-edit="bold" title="Bold (Ctrl/Cmd+B)"><i class="aweicon-bold"></i></a>
<a class="btn btn-default" data-edit="italic" title="Italic (Ctrl/Cmd+I)"><i class="aweicon-italic"></i></a>
<a class="btn btn-default" data-edit="strikethrough" title="Strikethrough"><i class="aweicon-strikethrough"></i></a>
<a class="btn btn-default" data-edit="underline" title="Underline (Ctrl/Cmd+U)"><i class="aweicon-underline"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="insertunorderedlist" title="Bullet list"><i class="aweicon-list-ul"></i></a>
<a class="btn btn-default" data-edit="insertorderedlist" title="Number list"><i class="aweicon-list-ol"></i></a>
<a class="btn btn-default" data-edit="outdent" title="Reduce indent (Shift+Tab)"><i class="aweicon-indent-left"></i></a>
<a class="btn btn-default" data-edit="indent" title="Indent (Tab)"><i class="aweicon-indent-right"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="justifyleft" title="Align Left (Ctrl/Cmd+L)"><i class="aweicon-align-left"></i></a>
<a class="btn btn-default" data-edit="justifycenter" title="Center (Ctrl/Cmd+E)"><i class="aweicon-align-center"></i></a>
<a class="btn btn-default" data-edit="justifyright" title="Align Right (Ctrl/Cmd+R)"><i class="aweicon-align-right"></i></a>
<a class="btn btn-default" data-edit="justifyfull" title="Justify (Ctrl/Cmd+J)"><i class="aweicon-align-justify"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default dropdown-toggle" data-toggle="dropdown" title="Hyperlink"><i class="aweicon-link"></i></a>
<div class="dropdown-menu input-append">
<input class="span2" placeholder="URL" type="text" data-edit="createLink"/>
<button class="btn" type="button">Add</button>
</div>
<a class="btn btn-default" data-edit="unlink" title="Remove Hyperlink"><i class="aweicon-cut"></i></a>
 
</div>
 
<div class="btn-group">
<a class="btn btn-default" title="Insert picture (or just drag & drop)" id="pictureBtn"><i class="aweicon-picture"></i></a>
<input type="file" data-role="magic-overlay" data-target="#pictureBtn" data-edit="insertImage" />
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="undo" title="Undo (Ctrl/Cmd+Z)"><i class="aweicon-undo"></i></a>
<a class="btn btn-default" data-edit="redo" title="Redo (Ctrl/Cmd+Y)"><i class="aweicon-repeat"></i></a>
</div>
 
</div>
 
<div id="editor">
<bean:message key="submit.todo.email.content"/>&hellip;
</div>
</div>
</div>
 
<button class="btn btn-success" onclick="this.form.text.value=$('#editor').html(); this.form.submit()"><bean:message key="submit.todo.message"/></button>
 
 
 
</html:form>
 
</div>
</div>
/branches/v3/impl/src/web/user/questionarios/pedagogicoEstudante/pedagogicoEstudanteCoursesCheck.jsp
18,6 → 18,9
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<script>
ping();
</script>
<%
String qId = request.getParameter("questionarioId");
if(qId == null)