/impl/conf/language/MessageResourcesEmail.properties |
---|
3,15 → 3,15 |
# MAIL MESSAGE RESOURCES |
# |
################################################################################ |
module.Email=Serviço de Email |
pop.no.messages=Não tem mensagens na sua caixa de correio |
pop.title=Ir para <a target="_blank" href="http://mail.estgp.pt/exchange/{0}">WEBMAIL</a> |
pop.last.messages=Últimas mensagens de Email |
module.Email=Servi\u00e7o de Email |
pop.no.messages=N\u00e3o tem mensagens na sua caixa de correio |
pop.title=Ir para <a target="_blank" href="http://mail.google.com/a/estgp.pt/{0}">WEBMAIL</a> |
pop.last.messages=\u00daltimas mensagens de Email |
pop.text=Mensagem |
pop.from=De |
pop.to=Para |
pop.subject=Assunto |
pop.loading=Carregando mensagens de Email... |
pop.date=Recebido |
pop.not.configured=A caixa POP do seu servidor de Email não está configurado. A sigla POP refere-se ao protocolo de leitura de mensagens em servidores de email externos. Por favor configure o seu servidor de POP nos seus dados de perfil<br>(exemplo na ESTG:<br> pop = mail.estgp.pt) |
pop.danger.messages=Existem mensagens na sua caixa de correio da escola que estão incorrectamente formatadas e que podem prejudicar a vizualização deste sítio. Por favor remova-as da sua caixa para que as restantes possam ser aqui apresentadas. |
pop.not.configured=A caixa POP do seu servidor de Email n\u00e3o est\u00e1 configurado. A sigla POP refere-se ao protocolo de leitura de mensagens em servidores de email externos. Por favor configure o seu servidor de POP nos seus dados de perfil<br>(exemplo na ESTG:<br> pop = mail.estgp.pt) |
pop.danger.messages=Existem mensagens na sua caixa de correio da escola que est\u00e3o incorrectamente formatadas e que podem prejudicar a vizualiza\u00e7\u00e3o deste s\u00edtio. Por favor remova-as da sua caixa para que as restantes possam ser aqui apresentadas. |
/impl/conf/WEB-INF/struts/tiles-assessments.xml |
---|
New file |
0,0 → 1,60 |
<?xml version="1.0" encoding="UTF-8" ?> |
<!--<!DOCTYPE tiles-definitions PUBLIC--> |
<!--"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"--> |
<!--"http://struts.apache.org/dtds/tiles-config_1_1.dtd">--> |
<tiles-definitions> |
<definition name="page.submit.assessment.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Prova"/> |
<put name="topnav" value="/user/serviceZone/topnavCreateAssessment.jsp"/> |
<put name="body" value="/user/assessments/submitAssessment.jsp"/> |
</definition> |
<definition name="page.list.assessments.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Prova"/> |
<put name="topnav" value="/user/serviceZone/topnavListAssessment.jsp"/> |
<put name="body" value="/user/assessments/listAssessments.jsp"/> |
</definition> |
<definition name="page.submit.schedule.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Prova"/> |
<put name="topnav" value="/user/serviceZone/topnavScheduleAssessment.jsp"/> |
<put name="body" value="/user/assessments/scheduleAssessment.jsp"/> |
</definition> |
<definition name="page.submit.editSchedule.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Prova"/> |
<put name="topnav" value="/user/serviceZone/topnavEditScheduleAssessment.jsp"/> |
<put name="body" value="/user/assessments/editScheduleAssessment.jsp"/> |
</definition> |
<definition name="page.submit.assessment.response.from.home" extends="page.separators.home"> |
<put name="title" value="Prova"/> |
<put name="topnav" value="/user/home/topnavResponseAssessment.jsp"/> |
<put name="body" value="/user/assessments/submitAssessmentResponse.jsp"/> |
</definition> |
<definition name="page.configure.correct.assessment.from.serviceZone" extends="page.separators.home"> |
<put name="title" value="Prova"/> |
<put name="topnav" value="/user/serviceZone/topnavConfigureCorrectAssessment.jsp"/> |
<put name="body" value="/user/assessments/switchCorrectAssessment.jsp"/> |
</definition> |
<definition name="page.list.questionsOrResponsesCorrect.from.serviceZone" extends="page.separators.home"> |
<put name="title" value="Prova"/> |
<put name="topnav" value="/user/serviceZone/topnavAssessmentToCorrect.jsp"/> |
<put name="body" value="/user/assessments/listQuestionsOrResponsesToCorrect.jsp"/> |
</definition> |
<definition name="page.submit.correct.assessment.response.from.serviceZone" extends="page.separators.home"> |
<put name="title" value="Prova"/> |
<put name="topnav" value="/user/serviceZone/topnavCorrectAssessmentResponse.jsp"/> |
<put name="body" value="/user/assessments/submitCorrectAssessmentResponse.jsp"/> |
</definition> |
<definition name="page.submit.correct.question.responses.from.serviceZone" extends="page.separators.home"> |
<put name="title" value="Prova"/> |
<put name="topnav" value="/user/serviceZone/topnavCorrectAssessmentQuestionResponses.jsp"/> |
<put name="body" value="/user/assessments/submitCorrectQuestionResponses.jsp"/> |
</definition> |
</tiles-definitions> |
/impl/conf/WEB-INF/struts/struts-assessment.xml |
---|
New file |
0,0 → 1,141 |
<?xml version="1.0" encoding="UTF-8"?> |
<!--<!DOCTYPE struts-config PUBLIC--> |
<!--"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"--> |
<!--"http://struts.apache.org/dtds/struts-config_1_3.dtd">--> |
<struts-config> |
<form-beans> |
<form-bean type="pt.estgp.estgweb.web.form.assessments.AssessmentsForm" name="AssessmentsForm"/> |
</form-beans> |
<global-exceptions> |
</global-exceptions> |
<global-forwards> |
</global-forwards> |
<action-mappings> |
<action path="/user/submitAssessmentFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.assessments.AssessmentController" |
name="AssessmentsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.assessment.from.serviceZone" |
validate="true"> |
<forward name="serviceZone" path="page.separators.serviceZone"/> |
</action> |
<action path="/user/scheduleAssessmentFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.assessments.AssessmentController" |
name="AssessmentsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.schedule.from.serviceZone" |
validate="true"> |
<forward name="serviceZone" path="page.separators.serviceZone"/> |
</action> |
<action path="/user/editScheduleAssessmentFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.assessments.AssessmentController" |
name="AssessmentsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.editSchedule.from.serviceZone" |
validate="false"> |
<forward name="serviceZone" path="page.separators.serviceZone"/> |
</action> |
<action path="/user/startAssessmentResponseFromHome" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=loadResponse&from=Home"/> |
<action path="/user/submitAssessmentResponseFromHome" |
type="pt.estgp.estgweb.web.controllers.assessments.AssessmentController" |
name="AssessmentsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.assessment.response.from.home" |
validate="false"> |
<forward name="home" path="page.separators.home"/> |
</action> |
<action path="/user/submitConfigureCorrectAssessmentFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.assessments.AssessmentController" |
name="AssessmentsForm" |
scope="request" |
parameter="dispatch" |
input="page.configure.correct.assessment.from.serviceZone" |
validate="false"> |
<forward name="listQuestionsOrResponsesToCorrect" path="page.list.questionsOrResponsesCorrect.from.serviceZone"/> |
</action> |
<action path="/user/chooseQuestionOrAssessmentToCorrectFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.assessments.AssessmentController" |
name="AssessmentsForm" |
scope="request" |
parameter="dispatch" |
input="page.list.questionsOrResponsesCorrect.from.serviceZone" |
validate="false"> |
<!--<forward name="listQuestionsOrResponsesToCorrect" path="page.list.questionsOrResponsesCorrect.from.serviceZone"/>--> |
</action> |
<!--SUBMETER CORRECCAO A UMA PROVA INDIVIDUAL--> |
<action path="/user/startSubmitCorrectAssessmentResponseFromServiceZone" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=loadCorrectResponse&from=ServiceZone"/> |
<action path="/user/submitCorrectAssessmentResponseFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.assessments.AssessmentController" |
name="AssessmentsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.correct.assessment.response.from.serviceZone" |
validate="false"> |
<forward name="serviceZone" path="page.separators.serviceZone"/> |
<forward name="listQuestionsOrResponsesToCorrect" path="page.list.questionsOrResponsesCorrect.from.serviceZone"/> |
</action> |
<!--SUBMETER CORRECCAO ÀS RESPOSTAS DE UMA QUESTÃO INDIVIDUAL--> |
<action path="/user/startSubmitCorrectQuestionResponsesFromServiceZone" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=loadQuestionResponses&from=ServiceZone"/> |
<action path="/user/submitCorrectQuestionResponsesFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.assessments.AssessmentController" |
name="AssessmentsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.correct.question.responses.from.serviceZone" |
validate="false"> |
<forward name="serviceZone" path="page.separators.serviceZone"/> |
<forward name="listQuestionsOrResponsesToCorrect" path="page.list.questionsOrResponsesCorrect.from.serviceZone"/> |
</action> |
<!--<action path="/user/startLoadSurveyNodeGraphs" forward="page.load.survey.node.graphs"/>--> |
<!--<action path="/user/startListSurveyStats" forward="/user/surveysControllerFromServiceZone.do?dispatch=listStats"/>--> |
<action path="/user/generateEvaluationsPdfFromServiceZone" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=generateEvaluationsPdf&from=ServiceZone"/> |
<action path="/user/startCorrectAssessmentFromServiceZone" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=startCorrect&from=ServiceZone"/> |
<action path="/user/startScheduleAssessmentFromServiceZone" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=schedule&from=ServiceZone"/> |
<action path="/user/startEditScheduleAssessmentFromServiceZone" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=editSchedule&from=ServiceZone"/> |
<action path="/user/startCloneAssessmentFromServiceZone" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=clone&from=ServiceZone"/> |
<action path="/user/startEditAssessmentFromServiceZone" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=edit&from=ServiceZone"/> |
<action path="/user/startListAssessmentsFromServiceZone" forward="page.list.assessments.from.serviceZone"/> |
<action path="/user/startSubmitAssessmentFromServiceZone" forward="/user/assessmentsControllerFromServiceZone.do?dispatch=create&from=ServiceZone"/> |
<action path="/user/assessmentsControllerFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.assessments.AssessmentController" |
name="AssessmentsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.assessment.from.serviceZone" |
validate="false"> |
<forward name="listAssessments" path="page.list.assessments.from.serviceZone"/> |
<forward name="loadQuestionResponses" path="page.submit.correct.question.responses.from.serviceZone"/> |
<forward name="loadCorrectResponse" path="page.submit.correct.assessment.response.from.serviceZone"/> |
<forward name="startCorrect" path="page.configure.correct.assessment.from.serviceZone"/> |
<forward name="response" path="page.submit.assessment.response.from.home"/> |
<!--<forward name="stats" path="page.list.survey.stats"/>--> |
<forward name="schedule" path="page.submit.schedule.from.serviceZone"/> |
<forward name="editSchedule" path="page.submit.editSchedule.from.serviceZone"/> |
<forward name="serviceZone" path="page.separators.serviceZone"/> |
<forward name="from.add.role" path="page.submit.assessment.from.serviceZone"/> |
</action> |
</action-mappings> |
</struts-config> |
/impl/conf/app.properties |
---|
442,7 → 442,8 |
pop.container.use=true |
#pop.container.use=false |
pop.web.interface=http://mail.estgp.pt/exchange |
pop.server=mail.estgp.pt |
#pop.server=mail.estgp.pt |
pop.server=pop.gmail.com |
pop.use.default.server=true |
pop.use.username.and.password.first.authentication=true |
pop.max.messages=15 |
575,4 → 576,4 |
assessments.correctA.0=anonymous |
assessments.correctA.1=notAnonymous |
assessments.correction.selection.0=question |
assessments.correction.selection.1=assessment |
assessments.correction.selection.1=assessment |
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java |
---|
56,14 → 56,17 |
{ |
valid=true; |
message.addRecipient(email.getType(),new InternetAddress(recipient)); |
logger.info("Adding recipient to transport:"+recipient); |
} |
} |
if(valid) |
{ |
String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + email.getEmailTemplateName()); |
// Format the mail message |
String fullMessage = MessageFormat.format(content, email.getArguments().toArray()); |
logger.info("FROM:" + email.getFrom()); |
message.setFrom(new InternetAddress(email.getFrom())); |
message.setSubject(email.getSubject()); |
message.setText(fullMessage,"utf-8"); |
74,7 → 77,9 |
else |
message.setHeader("Content-Type","text/plain; charset=\"utf-8\""); |
message.setHeader("Content-Transfer-Encoding", "quoted-printable"); |
logger.info("Sending email to transport:"+fullMessage); |
Transport.send(message); |
} |
} |
167,7 → 172,16 |
if(Email.validEmail(u.getOutEmail())) |
recipients.add(u.getOutEmail()); |
} |
logger.info("subject: " + subject); |
logger.info("user: " + user.getEmail()); |
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"); |
return new Email(subject ,recipients,user.getEmail(),template,arguments,Message.RecipientType.BCC); |
} |
/impl/src/java/pt/estgp/estgweb/services/email/ReadEmailService.java |
---|
9,6 → 9,7 |
import pt.estgp.estgweb.services.email.impl.DefaultPopEmail; |
import pt.estgp.estgweb.services.email.impl.DefaultAddress; |
import com.sun.mail.pop3.POP3SSLStore; |
import javax.mail.*; |
import javax.mail.internet.InternetAddress; |
import java.util.List; |
33,10 → 34,44 |
public class ReadEmailService implements IService |
{ |
private static final boolean POP_SECURE = true; //todo mudar isto |
private static final String POP_MAIL_DATE_KEY = "POP_MAIL_DATE_KEY"; |
private static final String POP_MAIL_MESSAGES_KEY = "POP_MAIL_MESSAGES_KEY"; |
private static final Logger logger = Logger.getLogger(ReadEmailService.class); |
private Store getStoreSSL(String username,String password,String host) |
{ |
Session session = null; |
Store store = null; |
Folder folder; |
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; |
Properties pop3Props = new Properties(); |
pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); |
pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false"); |
pop3Props.setProperty("mail.pop3.port", "995"); |
pop3Props.setProperty("mail.pop3.socketFactory.port", "995"); |
URLName url = new URLName("pop3", host, 995, "", |
username, password); |
session = Session.getInstance(pop3Props, null); |
store = new POP3SSLStore(session, url); |
return store; |
} |
private Store getStore(Properties props) throws NoSuchProviderException |
{ |
Session session = Session.getDefaultInstance(props, null); |
Store store = session.getStore("pop3"); |
return store; |
} |
public List<IPopEmail> run(UserSession userSession) |
{ |
if (!((UserImpl) userSession.getUser()).hasPopConfigured()) |
55,7 → 90,7 |
String host = userSession.getUser().getPop3server(); |
String username = userSession.getUser().getPop3username(); |
String password = DesUtils.getInstance().decrypt(userSession.getUser().getPop3password()); |
String password = userSession.getUser().getPop3password(); //DesUtils.getInstance().decrypt(userSession.getUser().getPop3password()); |
String provider = "pop3"; |
if (host == null || username == null || password == null || host.trim().length() == 0 || password.trim().length() == 0 || username.trim().length() == 0) |
{ |
63,9 → 98,18 |
} |
try |
{ |
Session session = Session.getDefaultInstance(props, null); |
Store store = session.getStore(provider); |
store.connect(host, username, password); |
Store store; |
if(POP_SECURE) |
{ |
store = getStoreSSL(username, password, host); |
store.connect(); |
} |
else |
{ |
store = getStore(props); |
store.connect(host, username, password); |
} |
Folder inbox = store.getFolder("INBOX"); |
if (inbox == null) |
{ |
/impl/src/java/pt/estgp/estgweb/web/tags/CanManageTag.java |
---|
70,7 → 70,9 |
IInternal iInternal = (IInternal) owned; |
if(userSession.getUser() == null && iInternal.isInternal()) |
System.out.println("userSession: " + userSession); |
System.out.println("iInternal: " + iInternal); |
if((userSession==null || userSession.getUser() == null) && iInternal.isInternal()) |
{ |
return false; |
} |
78,10 → 80,10 |
{ |
boolean valid = Boolean.parseBoolean(this.valid); |
IValid iValid = (IValid) owned; |
return owned != null && userSession.getUser() != null && (iValid.isValid() == valid && owned.isOwnedBy(userSession.getUser(),false) || (userSession.getUser()).isSuperuserOrAdmin()); |
return owned != null && userSession != null && userSession.getUser() != null && (iValid.isValid() == valid && owned.isOwnedBy(userSession.getUser(),false) || (userSession.getUser()).isSuperuserOrAdmin()); |
} |
else |
return owned != null && userSession.getUser() != null && (owned.isOwnedBy(userSession.getUser(),false) || (userSession.getUser()).isSuperuserOrAdmin()); |
return owned != null && userSession != null && userSession.getUser() != null && (owned.isOwnedBy(userSession.getUser(),false) || (userSession.getUser()).isSuperuserOrAdmin()); |
} |
/impl/src/web/admin/profile/profilePersonalData.jsp |
---|
1,4 → 1,6 |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.web.form.profile.ProfileForm" %> |
<%@ page import="pt.estgp.estgweb.domain.StudentImpl" %> |
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
23,6 → 25,7 |
} |
request.setAttribute("fromAction", fromAction); |
boolean regular = false; |
//separator=${separator} |
%> |
<html:form action="/user/profile${fromAction}?${from}"> |
34,6 → 37,35 |
<baco:isAdmin> |
<tr> |
<th>TIPO DE UTILIZADOR</th> |
<td> |
<% |
pt.estgp.estgweb.web.form.profile.ProfileForm pf = (pt.estgp.estgweb.web.form.profile.ProfileForm) request.getAttribute("ProfileForm"); |
if(pf.getUserView().getUser() instanceof pt.estgp.estgweb.domain.StudentImpl) |
{ |
%> |
CLASSE ESTUDANTE |
<% |
} |
else if(pf.getUserView().getUser() instanceof pt.estgp.estgweb.domain.TeacherImpl) |
{ |
%> |
CLASSE PROFESSOR |
<% |
} |
else |
{ |
regular = true; |
%> |
<label class="warning">CLASSE NORMAL</label> |
<% |
} |
%> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="profile.autoBlockMode"/> |
</th> |
71,12 → 103,14 |
</tr> |
</baco:isAdmin> |
<baco:isNotAdmin> |
<tr> |
<th> |
<bean:message key="profile.siges.code"/> |
</th> |
<td> |
<html:text styleClass="text" property="userView.code" maxlength="250" readonly="true"/> |
</td> |
</tr> |
<tr> |
113,7 → 147,22 |
<bean:message key="profile.siges.code"/> |
</th> |
<td> |
<html:text styleClass="text" property="userView.code" maxlength="250"/> |
<% |
if(regular) |
{ |
%> |
<html:text styleClass="text" property="userView.code" maxlength="250" readonly="true"/> <br/>ESTE UTILIZADOR É NORMAL NAO TEM CODIGO SIGES |
<% |
} |
else |
{ |
%> |
<html:text styleClass="text" property="userView.code" maxlength="250"/> |
<% |
} |
%> |
</td> |
</tr> |
<tr> |
/impl/src/web/admin/announcements/submitMessage.jsp |
---|
24,6 → 24,7 |
%> |
<p class="warning">Atenção caro utilizador. Para este serviço enviar mensagens com sucesso os seus endereços de correio que definidos no seu perfil têm de ser válidos</p> |
<html:form action="/user/submitMessage" enctype="multipart/form-data" onsubmit="this.form.text.value=myEditor.saveHTML()"> |
<input type="hidden" name="dispatch" value="sendMessage" > |
/common/mail/mail.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |