/impl/conf/app.properties |
---|
65,6 → 65,8 |
email.summary.subject.en=Sumário lançado em {0} |
email.relatorio.aval.unidade.editado.subject.pt=Relatório Avaliação Editado {0} |
email.relatorio.aval.unidade.editado.subject.en=Unit Report Evaluation Edited {0} |
email.unidade.edicao.subject.pt=Ficha em edição {0} |
email.unidade.edicao.subject.en=Unit in edition {0} |
email.unidade.editada.subject.pt=Ficha editada {0} |
/impl/conf/template/email/unidadeRelatorioAvaliacaoEditado_en.txt |
---|
New file |
0,0 → 1,13 |
#Email unidade ficha em edicao |
Caro membro da comissão de curso de {0} |
O BACO informa-o de que o relatorio de avaliação da unidade curricular de {1} |
foi alterado |
Estado {2} |
Com os melhores cumprimentos |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
Property changes: |
Added: svn:executable |
+ * |
/impl/conf/template/email/unidadeRelatorioAvaliacaoEditado_pt.txt |
---|
New file |
0,0 → 1,13 |
#Email unidade ficha em edicao |
Caro membro da comissão de curso de {0} |
O BACO informa-o de que o relatorio de avaliação da unidade curricular de {1} |
foi editado |
Estado {2} |
Cumprimentos |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
353,6 → 353,10 |
public static final String EMAIL_UNDADE_EDITADA_TEMPLATE_PT = "unidadeEditada_pt.txt"; |
public static final String EMAIL_UNDADE_EDITADA_TEMPLATE_EN = "unidadeEditada_en.txt"; |
public static final String EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_PT = "unidadeRelatorioAvaliacaoEditado_pt.txt"; |
public static final String EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_EN = "unidadeRelatorioAvaliacaoEditado_en.txt"; |
public static final String EMAIL_UNDADE_VALIDADA_TEMPLATE_PT = "unidadeValidada_pt.txt"; |
public static final String EMAIL_UNDADE_VALIDADA_TEMPLATE_EN = "unidadeValidada_en.txt"; |
360,9 → 364,13 |
public static final String EMAIL_UNDADE_EDICAO_SUBJECT_PT = "email.unidade.edicao.subject.pt"; |
public static final String EMAIL_UNDADE_EDICAO_SUBJECT_EN = "email.unidade.edicao.subject.en"; |
public static final String EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_PT = "email.relatorio.aval.unidade.editado.subject.pt"; |
public static final String EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_EN = "email.relatorio.aval.unidade.editado.subject.en"; |
public static final String EMAIL_UNDADE_EDITADA_SUBJECT_PT = "email.unidade.editada.subject.pt"; |
public static final String EMAIL_UNDADE_EDITADA_SUBJECT_EN = "email.unidade.editada.subject.en"; |
public static final String EMAIL_UNDADE_VALIDADA_SUBJECT_PT = "email.unidade.validade.subject.pt"; |
public static final String EMAIL_UNDADE_VALIDADA_SUBJECT_EN = "email.unidade.validada.subject.en"; |
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitEvaluation.java |
---|
59,9 → 59,7 |
if(evaluation == null) |
{ |
evaluation = new CourseUnitEvaluationImpl(); |
System.out.println(">>>>>>>>>>>>"); |
DaoFactory.getCourseUnitEvaluationDaoImpl().save(evaluation); |
System.out.println("<<<<<<<<<<<<<"); |
c.setCourseUnitEvaluation(evaluation); |
cupv.setCourseUnitEvaluation(evaluation); |
} |
86,25 → 84,31 |
cupv.setCourseUnitEvaluation(evaluation); |
} |
List<String> errors = new ArrayList<String>(); |
String estado = "POR ENTREGAR"; |
if(cupv.isFechar()) |
{ |
evaluation.setClosed(true); |
evaluation.setTeacherComplete(true); |
estado = "Aceite pela Comissao de Curso"; |
} |
else if(cupv.isTeacherComplete()) |
{ |
estado = "Entregue a Comissao de Curso pelo docente"; |
evaluation.setTeacherComplete(true); |
} |
else |
{ |
estado = "Alterado pelo docente"; |
evaluation.setClosed(false); |
//TODO novo |
evaluation.setTeacherComplete(false); |
} |
createPdf(evaluation,c,usession,errors); |
if(usession.getUser() instanceof Teacher) |
DirectedCoordinatedUnitsService.sendNotificationsEditedInterestedPeople(c,usession); |
if(usession != null && usession.getUser() != null && usession.getUser() instanceof Teacher) |
DirectedCoordinatedUnitsService.sendNotificationsCourseUnitEvaluationEditedInterestedPeople(c, estado, usession); |
else |
{ |
logger.info("Nao vai informar docentes"); |
131,6 → 135,9 |
evaluation.setTeacherComplete(false); |
} |
CourseUnitEvaluationView cupv = new CourseUnitEvaluationView(evaluation); |
if(usession != null && usession.getUser() != null && usession.getUser() instanceof Teacher) |
DirectedCoordinatedUnitsService.sendNotificationsCourseUnitEvaluationEditedInterestedPeople(c, "Aberto pela Comissao de Curso", usession); |
return cupv; |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/DirectedCoordinatedUnitsService.java |
---|
323,6 → 323,19 |
} |
} |
public static void sendNotificationsCourseUnitEvaluationEditedInterestedPeople(CourseUnit courseUnit,String estado,UserSession u) |
{ |
try{ |
SendEmailService sendEmailService = new SendEmailService(); |
List<String> emails = getEmailJobNotifications(courseUnit); |
EMAILJob emailJob = new EMAILJob(sendEmailService.getRelatorioAvaliacaoUnidadeEditadaEmail(emails,courseUnit,LangEnum.PORTUGUESE,estado)); |
JobScheduleService.getInstance().scheduleNow(emailJob,"New Notification EMAIL unit state changed to courseComission and teachers " ,u); |
}catch(Throwable t) |
{ |
logger.error(t,t); |
} |
} |
public static List<String> getEmailJobNotifications(CourseUnit courseUnit) { |
List<String> emails = new ArrayList<String>(); |
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java |
---|
580,6 → 580,36 |
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments); |
} |
public Email getRelatorioAvaliacaoUnidadeEditadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum,String estado) |
{ |
List<String> arguments = new ArrayList<String>(); |
String subject; |
String template; |
if(langEnum == LangEnum.PORTUGUESE) |
{ |
template = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_PT; |
subject = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_PT; |
} |
else |
{ |
template = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_EN; |
subject = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_EN; |
} |
subject = MessageFormat.format(ConfigProperties.getProperty(subject),new String[]{c.getName()}); |
arguments.add(c.getCourseName()); |
arguments.add(c.getName()); |
arguments.add(estado); |
List<String> recipients = new ArrayList<String>(); |
for(String email:emails) |
recipients.add(email); |
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments); |
} |
public boolean sendNewGrades(List<String[]> grades, LangEnum langEnum, String studentEmail, String studentName) |
{ |
try |
/impl/src/web/imgs/process/leftProcessGray.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/imgs/process/rightProcessGray.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/css/style.css |
---|
1958,6 → 1958,16 |
} |
td.processActivityNameGray |
{ |
border-left:0; |
border-right: 0; |
border-bottom: 1px solid #77B61E; |
border-top: 1px solid #77B61E; |
background-color: #c8c8c8; |
} |
.processesTable .OPEN |
{ |
background-color: green; |
/impl/src/web/user/courseunits/courseunitEvaluation.jsp |
---|
104,63 → 104,157 |
UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole())) |
{ |
%> |
<% |
if(closed) |
{ |
%> |
<p class="success">Este formulário foi ACEITE pela <bean:message key="user.role.${CourseUnitView.courseView.validationRole}"/></p> |
<% |
%> |
<table> |
<tr> |
<td> |
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0"> |
<tr> |
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcess.gif"/></td> |
<td class="processActivityName" style="width: 100%">Criado</td> |
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcess.gif"/></td> |
</tr> |
</table> |
</td> |
<td> |
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0"> |
<tr> |
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcess.gif"/></td> |
<td class="processActivityName" style="width: 100%">Entregue</td> |
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcess.gif"/></td> |
</tr> |
</table> |
</td> |
<td> |
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0"> |
<tr> |
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcess.gif"/></td> |
<td class="processActivityName" style="width: 100%">Aceite</td> |
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcess.gif"/></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
<p class="success">Este formulário foi <label style="background-color: green">ACEITE</label> pela <bean:message key="user.role.${CourseUnitView.courseView.validationRole}"/></p> |
<% |
if(editCoordinatorPart) |
{ |
%> |
%> |
<html:form action="/user/courseUnitEvaluationController"> |
<input type="hidden" name="dispatch" value="openEvaluation"> |
<html:hidden property="courseUnitView.id"/> |
<p>Caro <%=UserSession.getName()%>, membro da <bean:message key="user.role.${CourseUnitView.courseView.validationRole}"/>, |
está autorizado a reabrir o relatório de avaliação para o corpo docente da unidade de ${CourseUnitView.name}.</p> |
está autorizado a reabrir o relatório de avaliação para o corpo docente da unidade de ${CourseUnitView.name} poder editar.</p> |
<input type="submit" value="Reabrir para edição (Comissão de Curso)"/> (Esta operação está disponível apenas a membros da Comissão de Curso) |
</html:form> |
<% |
<% |
} |
%> |
<% |
} |
else if(!teacherComplete) |
else if(!closed && teacherComplete) |
{ |
%> |
<h2>Formulário em fase de edição</h2> |
<% |
} |
else |
{ |
%> |
<h2>Relatório em estado ENTREGUE à coordenação, aguarde que a coordenação aceite o relatório ou o abra novamente</h2> |
<h2>Relatório em estado <label style="background-color: yellow">ENTREGUE</label> à coordenação, aguarde que a coordenação aceite o relatório ou o abra novamente</h2> |
<table> |
<tr> |
<td> |
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0"> |
<tr> |
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcess.gif"/></td> |
<td class="processActivityName" style="width: 100%">Criado</td> |
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcess.gif"/></td> |
</tr> |
</table> |
</td> |
<td> |
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0"> |
<tr> |
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcess.gif"/></td> |
<td class="processActivityName" style="width: 100%">Entregue</td> |
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcess.gif"/></td> |
</tr> |
</table> |
</td> |
<td> |
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0"> |
<tr> |
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcessGray.gif"/></td> |
<td class="processActivityNameGray" style="width: 100%">Aceite</td> |
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcessGray.gif"/></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
<% |
if(editCoordinatorPart) |
{ |
%> |
<html:form action="/user/courseUnitEvaluationController"> |
<input type="hidden" name="dispatch" value="openEvaluation"> |
<html:hidden property="courseUnitView.id"/> |
<html:form action="/user/courseUnitEvaluationController"> |
<input type="hidden" name="dispatch" value="openEvaluation"> |
<html:hidden property="courseUnitView.id"/> |
<p>Caro <%=UserSession.getName()%>, membro da <bean:message key="user.role.${CourseUnitView.courseView.validationRole}"/>, |
está autorizado a reabrir o relatório de avaliação para o corpo docente da unidade de ${CourseUnitView.name}.</p> |
<input type="submit" value="Reabrir para edição (Comissão de Curso)"/> (Esta operação está disponível apenas a membros da Comissão de Curso) |
</html:form> |
<p>Caro <%=UserSession.getName()%>, membro da <bean:message key="user.role.${CourseUnitView.courseView.validationRole}"/>, |
está autorizado a reabrir o relatório de avaliação para o corpo docente da unidade de ${CourseUnitView.name}. poder editar</p> |
<input type="submit" value="Reverter o estado ENTREGUE (Comissão de Curso)"/> (Esta operação está disponível apenas a membros da Comissão de Curso) |
</html:form> |
<% |
} |
} |
} |
else |
{ |
%> |
<h2>Formulário em estado <label style="background-color: red">NÃO ENTREGUE</label> para edição</h2> |
%> |
<table> |
<tr> |
<td> |
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0"> |
<tr> |
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcess.gif"/></td> |
<td class="processActivityName" style="width: 100%">Criado</td> |
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcess.gif"/></td> |
</tr> |
</table> |
</td> |
<td> |
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0"> |
<tr> |
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcessGray.gif"/></td> |
<td class="processActivityNameGray" style="width: 100%">Entregue</td> |
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcessGray.gif"/></td> |
</tr> |
</table> |
</td> |
<td> |
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0"> |
<tr> |
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcessGray.gif"/></td> |
<td class="processActivityNameGray" style="width: 100%">Aceite</td> |
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcessGray.gif"/></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
<% |
} |
%> |
<script> |
$( document ).ready(function() { |
<% |
328,7 → 422,7 |
<tr> |
<td colspan="2"> |
<% |
if(!closed && (editCoordinatorPart || editTeacherPart)) |
if(!teacherComplete && !closed && (editCoordinatorPart || editTeacherPart)) |
{ |
%> |