/impl/importRoutines.xml |
---|
55,6 → 55,7 |
<java classname="pt.estgp.estgweb.services.jobs.JobDeamon" classpath="${build.dir.classes}" classpathref="pathToToolsLib" fork="true"> |
<jvmarg value="-Djava.security.egd=file:/dev/urandom"/> |
</java> |
</target> |
/impl/conf/language/MessageResources.properties |
---|
148,6 → 148,9 |
user.role.studentsID=Alunos de Informação e Documentação |
user.role.studentsFSIR=Alunos de Fontes de Informação e Serviço de Referência |
user.role.sendMailMessages=Enviar Mensagens de Correio Electronico |
user.role.pedagogicCouncilSecretariat=Secretariado do Conselho Pedagógico |
user.role.directionSecretariat=Secretariado da Direcção |
user.role.studentsSecretariat=Secretaria de Alunos |
user.role.admin,teacher=Admin e Professor |
user.role.assessementsTester=Testador de Provas de Avaliação |
/impl/conf/app.properties |
---|
17,8 → 17,12 |
email.local.suffix=estgp.pt |
email.server=smtp.gmail.com |
#to use example: bacodev1@estgp.pt bacodev2@estgp.pt |
email.user.prefix=bacodev |
email.user.sufix=@estgp.pt |
email.user.count=10 |
email.user=bacodev@estgp.pt |
email.password=Agreyq54p7870# |
email.password=Agreyq54p7870#! |
email.from=bacodev@estgp.pt |
email.templates.dir=@email.templates.dir@ |
#email.server.security= |
214,6 → 218,10 |
user.role.1524=pedagogicCouncil |
user.role.1525=pedagogicCouncil.president |
user.role.1611=pedagogicCouncilSecretariat |
user.role.1612=directionSecretariat |
user.role.1613=studentsSecretariat |
user.role.18=erasmusCouncil |
user.role.19=courseCoordinator |
user.role.20=studentAssociation |
/impl/conf/template/email/message_en.txt |
---|
1,26 → 1,21 |
# 0 : From |
# 1 : Subject |
# 2 : Text |
# 3 : person |
# 4 : target |
# |
# Message Email |
# |
<html> |
<head> |
<title>{1}</title> |
</head> |
<body> |
<h3>Dear {4}</h3> |
<p>Dear {4}</p> |
<p>A new message has been placed from {0}:</p> |
<p>Message from: {0}</p> |
<p>Subject: {1}</p> |
{1} |
{2} |
<p>Best Regards {3}</p> |
<p>Regards, {0}</p> |
<p>Reply to email: {5}</p> |
--------------------------------------------- |
<p>Escola Superior de Tecnologia e Gestão</p> |
<p>Instituto Politécnico de Portalegre</p> |
/impl/conf/template/email/message_pt.txt |
---|
1,20 → 1,23 |
|
<html> |
<head> |
<title>{1}</title> |
</head> |
<body> |
<!--<h3>Caros {4}</h3>--> |
<!--<p>Um nova mensagem foi enviada por {0}:</p>--> |
{1} |
<p><i>Mensagem de:</i> {0}</p> |
<p><i>Assunto:</i> <b><u>{1}</u></b></p> |
<p>Caros {4}</p> |
{2} |
<p>Cumprimentos, {3}</p> |
<p>Cumprimentos</p> |
<p>{0}</p> |
<p>Se pretender responder, use o email: {5}</p> |
--------------------------------------------- |
<p>Escola Superior de Tecnologia e Gestão</p> |
<p>Instituto Politécnico de Portalegre</p> |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
126,6 → 126,11 |
public static final String EMAIL_SERVER_SECURITY = ConfigProperties.getProperty("email.server.security"); |
public static final int EMAIL_SERVER_SECURITY_TLS = ConfigProperties.getIntProperty("email.server.security.tls"); |
public static final int EMAIL_SERVER_SECURITY_SSL = ConfigProperties.getIntProperty("email.server.security.ssl"); |
public static final String EMAIL_SERVER_USER_PREFIX = ConfigProperties.getProperty("email.user.prefix"); |
public static final String EMAIL_SERVER_USER_SUFIX = ConfigProperties.getProperty("email.user.sufix"); |
public static final int EMAIL_SERVER_USER_COUNT = ConfigProperties.getIntProperty("email.user.count"); |
public static final String EMAIL_SERVER_USERNAME = ConfigProperties.getProperty("email.user"); |
public static final String EMAIL_SERVER_PASSWORD = ConfigProperties.getProperty("email.password"); |
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java |
---|
33,9 → 33,29 |
private static final String gradeUnitTemplate = Globals.TEMPLATE_EMAIL_PATH + "/" + Globals.EMAIL_GRADE_UNIT_TEMPLATE; |
static String[] serverEmails; |
static int serverEmailPos = -1; |
static{ |
serverEmails = new String[Globals.EMAIL_SERVER_USER_COUNT]; |
for(int i = 1;i<= Globals.EMAIL_SERVER_USER_COUNT;i++) |
{ |
serverEmails[i-1] = Globals.EMAIL_SERVER_USER_PREFIX + i + Globals.EMAIL_SERVER_USER_SUFIX; |
} |
} |
private static synchronized String getRoundRobinEmailUser() |
{ |
serverEmailPos++; |
if(serverEmailPos >= Globals.EMAIL_SERVER_USER_COUNT) |
{ |
serverEmailPos = 0; |
} |
return serverEmails[serverEmailPos]; |
} |
public void sendEmail(Email email) throws ServiceException |
{ |
try{ |
final String sendFromAddress = getRoundRobinEmailUser(); |
// Set up properties for mail session |
Properties props = System.getProperties(); |
50,7 → 70,7 |
props.put("mail.smtp.port", ""+ Globals.EMAIL_SERVER_SECURITY_TLS); |
authenticator = new javax.mail.Authenticator() { |
protected PasswordAuthentication getPasswordAuthentication() { |
return new PasswordAuthentication(username, password); |
return new PasswordAuthentication(sendFromAddress, password); |
} |
}; |
} |
63,7 → 83,7 |
props.put("mail.smtp.port", Globals.EMAIL_SERVER_SECURITY_SSL); |
authenticator = new javax.mail.Authenticator() { |
protected PasswordAuthentication getPasswordAuthentication() { |
return new PasswordAuthentication(username,password); |
return new PasswordAuthentication(sendFromAddress,password); |
} |
}; |
} |
104,13 → 124,13 |
logger.info("FROM:" + email.getFrom() + " but using: " + Globals.SYSTEM_EMAIL_BOX); |
logger.info("FROM:" + email.getFrom() + " but using: " + sendFromAddress); |
//if(email.getFromName() != null) |
try { |
message.setFrom(new InternetAddress(Globals.SYSTEM_EMAIL_BOX,Globals.SYSTEM_EMAIL_BOX)); |
message.setFrom(new InternetAddress(sendFromAddress,sendFromAddress)); |
} catch (UnsupportedEncodingException e) { |
logger.error(e,e); |
message.setFrom(new InternetAddress(email.getFrom())); |
//message.setFrom(new InternetAddress(sendFromAddress)); |
} |
//else |
// message.setFrom(new InternetAddress(Globals.SYSTEM_EMAIL_BOX)); |
213,6 → 233,11 |
public Email getMessageEmail(String from, String subject,String text, LangEnum langEnum, String target, List<String> emails, User user) |
{ |
return getMessageEmailAdulteredFromEmail(null,from,subject,text,langEnum,target,emails,user); |
} |
public Email getMessageEmailAdulteredFromEmail(String fromEmail, String from, String subject,String text, LangEnum langEnum, String target, List<String> emails, User user) |
{ |
// # 0 : From |
// # 1 : Subject |
// # 2 : Text |
224,6 → 249,7 |
arguments.add(text); |
arguments.add(user.getName()); |
arguments.add(target); |
arguments.add(fromEmail); |
String template; |
243,7 → 269,10 |
recipients.add(e); |
} |
logger.info("subject: " + subject); |
logger.info("user: " + user.getEmail()); |
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) |
252,7 → 281,8 |
for(String rec: recipients) |
logger.info(rec); |
logger.info("arguments end"); |
Email email = new Email(subject ,recipients,user.getEmail(),template,arguments,Message.RecipientType.BCC); |
fromEmail = fromEmail == null ? user.getEmail() : fromEmail; |
Email email = new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC); |
email.setFromName(from + " (ESTG)"); |
return email; |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/AulaDao.java |
---|
113,12 → 113,13 |
} |
public ArrayList<Aula> loadAulas(Integer codigoInstituicao, String anolectivo, String codigoUnidade, String semestre, String codigoCurso) throws SQLException { |
public ArrayList<Aula> loadAulas(Integer codigoInstituicao, String anolectivo, String codigoUnidade, String semestre, String codigoCurso, Connection conn) throws SQLException { |
Integer limiteSalaInferior = codigoInstituicao * 1000; |
Integer limiteSalaSuperior = (codigoInstituicao + 1) * 1000; |
boolean closeConnection = conn == null; |
ArrayList<Aula> aulas = new ArrayList<Aula>(); |
Connection conn = getCurrentConnection(); |
if(conn == null) |
conn = getCurrentConnection(); |
String query; |
query = "SELECT " |
+ "CSH.T_OCUPACOES.DT_OCUPACAO AS DT_OCUPACAO," |
203,7 → 204,8 |
//close the reader |
aReader.close(); |
catCMD.close(); |
conn.close(); |
if(closeConnection) |
conn.close(); |
return aulas; |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumariesJson.java |
---|
26,6 → 26,7 |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages; |
import pt.estgp.estgweb.services.sigesimports.oracle.dao.AulaDao; |
import pt.estgp.estgweb.services.sigesimports.oracle.dao.connection.ConnectionManager; |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import pt.estgp.estgweb.web.FtpServer; |
import pt.ipportalegre.siges.web.services.SiGesWEB; |
39,6 → 40,7 |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.net.URL; |
import java.sql.Connection; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
104,8 → 106,12 |
//List<Long> cUs = DaoFactory.getCourseUnitDaoImpl().loadIds(year,DatesUtils.getSemestre()); |
List<Long> cUs = DaoFactory.getCourseUnitDaoImpl().loadIds(year,semestre); |
String nowCode = ""; |
Connection conn = ConnectionManager.openConnection(); |
boolean connError = false; |
for(Long cId: cUs) |
{ |
if(connError) |
break; |
nowCode = "" + cId; |
countUnits++; |
try |
130,8 → 136,10 |
//comentario de teste |
try |
{ |
//arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),semestre,c.getCourse().getCode()); |
arrayOfAulas = AulaDao.getInstance().loadAulas(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode(),year,c.getCode(),semestre,c.getCourse().getCode()); |
arrayOfAulas = AulaDao.getInstance().loadAulas(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode(),year,c.getCode(),semestre,c.getCourse().getCode(),conn); |
break; |
} |
catch(Throwable t) |
140,11 → 148,12 |
{ |
logger.error("Giving up of courseUnit:" + cId + " ( " + c.getName() + " ) ",t); |
serviceLogError("Giving up of courseUnit:" + cId + " ( " + c.getName() + " ) ",t); |
connError = true; |
break; |
} |
logger.error("WebService Fail, trying " + tries + " times sleeping a while"); |
logger.error("WebService Fail, trying " + tries + " times sleeping a while",t); |
serviceLogError("WebService Fail, trying " + tries + " times sleeping a while " + t.toString()); |
serviceLogError("WebService Fail, trying " + tries + " times sleeping a while " + t.getCause()); |
Thread.sleep(5000); |
261,6 → 270,7 |
serviceLogError(e.toString(),e); |
} |
} |
conn.close(); |
setProgress(100); |
serviceLogError("Finish commiting"); |
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java |
---|
120,7 → 120,7 |
return userViews; |
} |
public Integer sendMessage(HttpServletRequest request, String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target, String text,String subject, UserSession userSession) |
public Integer sendMessage(HttpServletRequest request, String fromEmail, String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target, String text,String subject, UserSession userSession) |
{ |
//List<User> users = DaoFactory.getAnnouncementDaoImpl().findUsers(year,department,courseId,courseUnitId,semestre,target); |
AnnouncementDaoImpl.FindUsersResult result = DaoFactory.getAnnouncementDaoImpl().findUsersEmails(year, department, courseId, courseUnitId, semestre, target); |
139,7 → 139,7 |
iter.remove(); |
contador++; |
} |
Email e = sendEmailService.getMessageEmail( |
Email e = sendEmailService.getMessageEmailAdulteredFromEmail(fromEmail, |
jomm.utils.MessageResources.getMessage(request,"user.role." + from), |
subject, |
text, |
/impl/src/java/pt/estgp/estgweb/web/form/announcements/MessagesForm.java |
---|
18,6 → 18,7 |
private String importYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYearCreateTransaction(); |
private String fromEmail; |
private String fromRole; |
private CourseView courseView; |
private String departamento; |
80,6 → 81,14 |
this.courseViews = courseViews; |
} |
public String getFromEmail() { |
return fromEmail; |
} |
public void setFromEmail(String fromEmail) { |
this.fromEmail = fromEmail; |
} |
public MessagesForm() |
{ |
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/MessagesController.java |
---|
138,7 → 138,7 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{request, mF.getFromRole(),mF.getImportYear(),mF.getDepartamento(),mF.getCourseId(),mF.getCourseUnitId(),mF.getSemestre(), CreateAnnouncementService.MessageTarget.parse(mF.getTarget()),mF.getText(),mF.getSubject()}; |
Object[] args = new Object[]{request, mF.getFromEmail(),mF.getFromRole(),mF.getImportYear(),mF.getDepartamento(),mF.getCourseId(),mF.getCourseUnitId(),mF.getSemestre(), CreateAnnouncementService.MessageTarget.parse(mF.getTarget()),mF.getText(),mF.getSubject()}; |
// String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target, |
Integer size = (Integer) sm.execute(RequestUtils.getRequester(request, response), "SendMessage", args, names); |
/impl/src/web/admin/announcements/submitMessage.jsp |
---|
35,6 → 35,14 |
<tr> |
<th> |
Email de Origem para aparecer na mensagem |
</th> |
<td> |
<html:text property="fromEmail"></html:text> ** Se deixar por preencher fica o email pessoal |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.sendAnnouncementLike"/> |
</th> |
<td> |
156,7 → 164,11 |
})(); |
setTimeout("setText()",500); |
$(document).ready( |
function(){ |
setText(); |
} |
); |
function setText() |
/impl/src/web/user/home/student.jsp |
---|
53,6 → 53,7 |
</li> |
</ul> |
</logic:notMatch> |
<jsp:include page="todosAfazer.jsp"/> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
/impl/src/web/user/home/teacher.jsp |
---|
29,6 → 29,7 |
</li> |
</ul> |
</logic:notMatch> |
<jsp:include page="todosAfazer.jsp"/> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
121,9 → 122,10 |
%> |
</div> |
</baco:isModuleOn> |
<%-- |
<baco:isModuleOn module="todos"> |
<jsp:include page="/user/home/todos.jsp"/> |
</baco:isModuleOn> |
</baco:isModuleOn>--%> |
<baco:isModuleOn module="courseunits"> |
<jsp:include page="/user/home/courseUnitsAnnouncements.jsp"/> |
</baco:isModuleOn> |
/impl/src/web/user/home/todosAfazer.jsp |
---|
New file |
0,0 → 1,100 |
<%@ page import="pt.estgp.estgweb.services.common.IToDoCat" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page import="pt.estgp.estgweb.services.common.IToDo" %> |
<%@ page import="pt.estgp.estgweb.services.common.ModuleEnum" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ 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-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%-- |
Created by IntelliJ IDEA. |
User: Jorge |
Date: 2/Jun/2008 |
Time: 16:01:47 |
To change this template use File | Settings | File Templates. |
--%> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
List<IToDoCat> todos = (List<IToDoCat>) sm.execute(RequestUtils.getRequester(request, response), "CommonServicesGetAllTodosCat", args, names); |
%> |
<% |
for (IToDoCat toDoCat : todos) |
{ |
if (toDoCat.getDescription().equals(ModuleEnum.TodoAnnouncements.getMessageKey())) |
{ |
%> |
<div class="row"> |
<div class="col-md-12 col-sm-12 col-xs-12"> |
<div class="panel panel-primary"> |
<div class="panel-heading"><bean:message key="intranet.todo"/></div> |
<div class="panel-body"> |
<div class="list-group"> |
<div class="list-group-item active"> |
<%=MessageResources.getMessage(request, toDoCat.getDescription())%> (<%=toDoCat.getTotalToDo()%>) |
</div> |
<% |
for (IToDo todo : toDoCat.getAllToDos()) |
{ |
%> |
<div class="list-group-item"> |
<% |
if (todo.getUrl() != null) |
{ |
%> |
<a href="<%=request.getContextPath() + todo.getUrl()%>"> |
<% |
if(todo.getCatArg0() == null && todo.getCatKey() != null) |
{ |
out.print(MessageResources.getMessage(request,todo.getCatKey()) + ":"); |
} |
else if(todo.getCatArg0() != null && todo.getCatKey() != null) |
{ |
out.print(MessageResources.getMessage(request,todo.getCatKey(),todo.getCatArg0()) + ":"); |
} |
%> |
<%=todo.getLabelInsideCat(request)%> |
</a> |
<img src="<%=request.getContextPath()%>/imgs/preencher.gif" width="35px"/> |
<% |
} |
else |
{ |
%> |
<%=todo.getLabelInsideCat(request)%> |
<% |
} |
%> |
</div> |
<% |
} |
%> |
</div> |
</div> |
</div> |
</div> |
</div> |
<% |
} |
} |
%> |