Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 542 → Rev 606

/impl/conf/language/MessageResourcesCourseUnits.properties
90,7 → 90,8
courseunit.menu.put.announcement=Colocar Anúncio
courseunit.menu.assignements=Trabalhos
courseunit.menu.blog=Blog da Unidade
courseunit.menu.presences=Presenças
courseunit.menu.files=Ficheiros
courseunit.menu.presences=Assiduidade
courseunit.menu.contents=Conteúdos
courseunit.menu.grades=Avaliação
 
/impl/conf/WEB-INF/struts/struts-courseunits.xml
47,6 → 47,7
 
<!--<action path="/user/startLoadCourseUnitFromHome" forward="page.load.courseunit.from.home"/>-->
 
<action path="/user/startLoadCourseUnitRootFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadRoot&amp;from=Home"/>
<action path="/user/startLoadCourseUnitContentsFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadContents&amp;from=Home"/>
<action path="/user/startLoadCourseUnitGradesFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadGrades&amp;from=Home"/>
<action path="/user/startLoadCourseUnitPresencesFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadPresences&amp;from=Home"/>
/impl/conf/WEB-INF/web.xml
282,6 → 282,7
<url-pattern>/user/ajaxapis/ServicosImpressao</url-pattern>
</servlet-mapping>
 
 
<!--START FILES-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
/impl/conf/app.properties
397,11 → 397,12
 
 
 
top.image.1.start.with=/
top.image.start.with.1=/
top.image.url.1=/proxy/contactosAlunosPortalMenu/estgp/public/portal/imagens/top.jpg
 
top.image.start.with.2=/student.do?role=student&menu=menu.alunos
top.image.url.2=/proxy/contactosAlunosPortalMenu/estgp/public/portal/imagens/topStudent.jpg
 
top.image.start.with.3=/futureStudent.do?role=futureStudent&menu=menu.futurosAlunos
top.image.url.3=/proxy/contactosAlunosPortalMenu/estgp/public/portal/imagens/topFutureStudent.jpg
 
/impl/conf/directories/futureStudent.xml
1,5 → 1,6
<?xml version="1.0" encoding="UTF-8"?>
<directory label="Futuros Alunos" place="home" layout="layout0" layoutRoot="layoutPortal" targetRole="futureStudent" id="futureStudent" menuKey="menu.futuroAlunos" style="style1.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/directory.xsd">
 
<groupsDeclaration>
<group>1</group>
<group>2</group>
22,7 → 23,7
<leaf absolute="false" url="/public/portal/servicosRegie.html" proxy="estgp" id="servRegie" label="Régie"></leaf>
<leaf absolute="false" url="/public/portal/servicosCentroInformatico.html" proxy="estgp" id="servCentroInformatico" label="Centro Informático"></leaf>
</node>
<node label="Contactos" id="contactos" group="2">
<node label="Contactos" id="contactos" group="2">
<leaf absolute="false" url="/public/portal/contactosGeraisEstg.html" proxy="estgp" id="contGerais" label="Gerais ESTG"></leaf>
<leaf absolute="false" url="/public/portal/contactosDepartamentos.html" proxy="estgp" id="contDep" label="Departamentos"></leaf>
<leaf absolute="false" url="/public/portal/contactosSecretaria.html" proxy="estgp" id="contSecretaria" label="Secretaria"></leaf>
30,21 → 31,23
<leaf absolute="false" url="/public/portal/contactosGabineteComunicacao.html" proxy="estgp" id="contGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
</node>
<node label="Biblioteca" id="biblioteca" group="1">
<leaf absolute="false" url="/public/portal/servicosBiblioteca.html" proxy="estgp" id="servBiblioteca" label="Apresentação"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaInformacaoUtilizador.html" proxy="estgp" id="servBibliotecaInfo" label="Informação"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaMediateca.html" proxy="estgp" id="servBibliotecaMediateca" label="Mediateca"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaclassificacao.html" proxy="estgp" id="servBibliotecaClassificacao" label="Classificação"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaContactos.html" proxy="estgp" id="servBibliotecaBiblioteca" label="Contactos"></leaf>
<leaf absolute="true" url="http://porbase.ipportalegre.pt/pacwebestg" proxy="estgp" id="servBibliotecacatalogo" label="Catálogo Online"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaApresentacao.html" proxy="estgp" id="servBiblioteca" label="Apresentação"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaServicos.html" proxy="estgp" id="servBibliotecaServ" label="Serviços"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaColeccoes.html" proxy="estgp" id="servBibliotecaColeccoes" label="Colecções"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaPublico.html" proxy="estgp" id="servBibliotecaPublico" label="Público"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaCatalogos.html" proxy="estgp" id="servBibliotecaCatalogos" label="Catálogos"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaRegulamento.html" proxy="estgp" id="servBiblioteRegulamento" label="Regulamento"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaContactos.html" proxy="estgp" id="servBibliotecaContactos" label="Contactos e Horários"></leaf>
</node>
<node label="PALV Erasmus" id="PALVErasmus" group="2">
<leaf absolute="false" url="/public/portal/PALVErasmusAlunosEstrangeirosESTG.html" proxy="estgp" id="PALVErasmusAlunosEstrangeiros" label="Os Alunos Estrangeiros na ESTG"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusAlunosESTGEstrangeiro.html" proxy="estgp" id="PALVErasmusEstrangeiroAlunos" label="Os Alunos da ESTG no Estrangeiro"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusObjectivos.html" proxy="estgp" id="PALVErasmusObjectivos" label="Objectivos"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusPaises.html" proxy="estgp" id="PALVErasmusPaises" label="Países Participantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusProgramaErasmus.html" proxy="estgp" id="PALVErasmusProgramaErasmus" label="Programa Serctorial - Erasmus"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusProgramaErasmus.html" proxy="estgp" id="PALVErasmusProgramaErasmus" label="Programa Sectorial - Erasmus"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusActividadesElegiveis.html" proxy="estgp" id="PALVErasmusActividadesElegiveis" label="Actividades Elegiveis"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusMobilidadeEstudantes.html" proxy="estgp" id="PALVErasmusMobilidadeEstudantes" label="Mobilidade Estudantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusParceirosESTG.html" proxy="estgp" id="PALVErasmusParceiros" label="Parceiros"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusFormularioEstudantes.html" proxy="estgp" id="PALVErasmusFomularioEstudantes" label="Formulários Estudantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusContactos.html" proxy="estgp" id="PALVErasmusContactos" label="Contactos"></leaf>
</node>
54,10 → 57,10
<leaf absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoRepresentantes.html" proxy="estgp" id="orgaosConselhoRepresentantes" label="Conselho Representantes"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoInterdisciplinar.html" proxy="estgp" id="orgaosConselhoInterdisciplinar" label="Conselho Interdisciplinar"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoInterdepartamental.html" proxy="estgp" id="orgaosConselhoDepartamental" label="Conselho Departamental"></leaf>
</node>
<node label="Informação Académica" id="infoAcademica" group="2">
<leaf absolute="false" url="/public/portal/informacaoAcademicaCalendarioEscolar.html" proxy="estgp" id="infoAcadCalendarioEscolar" label="Calendário Escolar"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/dir/student/infoAcademica/infoAcadCalendarioEscolar/public/portal/CL20102011.pdf" proxy="estgp" id="infoAcadCalendarioEscolar" label="Calendário Escolar"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=L" proxy="estgp" id="infoAcadLicenciaturas" label="Licenciaturas"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=M" proxy="estgp" id="infoAcadMestrados" label="Mestrados"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=P" proxy="estgp" id="infoAcadPgraduacoes" label="Pós-Graduações"></leaf>
/impl/conf/directories/utilsIntranet.xml
1,20 → 1,21
<?xml version="1.0" encoding="UTF-8"?>
<directory place="intranetUtils" label="Utilitários" layout="layoutIntranetUtils" layoutRoot="layoutIntranetUtils" targetRole="student" id="utilsIntranet" menuKey="intranet.separator.utils" style="styleIntranet.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd">
<leaf absolute="false" label="Home Utilitários" layout="true" proxy="estgp" id="utils" url="/intranet/escola/utils.html"/>
<leaf absolute="false" label="Secretaria" layout="true" proxy="estgp" id="secretaria" url="/intranet/escola/secretaria.html">
<leaf absolute="false" label="Documentos de Apoio" layout="true" proxy="estgp" id="documentosApoio" url="/intranet/escola/secretaria/documentosApoio.html"/>
<leaf absolute="false" label="Formulários [alunos]" layout="true" proxy="estgp" id="Forms.Alunos" url="/intranet/escola/secretaria/formulariosAlunos.html"/>
<leaf absolute="false" label="Legislação" layout="true" proxy="estgp" id="legislacao" url="/intranet/escola/secretaria/legislacao.html"/>
<leaf label="Folhas de Presenças" id="Folhas.Presencas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Folhas.Presencas"/>
<leaf label="Projectos-AA,CA,GE,MKT" id="Projectos.Finais" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Projectos.Finais"/>
<leaf label="Actas" id="Actas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Actas/Arquivo"/>
</leaf>
<leaf absolute="false" label="Horários" layout="true" proxy="estgp" id="horarios" url="/intranet/escola/horarios.html">
<leaf absolute="false" label="Horários de Licenciaturas" layout="true" proxy="estgp" id="horariosLicenciaturas" url="/intranet/escola/horarios_licenciaturas.html"/>
<leaf absolute="false" label="Horários de Mestrados" layout="true" proxy="estgp" id="horariosMestrados" url="/intranet/escola/horarios_mestrados.html"/>
<leaf absolute="false" label="Horários de Docentes" layout="true" proxy="estgp" id="horariosDocentes" url="/intranet/escola/horarios_Docentes.html"/>
<leaf absolute="false" label="Horários de Salas" layout="true" proxy="estgp" id="horariosSalas" url="/intranet/escola/horarios_salas.html"/>
</leaf>
<leaf label="Calendário Escolar" id="calEscolar" absolute="true" url="/informacaoAcademicaAlunosPortalMenu/estgp/public/portal/informacaoAcademicaCalendarioEscolar.html"/>
<leaf absolute="false" label="Calendário de Exames" layout="true" proxy="estgp" id="exames" url="/intranet/escola/Exames.html"/>
<?xml version="1.0" encoding="UTF-8"?>
<directory place="intranetUtils" label="Utilitários" layout="layoutIntranetUtils" layoutRoot="layoutIntranetUtils" targetRole="student" id="utilsIntranet" menuKey="intranet.separator.utils" style="styleIntranet.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd">
<leaf absolute="false" label="Home Utilitários" layout="true" proxy="estgp" id="utils" url="/intranet/escola/utils.html"/>
<leaf absolute="false" label="Secretaria" layout="true" proxy="estgp" id="secretaria" url="/intranet/escola/secretaria.html">
<leaf absolute="false" label="Documentos de Apoio" layout="true" proxy="estgp" id="documentosApoio" url="/intranet/escola/secretaria/documentosApoio.html"/>
<leaf absolute="false" label="Formulários [alunos]" layout="true" proxy="estgp" id="Forms.Alunos" url="/intranet/escola/secretaria/formulariosAlunos.html"/>
<leaf absolute="false" label="Legislação" layout="true" proxy="estgp" id="legislacao" url="/intranet/escola/secretaria/legislacao.html"/>
<leaf label="Folhas de Presenças" id="Folhas.Presencas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Folhas.Presencas"/>
<leaf label="Projectos-AA,CA,GE,MKT" id="Projectos.Finais" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Projectos.Finais"/>
<leaf label="Actas" id="Actas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Actas/Arquivo"/>
</leaf>
<leaf absolute="false" label="Horários" layout="true" proxy="estgp" id="horarios" url="/intranet/escola/horarios.html">
<leaf absolute="false" label="Horários de CET" layout="true" proxy="estgp" id="horariosCet" url="/intranet/escola/horarios_cets.html"/>
<leaf absolute="false" label="Horários de Licenciaturas" layout="true" proxy="estgp" id="horariosLicenciaturas" url="/intranet/escola/horarios_licenciaturas.html"/>
<leaf absolute="false" label="Horários de Mestrados" layout="true" proxy="estgp" id="horariosMestrados" url="/intranet/escola/horarios_mestrados.html"/>
<leaf absolute="false" label="Horários de Docentes" layout="true" proxy="estgp" id="horariosDocentes" url="/intranet/escola/horarios_Docentes.html"/>
<leaf absolute="false" label="Horários de Salas" layout="true" proxy="estgp" id="horariosSalas" url="/intranet/escola/horarios_salas.html"/>
</leaf>
<leaf label="Calendário Escolar" id="calEscolar" absolute="false" url="/public/portal/CL20102011.pdf" layout="false" proxy="estgp"/>
<leaf absolute="false" label="Calendário de Exames" layout="true" proxy="estgp" id="exames" url="/intranet/escola/Exames.html"/>
</directory>
/impl/conf/directories/student.xml
1,70 → 1,72
+
+
+
+ 1
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/impl/conf/directories/teacher.xml
1,66 → 1,72
+
+
+
+
+ 1
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/impl/src/java/pt/estgp/estgweb/Globals.java
80,6 → 80,7
 
public static final boolean USE_TOP_FLASH_NEWS = ConfigProperties.getBooleanProperty("announcements.use.top.flash.news");
 
public static final String INTRANET_ROOT = ""; //e' mesmo assim
public static final String INTRANET_CONTENTS = ConfigProperties.getProperty("intranet.contents.dir");
public static final String INTRANET_GRADES = ConfigProperties.getProperty("intranet.grades.dir");
public static final String INTRANET_PRESENCES = ConfigProperties.getProperty("intranet.presences.dir");
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumaries.java
77,13 → 77,14
AbstractDao.getCurrentSession().beginTransaction();
}
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().load(cId);
logMessages.addMessage(new DefaultLogMessage("import.info","","Importing Summaries to CourseUnit: " + c.getCode() + ": course: " + c.getCourse(), LogMessageTypeEnum.INFO));
logger.info("Importing Summaries to CourseUnit: " + c.getCode() + ": course: " + c.getCourse());
logMessages.addMessage(new DefaultLogMessage("import.info","","Importing Summaries to CourseUnit: " + c.getCode() + ": course: " + c.getCourse().getCode(), LogMessageTypeEnum.INFO));
logger.info("Importing Summaries to CourseUnit: " + c.getName() + " (" + c.getCode() + ") course " + c.getCourse().getName() + " (" + c.getCourse().getCode() + ")");
 
int tries = 3;
ArrayOfAula arrayOfAulas = null;
while(tries > 0)
{
//comentario de teste
try
{
arrayOfAulas = service.getSiGesWEBSoap().getAulas(Globals.SIGES_INSTITUTION_CODE, year,c.getCode(),DatesUtils.getSemestre());
173,6 → 174,7
/**
* Testar por aqui poi requer Super Role e assim e' autmatico
*
*
* @param args of main
* @throws pt.estgp.estgweb.services.expceptions.ServiceException on error
*/
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java
107,7 → 107,7
DaoFactory.getStudentDaoImpl().save(s);
newUser = true;
}
persist(d, s, newUser);
persist(d, s, newUser,year);
//Advising CommonsServicesManager before change password
 
if (newUser)
142,7 → 142,7
* @param d Aluno
* @param student Student
*/
private void persist(Aluno d, Student student, boolean newUser)
private void persist(Aluno d, Student student, boolean newUser, String year)
{
if(newUser)
{
177,13 → 177,17
units.add(courseUnit);
}
Iterator<CourseUnit> iter = units.iterator();
StudentImpl sImpl = (StudentImpl) DaoFactory.getStudentDaoImpl().narrow(student);
while (iter.hasNext())
{
CourseUnit courseUnit = iter.next();
//In case of a comming proxy
StudentImpl sImpl = (StudentImpl) DaoFactory.getStudentDaoImpl().narrow(student);
 
if(sImpl.isLocalRemovedUnit(courseUnit))
{
logger.info("Removendo unidade: " + courseUnit.getCode() + " - do aluno: " + student.getSigesCode() + " - Associacao existe no SIGES mas foi removido LOCALMENTE");
iter.remove();
}
}
 
if(student.getSubscribedUnits() != null)
205,6 → 209,45
}
else
student.setSubscribedUnits(units);
 
//Remover unidades deste ano que nao vem do SIGES e que nao foram adicionadas localmente
Iterator<CourseUnit> iterNowUnits = student.getSubscribedUnits().iterator();
while(iterNowUnits.hasNext())
{
CourseUnit cUNow = iterNowUnits.next();
if(cUNow.getImportYear().equals(year))
//Apenas tentamos apagar as unidades do ano corrente.
//Este servico trabalha com unidades importadas do ano que e passado como argumento
//Se importamos unidades desse ano, as dos outros anos nao vem na lista, logo
//iriamos constatar que nenhuma estava no SIGES o que nao e verdade.
//Assim so apagamos unidades do ano que estamos a importar e que nao venham
//na importacao desse ano
{
 
boolean added = false;
for(CourseUnit c: units)
{
if(cUNow.equals(c))
{
added = true;
break;
}
}
if(!added)
{
 
if(!sImpl.isLocalUnit(cUNow))
{
logger.info("Removendo unidade: " + cUNow.getCode() + " - do aluno: " + student.getSigesCode() + " - Associacao desapareceu do SIGES");
iterNowUnits.remove();
}
else
{
logger.info("NAO REMOVIDA - Unidade: " + cUNow.getCode() + " - do aluno: " + student.getSigesCode() + " - Associacao desapareceu do SIGES mas foi adicionada localmente");
}
}
}
}
}
}
 
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java
121,7 → 121,8
//Email instituicao
if(t.getEmail() == null || t.getEmail().indexOf("@") < 0)
t.setEmail(d.getEmail());
if (d.getEmail() != null && d.getEmail().endsWith(Globals.EMAIL_LOCAL_SUFFIX))
if (d.getEmail() != null && (t.getUsername() == null || t.getUsername().trim().length() == 0) && d.getEmail().endsWith(Globals.EMAIL_LOCAL_SUFFIX))
{
int atIndex = d.getEmail().indexOf("@");
if (atIndex > 0)
/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpService.java
47,8 → 47,8
{
 
boolean isStaticAccess = ConfigProperties.getBooleanProperty(ftpRequestForm.getServerConfName()+".use.default.credentials.to.updates.and.deletes");
String password;
String username;
String password = ftpRequestForm.getPassword();
String username = ftpRequestForm.getUsername();
//This only works for Contents of CourseUnits, if user uses SavePassword than the password saved will be used
if(!ftpRequestForm.isSavePassword() && isStaticAccess)
{
74,16 → 74,25
}
String passwordCode = (String) ((UserSessionImpl)userSession).get(FTP_PASSWORD);
 
if(passwordCode != null)
if(password != null && password.trim().length() > 0)
{
 
}
else if(passwordCode != null)
{
logger.info("using saved password");
password = DesUtils.getInstance().decrypt(passwordCode);
}
else
else if(userSession.getUser().getPop3password() != null && userSession.getUser().getPop3password().length() > 0)
{
logger.info("trying pop 3 password");
password = DesUtils.getInstance().decrypt(userSession.getUser().getPop3password());
}
else
{
logger.info("trying last used login password");
password = DesUtils.getInstance().decrypt(userSession.getUser().getPassword());
}
username = ftpRequestForm.getUsername();
if(username == null || username.trim().length() == 0)
username = userSession.getUsername();
/impl/src/java/pt/estgp/estgweb/domain/StudentImpl.java
217,15 → 217,26
public void removeUnitLocaly(CourseUnit unit)
{
setLocalRemovedSubscribedUnits(StringsUtils.addElement(getLocalRemovedSubscribedUnits(),"" + unit.getId(),","));
setLocalSubscribedUnits(StringsUtils.removeElement(getLocalSubscribedUnits(),"" + unit.getId(),","));
}
 
public void addUnitLocaly(CourseUnit unit)
{
setLocalRemovedSubscribedUnits(StringsUtils.removeElement(getLocalRemovedSubscribedUnits(),"" + unit.getId(),","));
setLocalSubscribedUnits(StringsUtils.removeElement(getLocalSubscribedUnits(),"" + unit.getId(),","));
setLocalSubscribedUnits(StringsUtils.addElement(getLocalSubscribedUnits(),"" + unit.getId(),","));
}
 
public boolean isLocalRemovedUnit(CourseUnit unit)
{
return StringsUtils.hasElement(getLocalRemovedSubscribedUnits(),"" + unit.getId(),",");
}
 
 
public boolean isLocalUnit(CourseUnit unit)
{
return StringsUtils.hasElement(getLocalSubscribedUnits(),""+unit.getId(),",");
}
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitAssignementImpl.java
1,5 → 1,7
package pt.estgp.estgweb.domain;
 
import pt.estgp.estgweb.web.utils.DatesUtils;
 
import java.io.Serializable;
 
/**
13,4 → 15,9
{
return getId();
}
 
public String getFormatedSaveDate()
{
return DatesUtils.getStringFromDate(getSaveDate());
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/UserView.java
405,7 → 405,13
 
public String getSafeEmail()
{
String email = username + "@" + Globals.EMAIL_LOCAL_SUFFIX;
 
String email;
if(pop3username != null && pop3username.trim().length() > 0)
email = pop3username + "@" + Globals.EMAIL_LOCAL_SUFFIX;
else
email = username + "@" + Globals.EMAIL_LOCAL_SUFFIX;
 
if(email != null)
{
String safe = email.replace("@", " [ AT ] ").replace("."," [ DOT ] ");
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitAssignementView.java
36,6 → 36,7
private List<CourseUnitDeliverableView> deliverables;
private CourseUnitView courseUnitView;
private RepositoryFileImpl repositoryFile;
private String formatedSaveDate;
 
private CourseUnitAssignement courseUnitAssignement;
 
58,6 → 59,7
public CourseUnitAssignementView(CourseUnitAssignement courseUnitAssignement, long delivers)
{
super(courseUnitAssignement);
this.formatedSaveDate = ((CourseUnitAssignementImpl)courseUnitAssignement).getFormatedSaveDate();
this.courseUnitAssignement = courseUnitAssignement;
this.courseUnitId = courseUnitAssignement.getCourseUnit().getId();
this.id = courseUnitAssignement.getId();
87,6 → 89,11
return repositoryFile;
}
 
public String getFormatedSaveDate()
{
return formatedSaveDate;
}
 
public void setRepositoryFile(RepositoryFileImpl repositoryFile)
{
this.repositoryFile = repositoryFile;
/impl/src/java/pt/estgp/estgweb/filters/filters/Session.java
54,6 → 54,7
if(userSession != null && new Date().getTime() - userSession.getSaveDate().getTime() < TIMEOUT_SESSION)
{
putSessionInArgs(userSession,request);
userSession.setSaveDate(new Date()); //todo NOVO refrescar a sessao
return;
}
}
75,6 → 76,7
userSession.reset();
}
userSession.setSaveDate(new Date());
userSession.setUpdateDate(new Date());
DaoFactory.getUserSessionDaoImpl().saveOrUpdate(userSession);
putSessionInArgs(userSession,request);
}
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsController.java
692,7 → 692,9
 
ActionForward forward = new ActionForward();
forward.setName("intranetCourseUnit");
forward.setPath("/courseunitproxy/" + layout + "/ionline" + "/" + path + "/?courseUnitView.id="+ cV.getId() + "&startPath=" + cV.getPathIntranet() + "&from=" + request.getParameter("from"));
if(path.length() > 0)
path = "/" + path;
forward.setPath("/courseunitproxy/" + layout + "/ionline" + path + "/?courseUnitView.id="+ cV.getId() + "&startPath=" + cV.getPathIntranet() + "&from=" + request.getParameter("from"));
forward.setRedirect(true);
return forward;
}
715,6 → 717,17
{
return loadCourseUnitIntranet(Globals.INTRANET_CONTENTS,"courseLayoutIOnlineContents",mapping,form,request,response);
}
 
public ActionForward loadRoot(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
return loadCourseUnitIntranet(Globals.INTRANET_ROOT,"courseLayoutIOnlineContents",mapping,form,request,response);
}
 
public ActionForward loadGrades(
ActionMapping mapping,
ActionForm form,
/impl/src/updates/db/update9.sql
New file
0,0 → 1,0
ALTER TABLE user ADD COLUMN localSubscribedUnits TEXT AFTER localRemovedSubscribedUnits;
/impl/src/hbm/pt/estgp/estgweb/domain/GenericUser.hbm.xml
86,6 → 86,7
<meta attribute="extends">pt.estgp.estgweb.domain.SigesUserImpl</meta>
<meta attribute="scope-class">public abstract</meta>
<property name="localRemovedSubscribedUnits" type="string"/>
<property name="localSubscribedUnits" type="string"/>
<set name="subscribedUnits" lazy="true" order-by="courseUnitId" table="subscribedunits">
<key column="studentId"/>
<many-to-many class="pt.estgp.estgweb.domain.CourseUnit" column="courseUnitId"/>
/impl/src/hbm/pt/estgp/estgweb/domain/UserSession.hbm.xml
11,7 → 11,7
<generator class="assigned"/>
</id>
<discriminator column="discrimitator"/>
<timestamp name="updateDate" unsaved-value="null"/>
<property name="updateDate" type="timestamp"/>
<property name="saveDate" type="timestamp"/>
<property name="ipAddress" type="string"/>
<property name="language" type="string"/>
/impl/src/web/css/style.css
831,7 → 831,7
 
.portalLeftAnnouncements img {
height: 133px;
width: 177px;
width: 133px;
}
 
/*PASSA PARA AQUI TUDO O QUE SEJA DE BLOCOS E VAMOS LIMPAR TUDO */
/impl/src/web/layout/layoutWelcome.jsp
53,17 → 53,43
</td>
</tr>
<tr>
<%
boolean flash = false;
try
{
java.net.URL url = new java.net.URL("http://baco.estgp.pt:9090/static/public/portal/imagens/HOME.swf");
java.io.InputStream s = url.openStream();
s.close();
flash=true;
}catch(Throwable e)
{
}
%>
<td width="90%">
<div align="center">
<%
if(flash)
{
%>
<OBJECT WIDTH="928" height="175" style="background-color:orange;" HEIGHT="240">
<PARAM NAME="MOVIE" VALUE="<%=request.getContextPath()%>/imgs/FLA_HOME4.swf">
<PARAM NAME="PLAY" VALUE="true">
<PARAM NAME="LOOP" VALUE="true">
<PARAM NAME="WMODE" VALUE="transparent">
<PARAM NAME="QUALITY" VALUE="high">
<EMBED SRC="<%=request.getContextPath()%>/imgs/FLA_HOME4.swf" WIDTH="928" height="175" PLAY="true" LOOP="true" WMODE="transparent" QUALITY="high">
<EMBED SRC="http://baco.estgp.pt:9090/static/public/portal/imagens/HOME.swf" WIDTH="928" height="175" PLAY="true" LOOP="true" WMODE="transparent" QUALITY="high">
</EMBED>
</OBJECT>
<%
}
else
{
%>
<img src="http://baco.estgp.pt:9090/static/public/portal/imagens/HOME.jpg"/>
<%
}
%>
</div>
<%
 
126,4 → 152,3
</center>
</body>
</html:html>
 
/impl/src/web/layout/footer.jsp
5,6 → 5,7
<%@ 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" %>
 
<div id="footerStructure">
<table>
29,6 → 30,25
</table>
</div>
 
 
 
<!--TUDO.estgp.pt Trafego-->
<script type="text/javascript">
 
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-19734148-6']);
_gaq.push(['_trackPageview']);
 
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
 
</script>
 
 
<baco:isNotAuthenticated>
<!--ESTGP-->
<script type="text/javascript">
 
41,9 → 61,11
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
 
</script>
</baco:isNotAuthenticated>
 
 
<baco:isAuthenticated>
<!--BACO-->
<script type="text/javascript">
 
57,4 → 79,62
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
 
</script>
</script>
</baco:isAuthenticated>
 
<baco:isAuthenticated>
<baco:hasRole role="student">
<script type="text/javascript">
 
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-19734148-3']);
_gaq.push(['_trackPageview']);
 
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
 
</script>
</baco:hasRole>
</baco:isAuthenticated>
 
 
<baco:isAuthenticated>
<baco:hasRole role="teacher">
<script type="text/javascript">
 
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-19734148-4']);
_gaq.push(['_trackPageview']);
 
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
 
</script>
</baco:hasRole>
</baco:isAuthenticated>
 
<baco:isAuthenticated>
<baco:hasNotRole role="teacher">
<baco:hasNotRole role="student">
<script type="text/javascript">
 
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-19734148-5']);
_gaq.push(['_trackPageview']);
 
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
 
</script>
</baco:hasNotRole>
</baco:hasNotRole>
</baco:isAuthenticated>
/impl/src/web/layout/webmailRedirect.jsp
New file
0,0 → 1,32
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>WebMail</title>
<meta http-equiv="refresh" content="0;url=http://mail.estgp.pt/exchange/">
<jsp:include page="/layout/scripts.jsp"/>
</head>
<body class="small" marginwidth="0" marginheight="0" bgcolor="#ffffff" topmargin="0" leftmargin="0" onload="horizontal();">
<table width="100%">
<tr>
<td align="center">
<div id="body">
<div id="header">
<jsp:include page="/layout/header.jsp"/>
</div>
<table id="pageStructure">
 
<tr>
<td>
Se não for redireccionado para o WebMail clique <a href="http://mail.estgp.pt/exchange/">aqui</a>
</td>
</tr>
</table>
<div id="footer">
<jsp:include page="/layout/footer.jsp"/>
</div>
</div>
</td>
</tr>
</table>
</body>
</html>
/impl/src/web/layout/navigationTop.jsp
19,7 → 19,7
<td>
<ul id="menu_dropdown" class="menubar">
<li class="submenu"><a href="#">Apresentação</a>
<div class="shadow "> http://baco.estgp.pt/dir/student/OrgaosGestao/orgaosDirector/public/portal/orgaoDirector.html
<div class="shadow ">
<ul class="menu">
<li><a href="<%=request.getContextPath()%>/dir/futureStudent/ESTG/estgDirector/public/portal/estgMensagemDirector.html"><bean:message key="portal.estg.mensagem.presidente"/></a></li>
<li><a href="<%=request.getContextPath()%>/dir/futureStudent/ESTG/estgMissao/public/portal/estgMissao.html">A ESTG e a sua missão</a></li>
43,11 → 43,11
</ul>
</div>
</li>
<li class="submenu"><a href="<%=request.getContextPath() + Globals.getStartPublicLink("departamentos") + "/departamentos/departamentos.html"%>"><bean:message key="departamentos"/> </a>
<li class="submenu"><a href="#"><bean:message key="departamentos"/> </a>
<div class="shadow ">
<ul class="menu">
<li><a href="<%=request.getContextPath() + Globals.getStartPublicLink("depTD") + "/departamentos/depTD.html"%>"><bean:message key="top.menu.area.td"/> </a></li>
<li><a href="<%=request.getContextPath() + Globals.getStartPublicLink("depCESH") + "/departamentos/depCESH.html"%>"><bean:message key="top.menu.area.cesh"/> </a></li>
<li><a href="<%=request.getContextPath()%>/dir/student/departamentos/depTD/public/departamentos/depTD.html"><bean:message key="top.menu.area.td"/> </a></li>
<li><a href="<%=request.getContextPath()%>/dir/student/departamentos/depTD/public/departamentos/depCESH.html"><bean:message key="top.menu.area.cesh"/> </a></li>
</ul>
</div>
</li>
69,13 → 69,15
 
<div class="shadow ">
<ul class="menu">
<li><a href="http://www.ipportalegre.pt/poliempreende/">Polienpreende</a></li>
<li><a href="http://www.ipportalegre.pt/poliempreende/">Poliempreende</a></li>
<!-- <li><a href="#">SGQ</a></li>
--> </ul>
</div>
</li>
 
<li class="submenu"><a href="<%=request.getContextPath()%>/proxy/layoutWelcome/estgp/public/portal/contactosContactosGeraisEstg.html">Contactos</a></li>
<li class="submenu">
<a href="<%=request.getContextPath()%>/dir/student/contactos/contGerais/public/portal/contactosGeraisEstg.html">Contactos</a>
</li>
 
<li class="submenu"><a href="#">O Politécnico</a>
<div class="shadow ">
/impl/src/web/layout/navigationLeftAdmin.jsp
10,20 → 10,20
<div class="listClean">
<ul>
 
<li>
<html:link action="/Welcome">
<bean:message key="Home"/>
</html:link>
</li>
<baco:isNotAuthenticated>
 
<baco:isNotAuthenticated>
<li>
<html:link action="/Welcome">
<bean:message key="Home"/>
</html:link>
</li>
<li>
<html:link action="/StartAuthentication">
<bean:message key="authenticate"/>
</html:link>
</li>
<li>
<a href="http://mail.estgp.pt/exchange/">
<a href="<%=request.getContextPath()%>/layout/webmailRedirect.jsp">
Webmail
</a>
</li>
/impl/src/web/public/announcements/loadAnnouncement.jsp
56,7 → 56,8
</baco:canManage>
</h2>
<logic:notEmpty name="Announcement" property="url">
<p>URL: <html:link page="${Announcement.url}"><script type="text/javascript">document.write((""+document.location).substr(0,(""+document.location).lastIndexOf("/")));</script>${Announcement.url}</html:link></p>
<p>URL: <html:link page="${Announcement.url}">${Announcement.url}</html:link></p>
<%--<script type="text/javascript">document.write((""+document.location).substr(0,(""+document.location).lastIndexOf("/")));</script>--%>
</logic:notEmpty>
<%
AnnouncementStyleEnum styleEnum = Announcement.getStyleEnum();
311,11 → 312,11
</td>
</tr>
<logic:notEmpty name="Announcement" property="url">
<tr>
<td colspan="2">
URL: <html:link page="${Announcement.url}"><script type="text/javascript">document.write((""+document.location).substr(0,(""+document.location).lastIndexOf("/")));</script>${Announcement.url}</html:link>
</td>
</tr>
<%--<tr>--%>
<%--<td colspan="2">--%>
<%--URL: <html:link page="${Announcement.url}"><script type="text/javascript">document.write((""+document.location).substr(0,(""+document.location).lastIndexOf("/")));</script>${Announcement.url}</html:link>--%>
<%--</td>--%>
<%--</tr>--%>
</logic:notEmpty>
<tr>
<td colspan="2" class="pFooter">
/impl/src/web/user/courseunits/courseunitworks.jsp
124,6 → 124,7
<logic:notEmpty name="CourseUnitView" property="courseUnitAssignements">
<table class="dataTable">
<tr>
<th><bean:message key="saveDate"/></th>
<th><bean:message key="courseunit.title"/></th>
<th><bean:message key="courseunit.assignement.file"/></th>
<th><bean:message key="courseunit.assignement.deliver.date"/></th>
149,6 → 150,9
</tr>
<logic:iterate id="work" name="CourseUnitView" property="courseUnitAssignements" type="pt.estgp.estgweb.domain.views.CourseUnitAssignementView">
<tr>
<td align="right">
<a >${work.formatedSaveDate}</a>
</td>
<td>
<a href="javascript:showOrHideOne('assignement${work.id}')">${work.title}</a>
</td>
/impl/src/web/user/courseunits/menu.jsp
97,21 → 97,20
{
%>
<li>
<html:link action="/user/startLoadCourseUnitContentsFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.contents"/></html:link>
<img alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"><html:link action="/user/startLoadCourseUnitRootFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.files"/></html:link>
</li>
<li>
<html:link action="/user/startLoadCourseUnitPresencesFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.presences"/></html:link>
&nbsp;&nbsp; <img alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"> <html:link action="/user/startLoadCourseUnitContentsFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.contents"/></html:link>
</li>
<li>
<html:link action="/user/startLoadCourseUnitGradesFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.grades"/></html:link>
&nbsp;&nbsp; <img alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"> <html:link action="/user/startLoadCourseUnitPresencesFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.presences"/></html:link>
</li>
<li>
&nbsp;&nbsp; <img alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"> <html:link action="/user/startLoadCourseUnitGradesFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.grades"/></html:link>
</li>
<%
}
%>
 
 
 
 
</ul>
</div>
</div>
/impl/src/web/user/home/student.jsp
36,7 → 36,24
<ul>
<logic:iterate id="unit" name="UserSession" property="user.subscribedUnitsCurrentYearViewS1" type="pt.estgp.estgweb.domain.CourseUnit">
<li>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.importYear})</html:link>
<%
String courseCode = "";
if(unit.getCourse() != null)
{
String courseName = unit.getCourse().getName();
String[] words = courseName.split(" ");
for(String word: words)
{
if(word != null && word.length() > 3 && word.charAt(0) >= 'A' && word.charAt(0) <= 'Z' )
{
courseCode += word.charAt(0);
}
}
}
%>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (<%=courseCode%><%//${unit.courseName} (${unit.courseCode})%>) </html:link>
<html:link action="/user/startLoadCourseUnitRootFromHome?courseUnitView.id=${unit.id}"> <img border="0" alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"></html:link>
</li>
</logic:iterate>
</ul>
55,7 → 72,24
<ul>
<logic:iterate id="unit" name="UserSession" property="user.subscribedUnitsCurrentYearViewS2" type="pt.estgp.estgweb.domain.CourseUnit">
<li>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.importYear})</html:link>
<%
String courseCode = "";
if(unit.getCourse() != null)
{
String courseName = unit.getCourse().getName();
String[] words = courseName.split(" ");
for(String word: words)
{
if(word != null && word.length() > 3 && word.charAt(0) >= 'A' && word.charAt(0) <= 'Z' )
{
courseCode += word.charAt(0);
}
}
}
 
%>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (<%=courseCode%><%//${unit.courseName} (${unit.courseCode})%>) </html:link>
<html:link action="/user/startLoadCourseUnitRootFromHome?courseUnitView.id=${unit.id}"><img border="0" alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"></html:link>
</li>
</logic:iterate>
</ul>
/impl/src/web/user/home/teacher.jsp
35,7 → 35,24
<ul>
<logic:iterate id="unit" name="UserSession" property="user.teachedUnitsCurrentYearViewS1" type="pt.estgp.estgweb.domain.CourseUnit">
<li>
<%
String courseCode = "";
if(unit.getCourse() != null)
{
String courseName = unit.getCourse().getName();
String[] words = courseName.split(" ");
for(String word: words)
{
if(word != null && word.length() > 3 && word.charAt(0) >= 'A' && word.charAt(0) <= 'Z' )
{
courseCode += word.charAt(0);
}
}
}
 
%>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.courseName} (${unit.courseCode}))</html:link>
<html:link action="/user/startLoadCourseUnitRootFromHome?courseUnitView.id=${unit.id}"><img border="0" alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"></html:link>
</li>
</logic:iterate>
</ul>
54,7 → 71,24
<ul>
<logic:iterate id="unit" name="UserSession" property="user.teachedUnitsCurrentYearViewS2" type="pt.estgp.estgweb.domain.CourseUnit">
<li>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name}</html:link>
<%
String courseCode = "";
if(unit.getCourse() != null)
{
String courseName = unit.getCourse().getName();
String[] words = courseName.split(" ");
for(String word: words)
{
if(word != null && word.length() > 3 && word.charAt(0) >= 'A' && word.charAt(0) <= 'Z' )
{
courseCode += word.charAt(0);
}
}
}
 
%>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.courseName} (${unit.courseCode}))</html:link>
<html:link action="/user/startLoadCourseUnitRootFromHome?courseUnitView.id=${unit.id}"><img border="0" alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"></html:link>
</li>
</logic:iterate>
</ul>
/impl/src/web/user/contacts/listTeachers.jsp
1,10 → 1,10
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ 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/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<%
88,7 → 88,7
${userView.ext}
</td>
<td>
${userView.username}@<%=Globals.EMAIL_LOCAL_SUFFIX%>
${userView.safeEmail}
</td>
</tr>
</logic:iterate>