Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 863 → Rev 896

/impl/conf/language/MessageResourcesCourse.properties
39,6 → 39,7
course.C=Acções de Formação de Curta Duração
course.A=Formações Avançadas
course.O=Outras Formações
course.T=TeSP
 
course.Bs=Bacharelatos
course.Ls=Licenciaturas
/impl/conf/language/MessageResources.properties
158,6 → 158,7
fail.owner=Lamentamos o incómodo, mas não tem permissões sobre o objecto ao qual tentou aceder.
fail.timer=Lamentamos o incomodo, mas a acção que tentou efectuar não pode ser executada nesta data.
fail.authenticate=O nome de utilizador ou a palavra passe estão errados. Por favor tente de novo.
dontexist.authenticate=O utilizador já existe na rede interna mas ainda não está disponivel no sistema BACO, por favor dirija-se ao Centro Informático.
 
#palavras comuns
courseunit=Unidade Curricular
360,6 → 361,7
edit=Editar
delete=Apagar
confirm=Confirmar
save=Salvar
add=Adicionar
put=Colocar
remove=Remover
/impl/conf/language/MessageResourcesCourseUnits.properties
168,7 → 168,14
courseunit.program.cargaHorariaOT=OT
 
 
courseunit.evaluation=Ficha de Avalia\u00e7\u00e3o da Unidade Curricular
courseunit.evaluation.mapa1=Mapa 1
courseunit.evaluation.mapa1.desc=Dados relativos ao processo de avalia\u00e7\u00e3o
courseunit.menu.evaluation=Relat\u00f3rio de Avalia\u00e7\u00e3o
courseunit.evaluation.success=Ficha de Avalia\u00e7\u00e3o alterada com sucesso
 
 
 
courseunit.consultaroutros=Consultar outros programas
courseunit.confirmaclonagem=Tem a certeza que deseja clonar o programa do ano na caixa de selecção para este programa actualmente aberto para edição? Vai gerar uma nova versão de programa e a anterior será arquivada em PDF.
 
/impl/conf/WEB-INF/struts/struts-courseunits.xml
9,6 → 9,7
<form-beans>
<form-bean type="pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm" name="CourseUnitsForm"/>
<form-bean type="pt.estgp.estgweb.web.form.courseunits.CourseUnitProgramForm" name="CourseUnitProgramForm"/>
<form-bean type="pt.estgp.estgweb.web.form.courseunits.CourseUnitEvaluationForm" name="CourseUnitEvaluationForm"/>
</form-beans>
 
<global-exceptions>
31,6 → 32,10
<action path="/startLoadCourseUnit" forward="/courseUnitController.do?dispatch=load"/>
<action path="/startLoadTeacherCourseUnit" forward="/courseUnitController.do?dispatch=loadTeacher"/>
<action path="/startLoadStudentCourseUnit" forward="/courseUnitController.do?dispatch=loadStudent"/>
 
<action path="/startLoadCourseUnitSiges" forward="/courseUnitController.do?dispatch=loadCourseUnitWebSiteBySigesCodes"/>
<action path="/startLoadCourseUnitProgramSiges" forward="/courseUnitController.do?dispatch=loadCourseUnitProgramBySigesCodes"/>
 
<action path="/courseUnitController"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController"
name="CourseUnitsForm"
58,6 → 63,20
<forward name="edit.program" path="page.edit.courseunit.program"/>
</action>
 
 
<action path="/user/startLoadCourseUnitEvaluation" forward="/user/courseUnitEvaluationController.do?dispatch=editEvaluation"/>
 
<action path="/user/courseUnitEvaluationController"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsEvaluationController"
name="CourseUnitEvaluationForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.welcome">
<forward name="load" path="page.load.courseunit"/>
<forward name="edit.evaluation" path="page.edit.courseunit.evaluation"/>
</action>
 
<!--<action path="/user/startLoadCourseUnitFromHome" forward="page.load.courseunit.from.home"/>-->
 
<action path="/user/startLoadCourseUnitRootFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadRoot&amp;from=Home"/>
74,6 → 93,10
<action path="/user/startLoadCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=load&amp;from=Home"/>
<action path="/user/startLoadTeacherCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadTeacher&amp;from=Home"/>
<action path="/user/startLoadStudentCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadStudent&amp;from=Home"/>
 
<action path="/user/startLoadCourseUnitSigesFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadCourseUnitWebSiteBySigesCodes&amp;from=Home"/>
 
 
<action path="/user/courseUnitControllerFromHome"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController"
name="CourseUnitsForm"
/impl/conf/WEB-INF/struts/tiles-courseunits.xml
20,6 → 20,14
<put name="body" value="/user/courseunits/courseunitworks.jsp"/>
</definition>
 
 
<definition name="page.edit.courseunit.evaluation" extends="page.separators.home">
<put name="title" value="Ficha de Avaliação da Unidade Curricular"/>
<put name="topnav" value="/user/courseunits/topnavEvaluation.jsp"/>
<put name="navigation" value="/user/courseunits/menu.jsp"/>
<put name="body" value="/user/courseunits/courseunitEvaluation.jsp"/>
</definition>
 
<definition name="page.edit.courseunit.program" extends="base.layout1">
<put name="title" value="Ficha da Unidade Curricular"/>
<put name="topnav" value="/public/courseunits/topnavCourseUnitProgram.jsp"/>
/impl/conf/app.properties
83,6 → 83,7
module.assessments=true
 
module.processes=true
module.courseunitevaluation=true
##################################################
# SMS
#
106,6 → 107,12
ionline.user=Baco_web
ionline.use.default.credentials.to.updates.and.deletes=false
 
server.grupos=ftp://ftppublic:ftppublic@w2.estgp.pt
server.grupos.start.path=/grupos
grupos.pass=ftppublic
grupos.user=ftppublic
 
 
server.estgp.start.path=
server.estgp=http://localhost:9090/static
estgp.encoding=UTF-8
233,6 → 240,7
announcements.text.summary.size=500
announcements.text.summary.size.small=100
announcements.max.visible=10
announcements.max.news.visible=15
announcements.top.flash.news.timeout.miliseconds=7000
 
announcements.type.0=news
/impl/conf/template/email/unidadeValidada_pt.txt
4,7 → 4,7
O BACO informa-o de que a ficha curricular da unidade de {0}
foi aprovada pela comissão de curso
 
Com os melhores cumprimentos
Cumprimentos
---------------------------------------------
Escola Superior de Tecnologia e Gestão
Instituto Politécnico de Portalegre
/impl/conf/template/email/courseUnitWork_pt.txt
15,7 → 15,8
 
{2}
 
Com os melhores cumprimentos {3}
Cumprimentos
{3}
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/courseUnitWorkChange_pt.txt
19,7 → 19,8
 
{2}
 
Com os melhores cumprimentos {3}
Cumprimentos
{3}
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/courseUnitBlogPost_pt.txt
14,7 → 14,8
 
{2}
 
Com os melhores cumprimentos {3}
Cumprimentos
{3}
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/courseUnitAnnouncement_pt.txt
15,7 → 15,8
 
{2}
 
Com os melhores cumprimentos {3}
Cumprimentos
{3}
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/unidadeEdicao_pt.txt
4,7 → 4,7
O BACO informa-o de que a ficha curricular da unidade de {0}
se encontra disponivel para edição
 
Com os melhores cumprimentos
Cumprimentos
---------------------------------------------
Escola Superior de Tecnologia e Gestão
Instituto Politécnico de Portalegre
/impl/conf/template/email/sendPageFriend_pt.txt
5,7 → 5,7
 
{1}
 
Com os Melhores cumprimentos
Cumprimentos
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/newGrades_pt.txt
5,7 → 5,7
 
{1}
 
Com os melhores cumprimentos
Cumprimentos
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/message_pt.txt
13,7 → 13,7
 
{2}
 
<p>Com os melhores cumprimentos {3}</p>
<p>Cumprimentos, {3}</p>
 
---------------------------------------------
<p>Escola Superior de Tecnologia e Gestão</p>
/impl/conf/template/email/unidadeEditada_pt.txt
4,7 → 4,7
O BACO informa-o de que a ficha curricular da unidade de {1}
foi editada
 
Com os melhores cumprimentos
Cumprimentos
---------------------------------------------
Escola Superior de Tecnologia e Gestão
Instituto Politécnico de Portalegre
/impl/conf/template/email/summary_pt.txt
9,7 → 9,7
 
{4}
 
Com os melhores cumprimentos
Cumprimentos
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/directories/futureStudent.xml
53,10 → 53,16
</node>
<node label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<leaf absolute="false" url="/public/portal/orgaoDirector.html" proxy="estgp" id="orgaosDirector" label="Director"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<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/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<leaf absolute="false" url="/Conselho.Tecnico.Cientifico.Externo" proxy="grupos" id="pastaConselhoTecnicoCientificoExterna" label=" -----> Documentação CTC" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf absolute="false" url="/Conselho.Pedagogico.Externo" proxy="grupos" id="pastaConselhoPegagogicoExterna" label=" -----> Documentação CP" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoRepresentantes.html" proxy="estgp" id="orgaosConselhoRepresentantes" label="Conselho Representantes"></leaf>
<leaf absolute="false" url="/Conselho.Representantes.Externo" proxy="grupos" id="pastaConselhoRepresentantesExterna" label=" -----> Documentação CR" remoteExtensionRoot="true" style="true" layout="true" />
 
 
<leaf absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></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">
/impl/conf/directories/student.xml
1,4 → 1,4
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<directory label="Alunos" place="home" layout="layout0" layoutRoot="layoutPortal" targetRole="student" id="student" menuKey="menu.alunos" 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>
20,7 → 20,7
<leaf absolute="false" url="/public/portal/contactosCentroInformatico.html" proxy="estgp" id="contCentroInformatico" label="Centro Informático"></leaf>
<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">
<node label="Biblioteca" id="biblioteca" group="1">
<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="Coleções"></leaf>
43,10 → 43,15
</node>
<node label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<leaf absolute="false" url="/public/portal/orgaoDirector.html" proxy="estgp" id="orgaosDirector" label="Diretor"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<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/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<leaf absolute="false" url="/Conselho.Tecnico.Cientifico.Externo" proxy="grupos" id="pastaConselhoTecnicoCientificoExterna" label=" -----> Documentação CTC" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf absolute="false" url="/Conselho.Pedagogico.Externo" proxy="grupos" id="pastaConselhoPegagogicoExterna" label=" -----> Documentação CP" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoRepresentantes.html" proxy="estgp" id="orgaosConselhoRepresentantes" label="Conselho Representantes"></leaf>
<leaf absolute="false" url="/Conselho.Representantes.Externo" proxy="grupos" id="pastaConselhoRepresentantesExterna" label=" -----> Documentação CR" remoteExtensionRoot="true" style="true" layout="true" />
 
<leaf absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoInterdepartamental.html" proxy="estgp" id="orgaosConselhoDepartamental" label="Conselho Interdepartamental"></leaf>
</node>
/impl/conf/directories/teacher.xml
42,12 → 42,15
<leaf absolute="false" url="/public/portal/PALVErasmusFormularioDocentes.html" proxy="estgp" id="PALVErasmusFomularioDocentes" label="Formulários Docentes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusContactos.html" proxy="estgp" id="PALVErasmusContactos" label="Contactos"></leaf>
</node>
><node label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<node label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<leaf absolute="false" url="/public/portal/orgaoDirector.html" proxy="estgp" id="orgaosDirector" label="Director"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf absolute="false" url="/Conselho.Tecnico.Cientifico.Externo" proxy="grupos" id="pastaConselhoTecnicoCientificoExterna" label=" -----> Documentação CTC" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf absolute="false" url="/Conselho.Pedagogico.Externo" proxy="grupos" id="pastaConselhoPegagogicoExterna" label=" -----> Documentação CP" remoteExtensionRoot="true" style="true" layout="true" />
<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="/Conselho.Representantes.Externo" proxy="grupos" id="pastaConselhoRepresentantesExterna" label=" -----> Documentação CR" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoInterdepartamental.html" proxy="estgp" id="orgaosConselhoInterdepartamental" label="Conselho Interdepartamental"></leaf>
</node>
<node label="Informação Académica" id="infoAcademica" group="2">
/impl/conf/berserk/sd.xml
810,6 → 810,17
</service>
 
<service>
<name>SaveCourseUnitEvaluation</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.SaveCourseUnitEvaluation</implementationClass>
<description>Save course unit evaluation</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
<service>
<name>LoadCourseUnitsBySigesCodes</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService</implementationClass>
<description>Load course old units</description>
819,7 → 830,20
<chain name="Session"/>
</filterChains>
</service>
 
<service>
<name>LoadCourseUnitsBySigesCodesSemestreLastYear</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService</implementationClass>
<description>Load a unique unit by sigescode, semestre and course code</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadLastYear</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
<service>
<name>LoadCourseUnitWorks</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitWorkService</implementationClass>
<description>Load course unit works</description>
/impl/conf/hibernate.cfg.xml
22,7 → 22,7
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.max_size">30</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.idle_test_period">150</property>
<property name="hibernate.c3p0.idle_test_period">150</property>
<property name="hibernate.max_statements">50</property>
 
 
/impl/src/java/pt/estgp/estgweb/utils/Email.java
32,6 → 32,7
private String from;
private String emailTemplateName;
private List<String> arguments;
private String fromName = null;
 
 
public boolean isHtml() {
61,7 → 62,14
this.arguments = arguments;
}
 
public String getFromName() {
return fromName;
}
 
public void setFromName(String fromName) {
this.fromName = fromName;
}
 
public String getSubject()
{
return subject;
/impl/src/java/pt/estgp/estgweb/Globals.java
246,6 → 246,8
public static final boolean MODULE_STATUS_ASSESSMENTS = ConfigProperties.getBooleanProperty("module.assessments");
//Filipe Matos
 
 
public static final boolean MODULE_STATUS_COURSEUNITEVALUATION = ConfigProperties.getBooleanProperty("module.courseunitevaluation");
public static final boolean MODULE_STATUS_PROCESSES = ConfigProperties.getBooleanProperty("module.processes");
 
 
/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java
24,7 → 24,9
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
139,7 → 141,9
try
{
Document dom = Dom4jUtil.parse(stream);
String html = Dom4jUtil.styleDocument(dom, Globals.TEMPLATE_COURSE_XSL_PATH);
Map<String,Object> parameters = new HashMap<String,Object>();
parameters.put("COURSE_SIGES_CODE",c.getCode());
String html = Dom4jUtil.styleDocument(dom, Globals.TEMPLATE_COURSE_XSL_PATH,parameters);
c.setCacheWebDocument(html);
}
catch (Exception e)
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitEvaluation.java
New file
0,0 → 1,99
package pt.estgp.estgweb.services.courseunits;
 
import jomm.utils.PdfUtils;
import org.apache.fop.apps.FOPException;
import org.apache.log4j.Logger;
import org.dom4j.*;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseUnitEvaluationView;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.utils.StringsUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
 
/**
* @author Jorge Machado
*
*
* So pode editar o programa da unidade o coordenador do curso ou o responsavel da unidade
* ou o docente da unidade ou tem o role de validacao do curso a comissao de curso
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class SaveCourseUnitEvaluation implements IService
{
 
 
 
private static final Logger logger = Logger.getLogger(SaveCourseUnitEvaluation.class);
 
public CourseUnitEvaluationView run(CourseUnitEvaluationView cupv, Long coursUnitId, UserSession usession) throws ServiceException, TransformerException, IOException, FOPException {
 
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(coursUnitId);
 
CourseUnitEvaluation evaluation = c.getCourseUnitEvaluation();
if(evaluation == null)
{
evaluation = new CourseUnitEvaluationImpl();
DaoFactory.getCourseUnitEvaluationDaoImpl().save(evaluation);
c.setCourseUnitEvaluation(evaluation);
}
//
 
if(usession.getUser() instanceof Teacher &&
((((Teacher)(usession.getUser())).isTeacherOfCourseUnit(c.getId(),true))
||
(c.getResponsableTeacher()!=null && usession.getUser().getId() == c.getResponsableTeacher().getId())
))
{
cupv.persistViewInObjectTeacher(evaluation);
}
if(usession.getUser() instanceof Teacher
&& (((usession.getUser())).hasRole(c.getCourse().getValidationRole())
||
((usession.getUser()) == c.getCourse().getCoordinator()))
)
{
cupv.persistViewInObjectTeacher(evaluation);
}
List<String> errors = new ArrayList<String>();
 
if(usession.getUser() instanceof Teacher)
DirectedCoordinatedUnitsService.sendNotificationsEditedInterestedPeople(c,usession);
else
{
logger.info("Nao vai informar docentes");
}
return cupv;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitsBySigesCodesService.java
39,4 → 39,24
}
return courseUnitViews;
}
 
public CourseUnitView loadLastYear(String code, String courseCode, String semestre, UserSession userSession) throws ServiceException {
 
if(semestre.equals("S3"))
semestre = "S1";
else if(semestre.equals("S4"))
semestre = "S2";
else if(semestre.equals("S5"))
semestre = "S1";
else if(semestre.equals("S6"))
semestre = "S2";
else if(semestre.startsWith("A"))
semestre = "A";
 
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueLastYear(code, courseCode,semestre);
 
if(courseUnit == null)
return null;
return new CourseUnitView(courseUnit);
}
}
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java
17,6 → 17,7
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
67,7 → 68,15
String fullMessage = MessageFormat.format(content, email.getArguments().toArray());
 
logger.info("FROM:" + email.getFrom());
message.setFrom(new InternetAddress(email.getFrom()));
if(email.getFromName() != null)
try {
message.setFrom(new InternetAddress(email.getFrom(),email.getFromName()));
} catch (UnsupportedEncodingException e) {
logger.error(e,e);
message.setFrom(new InternetAddress(email.getFrom()));
}
else
message.setFrom(new InternetAddress(email.getFrom()));
message.setSubject(email.getSubject());
message.setText(fullMessage,"utf-8");
 
182,7 → 191,9
for(String rec: recipients)
logger.info(rec);
logger.info("arguments end");
return new Email(subject ,recipients,user.getEmail(),template,arguments,Message.RecipientType.BCC);
Email email = new Email(subject ,recipients,user.getEmail(),template,arguments,Message.RecipientType.BCC);
email.setFromName(from + " (ESTG)");
return email;
}
 
public Email getCourseUnitAnnouncementEmail(CourseUnitAnnouncement announcement, LangEnum langEnum, String from, List<User> users)
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java
64,16 → 64,22
for (BigDecimal c : codigos)
{
Docente d = service.getSiGesWEBSoap().getDocente(c, Globals.SIGES_INSTITUTION_CODE, year);
logger.info("Codigo Funcionario Importado:" + d.getCodigoFuncionario().intValue() + " email IPP SIGES: " + d.getEmail());
logger.info("Codigo Funcionario Importado: SIGES(" + d.getCodigoFuncionario().intValue() + ") email IPP SIGES: " + d.getEmail());
logger.info("SIGES IMPORTED INFO: " + docenteToString(d));
Teacher t = DaoFactory.getTeacherDaoImpl().loadBySigesCode(d.getCodigoFuncionario().intValue());
boolean newUser = false;
if (t == null)
{
logger.info("Teacher does not exist in baco, will create SIGES:" + d.getCodigoFuncionario().intValue());
t = DomainObjectFactory.createTeacherImpl();
DaoFactory.getTeacherDaoImpl().save(t);
newUser = true;
}
logger.info("Importing: (" + t.getUsername() + ") " + t.getName());
else
{
logger.info("Teacher EXIST in baco with SIGES: " + d.getCodigoFuncionario().intValue());
}
logger.info("Will persist SIGES(" + d.getCodigoFuncionario().intValue() + ") baco (username:" + t.getUsername() + ") baco name:" + t.getName());
try
{
persist(d, t, newUser);
106,6 → 112,30
}
 
/**
* Implementação local do toString para a class Docente que foi gerada pelos web-services
* @param d
* @return
*/
 
public String docenteToString(Docente d)
{
return "Docente{" +
"codigoFuncionario=" + d.getCodigoFuncionario() +
", nomeFuncionario='" + d.getNomeFuncionario() + '\'' +
", nomeFuncionarioInt='" + d.getNomeFuncionarioInt() + '\'' +
", nomeAcademico='" + d.getNomeAcademico() + '\'' +
", sexo='" + d.getSexo() + '\'' +
", dataNascimento=" + d.getDataNascimento() +
", morada='" + d.getMorada() + '\'' +
", codigoPostal=" + d.getCodigoPostal() +
", subCodigoPostal=" + d.getSubCodigoPostal() +
", email='" + d.getEmail() + '\'' +
", numeroBi='" + d.getNumeroBi() + '\'' +
", usernameNetpa='" + d.getUsernameNetpa() + '\'' +
", disciplinas=" + d.getDisciplinas() +
'}';
}
/**
* Nao esta testado
* jm
*
127,8 → 157,25
{
int atIndex = d.getEmail().indexOf("@");
if (atIndex > 0)
{
t.setUsername(d.getEmail().substring(0, atIndex));
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " foi-lhe atribuido o username d" + d.getEmail().substring(0, atIndex));
}
else
{
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " NAO lhe foi atribuido username o email não tem o caracter @");
}
}
else if(t.getUsername() == null || t.getUsername().trim().length() == 0)
{
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " nao tem email no SIGES foi-lhe atribuido o username d" + d.getCodigoFuncionario().intValue());
t.setUsername("d" + d.getCodigoFuncionario().intValue());
}
else
{
//username não foi alterado
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " nao lhe foi alterado o username " + t.getUsername());
}
t.setSigesCode(d.getCodigoFuncionario().intValue());
if(t.getAddress() == null || t.getAddress().length() == 0)
t.setAddress(d.getMorada());
195,7 → 242,7
List<String> arguments = new ArrayList<String>();
String cause = e.getCause() == null ? "" : e.getCause().toString();
arguments.add((e.toString() + "\n" + cause).replace("\n","<br/>"));
Email email = new Email("Erro de importação de professores",emails,"baco@estgp.pt","messageToAdmin_pt.txt",arguments);
Email email = new Email("Erro de importa��o de professores",emails,"baco@estgp.pt","messageToAdmin_pt.txt",arguments);
new SendEmailService().sendEmail(email);
throw e;
}
/impl/src/java/pt/estgp/estgweb/services/announcements/LoadTypeMaxAnnouncementsService.java
1,5 → 1,6
package pt.estgp.estgweb.services.announcements;
 
import pt.estgp.estgweb.Globals;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.domain.views.AnnouncementView;
22,6 → 23,7
{
private static final Logger logger = Logger.getLogger(LoadTypeMaxAnnouncementsService.class);
private static final int MAX_ANNOUNCEMENTS = ConfigProperties.getIntProperty("announcements.max.visible");
private static final int MAX_ANNOUNCEMENTS_NEWS = ConfigProperties.getIntProperty("announcements.max.news.visible");
 
public List<AnnouncementView> run(String type, String subTarget, UserSession userSession)
{
31,7 → 33,10
boolean internal = true;
if (userSession.getUser() == null)
internal = false;
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(MAX_ANNOUNCEMENTS,targetRoles,type,subTarget,internal);
int max = MAX_ANNOUNCEMENTS;
if(type != null && type.equals(Globals.ANNOUNCEMENT_TYPE_NEWS))
max = MAX_ANNOUNCEMENTS_NEWS;
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(max,targetRoles,type,subTarget,internal);
if(announcements == null)
return null;
List<AnnouncementView> announcementViews = new ArrayList<AnnouncementView>();
/impl/src/java/pt/estgp/estgweb/services/authenticate/AuthenticateService.java
70,6 → 70,9
 
if(u == null)
{
logger.warn("user:" + username + " does not exist");
throw new AuthenticateException(AuthenticateException.DOES_NOT_EXIST);
/*
u = getUserInfo(username);
u.setPassword(password);
//put password to be complete for advising
83,7 → 86,7
else if (u.getRoles().contains("student"))
{
 
}
}*/
}
else
{
/impl/src/java/pt/estgp/estgweb/services/authenticate/AuthenticateException.java
6,6 → 6,7
{
public static final String ALREADY_AUTHENTICATED = "authenticate.already.authenticated";
public static final String FAIL_AUTHENTICATION = "fail.authenticate";
public static final String DOES_NOT_EXIST = "dontexist.authenticate";
public static final String BLOCKED = "authenticate.blocked";
 
public AuthenticateException()
/impl/src/java/pt/estgp/estgweb/domain/ProcessEventImpl.java
176,4 → 176,35
}
return false;
}
 
 
 
@Override
public String toString() {
return "ProcessEvent{" +
"id=" + getId() +
", updateDate=" + getUpdateDate() +
", openDate=" + getOpenDate() +
", acceptedDate=" + getAcceptedDate() +
", dispatchedDate=" + getDispatchedDate() +
", lastChangeDate=" + getLastChangeDate() +
", closeDate=" + getCloseDate() +
", nowState='" + getNowState() + '\'' +
", accepted=" + isAccepted() +
", destinationRole='" + getDestinationRole() + '\'' +
", notes='" + getNotes() + '\'' +
", notesAccessLevel='" + getNotesAccessLevel() + '\'' +
", notesAccessIdentifiers='" + getNotesAccessIdentifiers() + '\'' +
", notesAccessRoles='" + getNotesAccessRoles() + '\'' +
", notesToStarter='" + getNotesToStarter() + '\'' +
", process=" + getProcess().getId() +
", previousEvent=" + getPreviousEvent().getId() +
", nextEvent=" +
", owner=" + getOwner().getUsername() +
", files=" + getFiles() +
'}';
}
 
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitEvaluationView.java
New file
0,0 → 1,70
package pt.estgp.estgweb.domain.views;
 
import pt.estgp.estgweb.domain.CourseUnitEvaluation;
import pt.estgp.estgweb.domain.CourseUnitEvaluationImpl;
import pt.estgp.estgweb.domain.CourseUnitProgram;
import pt.estgp.estgweb.domain.CourseUnitProgramImpl;
 
import java.io.Serializable;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
* @time 19:34:49
* @see pt.estgp.estgweb.domain.views
*/
public class CourseUnitEvaluationView extends DomainObjectView
{
 
 
 
private CourseUnitEvaluation courseUnitEvaluation;
 
public Class getReferenceClass()
{
return CourseUnitEvaluationImpl.class;
}
 
public Serializable getSerializable()
{
return courseUnitEvaluation.getId();
}
 
public CourseUnitEvaluationView()
{
}
 
public CourseUnitEvaluation getCourseUnitEvaluation() {
return courseUnitEvaluation;
}
 
public void setCourseUnitEvaluation(CourseUnitEvaluation courseUnitEvaluation) {
this.courseUnitEvaluation = courseUnitEvaluation;
}
 
public CourseUnitEvaluationView(CourseUnitEvaluation courseUnitEvaluation)
{
super(courseUnitEvaluation);
this.courseUnitEvaluation = courseUnitEvaluation;
}
 
public void persistViewInObjectTeacher(CourseUnitEvaluation c)
{
c.setNumAlunosAprov1013(courseUnitEvaluation.getNumAlunosAprov1013());
c.setNumAlunosAprov1416(courseUnitEvaluation.getNumAlunosAprov1416());
c.setNumAlunosAprov1720(courseUnitEvaluation.getNumAlunosAprov1720());
c.setNumAlunosAprovados(courseUnitEvaluation.getNumAlunosAprovados());
c.setNumAlunosAprovEspecial(courseUnitEvaluation.getNumAlunosAprovEspecial());
c.setNumAlunosAprovFrequencia(courseUnitEvaluation.getNumAlunosAprovFrequencia());
c.setNumAlunosAprovNormal(courseUnitEvaluation.getNumAlunosAprovNormal());
c.setNumAlunosAprovRecurso(courseUnitEvaluation.getNumAlunosAprovRecurso());
c.setNumAlunosAprovTotal(courseUnitEvaluation.getNumAlunosAprovTotal());
c.setNumAlunosInscritos(courseUnitEvaluation.getNumAlunosInscritos());
c.setNumAlunosReprovados(courseUnitEvaluation.getNumAlunosReprovados());
c.setNumAlunosSemElementosAvaliacao(courseUnitEvaluation.getNumAlunosSemElementosAvaliacao());
c.setQualApreciacaoCumprimentoPrograma(courseUnitEvaluation.getQualApreciacaoCumprimentoPrograma());
c.setQualApreciacaoQuantitivos(courseUnitEvaluation.getQualApreciacaoQuantitivos());
c.setQualApreciacaoUC(courseUnitEvaluation.getQualApreciacaoUC());
c.setQualConclusoes(courseUnitEvaluation.getQualConclusoes());
}
}
/impl/src/java/pt/estgp/estgweb/domain/DomainObjectFactory.java
311,4 → 311,9
{
return new DigitalDeliveryTargetImpl();
}
 
public static CourseUnitEvaluationImpl createCourseUnitEvaluationImpl()
{
return new CourseUnitEvaluationImpl();
}
}
/impl/src/java/pt/estgp/estgweb/domain/ProcessImpl.java
63,4 → 63,29
{
return user.isSuperuser() || user.hasRole(Globals.ROLE_PROCESSES_ADMIN) || user.getId() == getLastEvent().getOwner().getId();
}
 
public boolean canRemoveLastEvent(User user)
{
if(getLastEvent().getPreviousEvent() == null)
{
//cant delete first event
return false;
}
if(user.isSuperuserOrAdmin())
{
return true;
}
//check if this event starts in this user looking to previous event
else if(!getLastEvent().isAccepted() &&
getLastEvent().getPreviousEvent() != null &&
user.getId() == getLastEvent().getPreviousEvent().getOwner().getId())
{
return true;
}
else
{
return false;
}
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ConfigurationDaoImpl.java
New file
0,0 → 1,36
package pt.estgp.estgweb.domain.dao.impl;
 
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import pt.estgp.estgweb.domain.Course;
import pt.estgp.estgweb.domain.CourseImpl;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.dao.DaoUtils;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.estgp.estgweb.utils.DatesUtils;
 
import java.util.List;
 
import static org.hibernate.criterion.Restrictions.eq;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class ConfigurationDaoImpl extends ConfigurationDao
{
public static ConfigurationDaoImpl getInstance()
{
if (myInstance == null)
myInstance = new ConfigurationDaoImpl();
return (ConfigurationDaoImpl) myInstance;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java
67,6 → 67,10
usersC.createAlias("tU.course","tUC");
usersC.add(eq("tU.semestre",semestre))
.add(eq("tUC.id",courseId));
//NOVO
if(year != null && year.length() > 0)
usersC.add(eq("tU.importYear",year));
//NOVO
users.addAll(usersC.list());
}
if(target.isStudents())
77,6 → 81,8
usersC.createAlias("sU.course","sUC");
usersC.add(eq("sU.semestre",semestre))
.add(eq("sUC.id",courseId));
if(year != null && year.length() > 0)
usersC.add(eq("sU.importYear",year));
users.addAll(usersC.list());
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
220,8 → 220,14
.uniqueResult();
}
 
public List<CourseUnit> loadBySigesCodeUnique(String sigesCode, String courseCode, String year)
public CourseUnit loadBySigesCodeUniqueLastYear(String sigesCode, String courseCode, String semestre)
{
return loadBySigesCodeUnique(sigesCode,courseCode,semestre,DatesUtils.getImportYear());
}
 
 
public List<CourseUnit> loadBySigesCodeUnique(String sigesCode, String courseCode, String year)
{
return createCriteria()
.add(eq("code", sigesCode))
.add(eq("courseCode", courseCode))
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitEvaluationDaoImpl.java
New file
0,0 → 1,31
package pt.estgp.estgweb.domain.dao.impl;
 
import pt.estgp.estgweb.domain.CourseUnitQuestion;
import pt.estgp.estgweb.utils.DatesUtils;
 
import java.util.List;
 
import static org.hibernate.criterion.Restrictions.eq;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class CourseUnitEvaluationDaoImpl extends CourseUnitEvaluationDao
{
 
 
private CourseUnitEvaluationDaoImpl()
{
}
 
public static CourseUnitEvaluationDaoImpl getInstance()
{
if (myInstance == null)
myInstance = new CourseUnitEvaluationDaoImpl();
return (CourseUnitEvaluationDaoImpl) myInstance;
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java
304,4 → 304,9
{
return DigitalDeliveryCategoryDaoImpl.getInstance();
}
public static CourseUnitEvaluationDaoImpl getCourseUnitEvaluationDaoImpl()
{
return CourseUnitEvaluationDaoImpl.getInstance();
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitEvaluationImpl.java
New file
0,0 → 1,13
package pt.estgp.estgweb.domain;
 
import java.io.Serializable;
 
/**
* Created by jorgemachado on 03/06/14.
*/
public class CourseUnitEvaluationImpl extends CourseUnitEvaluation {
@Override
public Serializable getSerializable() {
return getId();
}
}
/impl/src/java/pt/estgp/estgweb/domain/ConfigurationImpl.java
New file
0,0 → 1,18
package pt.estgp.estgweb.domain;
 
import java.io.Serializable;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
* @time 10:27:25
* @see pt.estgp.estgweb.domain
*/
public class ConfigurationImpl extends Configuration
{
 
public Serializable getSerializable()
{
return getId();
}
}
/impl/src/java/pt/estgp/estgweb/web/DirWebProxy.java
99,12 → 99,14
 
logger.info("server:" + server);
logger.info("path:" + path);
logger.info("startPath:" + startPath);
logger.info("proxyKey:" + proxyKey);
logger.info("proxyHost:" + proxyHost);
logger.info("proxyPort:" + proxyPort);
logger.info("xml:" + xml);
logger.info("style:" + style);
logger.info("label:" + label);
logger.info("useOutputStream:" + useOutputStream);
 
if (path != null)
{
178,7 → 180,7
{
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
String username = userSession != null ? userSession.getUsername() : "UNKNOWN";
logger.warn(username + ":" + request.getRemoteAddr() + " cant access this area server:" + server + " and path:" + path + " " + request.getRemoteUser() + " " + request.getRequestURL() + " spath " + request.getServletPath() + " queryString " + request.getQueryString() );
logger.warn(username + ":" + request.getRemoteAddr() + " cant access this area server:" + server + " and path:" + path + " " + request.getRemoteUser() + " " + request.getRequestURL() + " spath " + request.getServletPath() + " queryString " + request.getQueryString() ,e);
response.sendError(401);
}
catch (FileNotFoundException e)
189,7 → 191,7
}
catch (Exception e)
{
logger.error(e,e);
logger.error(e, e);
throw new IOException(e.toString());
}
}
449,6 → 451,7
String actualNodeId = (String) request.getAttribute("actualNodeId");
String actualRemoteNodeId = (String) request.getAttribute("ACTUAL_REMOTE_CHILD");
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
System.out.println("Using stylesheet = " + stylesheet);
 
parameters.put("contextPath", request.getContextPath());
String username = "descolnhecido";
/impl/src/java/pt/estgp/estgweb/web/WebProxy.java
1,9 → 1,11
package pt.estgp.estgweb.web;
 
import jomm.utils.StreamsUtils;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.StringsUtils;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
195,6 → 197,44
String pathFinal = path.indexOf("?") >=0 ? URIUtil.encodePath(path.substring(0,path.indexOf("?")), "ISO-8859-1") + "?" +path.substring(path.indexOf("?")+1) : path;
System.out.println(pathFinal);
}
public static boolean checkExist( String server, String path)
{
 
String serverUrl = ConfigProperties.getProperty("server." + server);
String serverEncoding = ConfigProperties.getProperty(server + ".encoding");
String confStartPath = ConfigProperties.getProperty("server." + server + ".start.path");
if (confStartPath != null)
path = confStartPath + path;
 
 
try
{
 
String pathFinal = path.indexOf("?") >=0 ? URIUtil.encodePath(path.substring(0,path.indexOf("?")), "ISO-8859-1") + path.substring(path.indexOf("?")) : path;
System.out.println("Getting: " + serverUrl + pathFinal);
URL url = new URL(serverUrl + pathFinal);
 
 
URLConnection con = url.openConnection();
InputStream stream = con.getInputStream();
String out = StreamsUtils.readString(stream);
stream.close();
 
if(out.trim().length() == 0)
return false;
return true;
}
catch (FileNotFoundException e)
{
return false;
}
catch (Exception e)
{
return false;
}
 
}
 
public static void processHttpRequestService(JspWriter out, String server, String path) throws IOException, ServletException
{
 
/impl/src/java/pt/estgp/estgweb/web/form/courseunits/CourseUnitEvaluationForm.java
New file
0,0 → 1,64
package pt.estgp.estgweb.web.form.courseunits;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.CourseUnitProgramImpl;
import pt.estgp.estgweb.domain.CourseUnitProgramPart2Impl;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.views.CourseUnitEvaluationView;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.domain.views.CourseUnitView;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @time 14:28:59
* @see pt.estgp.estgweb.web.form.blogs
*/
public class CourseUnitEvaluationForm extends CourseUnitsForm
{
private static final Logger logger = Logger.getLogger(CourseUnitEvaluationForm.class);
 
CourseUnitEvaluationView courseUnitEvaluationView = new CourseUnitEvaluationView();
 
long courseUnitId;
 
 
public CourseUnitEvaluationForm(CourseUnitEvaluationView courseUnitEvaluationView, CourseUnitView courseUnitView, long courseUnitId) {
this.courseUnitEvaluationView = courseUnitEvaluationView;
this.courseUnitView = courseUnitView;
this.courseUnitId = courseUnitId;
}
 
public CourseUnitEvaluationForm()
{
courseUnitEvaluationView.setCourseUnitEvaluation(DomainObjectFactory.createCourseUnitEvaluationImpl());
}
 
public CourseUnitEvaluationView getCourseUnitEvaluationView() {
return courseUnitEvaluationView;
}
 
public void setCourseUnitEvaluationView(CourseUnitEvaluationView courseUnitEvaluationView) {
this.courseUnitEvaluationView = courseUnitEvaluationView;
}
 
public CourseUnitView getCourseUnitView() {
return courseUnitView;
}
 
public void setCourseUnitView(CourseUnitView courseUnitView) {
this.courseUnitView = courseUnitView;
}
 
 
 
public long getCourseUnitId() {
return courseUnitId;
}
 
public void setCourseUnitId(long courseUnitId) {
this.courseUnitId = courseUnitId;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsEvaluationController.java
New file
0,0 → 1,127
package pt.estgp.estgweb.web.controllers.courseunits;
 
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.CourseUnitEvaluationImpl;
import pt.estgp.estgweb.domain.CourseUnitProgram;
import pt.estgp.estgweb.domain.CourseUnitProgramImpl;
import pt.estgp.estgweb.domain.CourseUnitProgramPart2Impl;
import pt.estgp.estgweb.domain.views.CourseUnitEvaluationView;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitEvaluationForm;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitProgramForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
/**
* @author Jorge Machado
* @author Fabio Velez
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class CourseUnitsEvaluationController extends CourseUnitsController
{
private static final Logger logger = Logger.getLogger(CourseUnitsEvaluationController.class);
 
 
 
 
public ActionForward editEvaluation(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
 
long id = cUF.getCourseUnitId();
if(id <= 0)
id = cUF.getCourseUnitView().getId();
 
 
CourseUnitView cV = loadCourseUnitViewAndCourse(id,true,false, mapping, request, response);
 
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
CourseUnitEvaluationView cpv;
if(cV.getCourseUnit().getCourseUnitEvaluation() == null)
cpv = new CourseUnitEvaluationView(new CourseUnitEvaluationImpl());
else
cpv = new CourseUnitEvaluationView(cV.getCourseUnit().getCourseUnitEvaluation());
// request.setAttribute("CourseUnitProgramView", cpv);
 
 
cUF.setCourseUnitEvaluationView(cpv);
cUF.setCourseUnitView(cV);
return mapping.findForward("edit.evaluation");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward saveEvaluation(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
 
long id = cUF.getCourseUnitView().getId();
CourseUnitEvaluationView cuV = cUF.getCourseUnitEvaluationView();
 
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{cuV, id};
sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args);
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
addMessage(request,"courseunit.evaluation.success");
return mapping.findForward("load");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
 
 
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsController.java
1,10 → 1,7
package pt.estgp.estgweb.web.controllers.courseunits;
 
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import org.hibernate.ObjectNotFoundException;
import pt.estgp.estgweb.Globals;
194,6 → 191,74
}
}
 
 
public ActionForward loadCourseUnitWebSiteBySigesCodes(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
String unitCode = request.getParameter("unitCode");
String courseCode = request.getParameter("courseCode");
String semestre = request.getParameter("semestre");
 
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{unitCode,courseCode,semestre};
CourseUnitView cUV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnitsBySigesCodesSemestreLastYear", args, names);
return loadCourseUnitAndForward(cUF,cUV.getId() ,true,false, mapping, request, response);
 
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
}
 
 
public ActionForward loadCourseUnitProgramBySigesCodes(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
String unitCode = request.getParameter("unitCode");
String courseCode = request.getParameter("courseCode");
String semestre = request.getParameter("semestre");
 
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{unitCode,courseCode,semestre};
CourseUnitView cUV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnitsBySigesCodesSemestreLastYear", args, names);
 
ActionRedirect forward = new ActionRedirect();
forward.setPath("/repositoryStream/" + cUV.getProgramStreamId());
return forward;
 
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
}
 
public ActionForward loadStudents(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
/impl/src/updates/db/update19DumpsDigitalDelivery.sql
New file
0,0 → 1,83
 
DROP TABLE IF EXISTS `digital_delivery_category`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `digital_delivery_category` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`discrimitator` varchar(255) NOT NULL,
`updateDate` datetime NOT NULL,
`name` varchar(255) DEFAULT NULL,
`description` text,
`parent_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK9D6868294DEAB94` (`parent_id`),
CONSTRAINT `FK9D6868294DEAB94` FOREIGN KEY (`parent_id`) REFERENCES `digital_delivery_category` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `digital_delivery_category`
--
DROP TABLE IF EXISTS `digital_delivery`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `digital_delivery` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`discrimitator` varchar(255) NOT NULL,
`updateDate` datetime NOT NULL,
`saveDate` datetime DEFAULT NULL,
`openDate` datetime DEFAULT NULL,
`closeDate` datetime DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`infoFileStream` varchar(255) DEFAULT NULL,
`description` text,
`targetReadersRole` varchar(255) DEFAULT NULL,
`category` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FKD88FBA3B1C7AB7C2` (`category`),
CONSTRAINT `FKD88FBA3B1C7AB7C2` FOREIGN KEY (`category`) REFERENCES `digital_delivery_category` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
 
 
--
-- Table structure for table `digital_delivery_target`
--
 
DROP TABLE IF EXISTS `digital_delivery_target`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `digital_delivery_target` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`discrimitator` varchar(255) NOT NULL,
`updateDate` datetime NOT NULL,
`repositoryStream` varchar(255) DEFAULT NULL,
`notesReader` text,
`notesOwner` text,
`checked` bit(1) DEFAULT NULL,
`courseUnit` bigint(20) DEFAULT NULL,
`owner` bigint(20) DEFAULT NULL,
`digital_delivery_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK30FECC1568442945` (`digital_delivery_id`),
KEY `FK30FECC1552876F6F` (`owner`),
KEY `FK30FECC15DF034EA4` (`courseUnit`),
CONSTRAINT `FK30FECC1552876F6F` FOREIGN KEY (`owner`) REFERENCES `user` (`id`),
CONSTRAINT `FK30FECC1568442945` FOREIGN KEY (`digital_delivery_id`) REFERENCES `digital_delivery` (`id`),
CONSTRAINT `FK30FECC15DF034EA4` FOREIGN KEY (`courseUnit`) REFERENCES `courseunit` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `digital_delivery_target`
--
 
--
-- Table structure for table `digital_delivery`
--
 
 
--
-- Dumping data for table `digital_delivery`
--
 
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
31,6 → 31,7
<many-to-one name="validatorUser" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true"/>
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="false" outer-join="true"/>
<many-to-one name="courseUnitProgram" class="pt.estgp.estgweb.domain.CourseUnitProgram" lazy="false" outer-join="true"/>
<many-to-one name="courseUnitEvaluation" class="pt.estgp.estgweb.domain.CourseUnitEvaluation" lazy="false" outer-join="true"/>
<many-to-one name="responsableTeacher" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true"/>
<set name="blogs" cascade="delete" lazy="true" order-by="saveDate asc">
<key column="courseUnit"/>
226,6 → 227,42
</class>
 
 
 
<class name="pt.estgp.estgweb.domain.CourseUnitEvaluation" table="courseunitevaluation" abstract="true">
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>
<meta attribute="scope-class">public abstract</meta>
<id name="id" type="long">
<generator class="native"/>
</id>
<discriminator column="discrimitator"/>
<timestamp source="db" name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="closed" type="boolean"/>
<property name="numAlunosInscritos" type="text"/>
<property name="numAlunosSemElementosAvaliacao" type="integer"/>
 
<property name="numAlunosAprovFrequencia" type="integer"/>
<property name="numAlunosAprovNormal" type="integer"/>
<property name="numAlunosAprovRecurso" type="integer"/>
<property name="numAlunosAprovEspecial" type="integer"/>
<property name="numAlunosAprovTotal" type="integer"/>
 
<property name="numAlunosAprov1013" type="integer"/>
<property name="numAlunosAprov1416" type="integer"/>
<property name="numAlunosAprov1720" type="integer"/>
 
<property name="numAlunosAprovados" type="integer"/>
<property name="numAlunosReprovados" type="integer"/>
 
<property name="qualApreciacaoQuantitivos" type="text"/>
<property name="qualApreciacaoUC" type="text"/>
<property name="qualApreciacaoCumprimentoPrograma" type="text"/>
<property name="qualConclusoes" type="text"/>
 
<subclass name="pt.estgp.estgweb.domain.CourseUnitEvaluationImpl" discriminator-value="CourseUnitEvaluationImpl"/>
</class>
 
 
<!--<class name="pt.estgp.estgweb.domain.CourseUnit" table="courseunitassignement" abstract="true">-->
<!--<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>-->
<!--<meta attribute="scope-class">public abstract</meta>-->
/impl/src/hbm/pt/estgp/estgweb/domain/Configuration.hbm.xml
New file
0,0 → 1,20
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
<class name="pt.estgp.estgweb.domain.Configuration" table="configuration" abstract="true">
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>
<meta attribute="scope-class">public abstract</meta>
<id name="id" type="long">
<generator class="native"/>
</id>
<discriminator column="discrimitator"/>
<timestamp source="db" name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="interfaceImportYear" type="string"/>
<property name="importsDefaultImportYear" type="string"/>
<subclass name="pt.estgp.estgweb.domain.ConfigurationImpl" discriminator-value="ConfigurationImpl"/>
</class>
</hibernate-mapping>
/impl/src/web/imgs/mime/docx.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/admin/courses/course.jsp
77,6 → 77,7
<html:option value="A"><bean:message key="course.A"/></html:option>
<html:option value="C"><bean:message key="course.C"/></html:option>
<html:option value="O"><bean:message key="course.O"/></html:option>
<html:option value="T"><bean:message key="course.T"/></html:option>
</html:select>
* SIGES: <bean:write name="CourseForm" property="courseView.degree"/> - Confirmar Mestrados e Pos graduacoes e informar equipa de desenvolvimento
</td>
/impl/src/web/css/style.css
1797,6 → 1797,11
{
background-color:#EBFCD6;
}
.ficha
{
background-color:#EEEEEE;
text-align: center;
}
 
 
 
/impl/src/web/layout/navigationTop.jsp
39,7 → 39,7
<li><a href="<%=request.getContextPath()%>/dir/student/OrgaosGestao/orgaosConselhoRepresentantes/public/portal/orgaosConselhoRepresentantes.html"><bean:message key="portal.assembleia.representantes"/></a></li>
<li><a href="<%=request.getContextPath()%>/dir/student/OrgaosGestao/orgaosConselhoPedagogico/public/portal/orgaosConselhoPedagogico.html"><bean:message key="portal.conselho.pedagogico"/></a></li>
<li><a href="<%=request.getContextPath()%>/dir/student/OrgaosGestao/orgaosConselhogestao/public/portal/orgaosConselhoGestao.html"><bean:message key="portal.conselho.gestao"/></a></li>
<li><a href="<%=request.getContextPath()%>/dir/student/OrgaosGestao/orgaosConselhoInterdisciplinar/public/portal/orgaosConselhoInterdisciplinar.html"><bean:message key="portal.conselho.interdisciplinar"/></a></li>
<li><a href="<%=request.getContextPath()%>/dir/teacher/OrgaosGestao/orgaosConselhoInterdepartamental/public/portal/orgaosConselhoInterdepartamental.html"><bean:message key="portal.conselho.interdisciplinar"/></a></li>
</ul>
</div>
</li>
61,6 → 61,7
<li><html:link action="/courses?type=E"><bean:message key="course.E"/></html:link></li>
<li><html:link action="/courses?type=A"><bean:message key="course.A"/></html:link></li>
<li><html:link action="/courses?type=P"><bean:message key="course.P"/></html:link></li>
<li><html:link action="/courses?type=T"><bean:message key="course.T"/></html:link></li>
</ul>
</div>
</li>
/impl/src/web/public/courses/courseMenu.jsp
1,4 → 1,5
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.web.WebProxy" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
13,18 → 14,51
<div class="linkMenuBlockTitle">
${CourseView.name}<%--<bean:message key="${typeKey}"/> (<bean:message key="course.studies.plan.users" />)--%>
</div>
<%
 
String pagina = "/pagina.php?nome_id=curso_" + CourseView.getCode() + "_internacionalicao";
boolean internacionalicao = WebProxy.checkExist("conteudos", pagina);
 
pagina = "/pagina.php?nome_id=curso_" + CourseView.getCode() + "_labs";
boolean labs = WebProxy.checkExist("conteudos", pagina);
 
pagina = "/pagina.php?nome_id=curso_" + CourseView.getCode() + "_actividades";
boolean actividades = WebProxy.checkExist("conteudos", pagina);
 
pagina = "/pagina.php?nome_id=curso_" + CourseView.getCode() + "_casos";
boolean casos = WebProxy.checkExist("conteudos", pagina);
 
pagina = "/pagina.php?nome_id=curso_" + CourseView.getCode() + "_parceiros";
boolean parceiros = WebProxy.checkExist("conteudos", pagina);
 
pagina = "/pagina.php?nome_id=curso_" + CourseView.getCode() + "_faq";
boolean faq = WebProxy.checkExist("conteudos", pagina);
 
pagina = "/pagina.php?nome_id=curso_" + CourseView.getCode() + "_publicacoes";
boolean publicacoes = WebProxy.checkExist("conteudos", pagina);
 
%>
<div class="linkLeftMenu">
<div class="listClean">
<ul>
<li><a href="<%=request.getContextPath() + "/startLoadCourseSeparators.do?content=home&type=" + CourseView.getDegree() + "&courseView.id=" + CourseView.getId()%>"><bean:message key="course.menu.home"/></a></li>
 
<li><html:link action="/startLoadCourseStudiesPlan?content=studiesplan&type=${CourseView.degree}&courseView.id=${CourseView.id}"><bean:message key="course.menu.studiesplan"/></html:link></li>
<%if(internacionalicao){%>
<li><html:link action="/startLoadMenuCourse?type=${CourseView.degree}&courseView.id=${CourseView.id}&content=internacionalicao"><bean:message key="course.menu.internacionalicao"/></html:link></li>
<%}if(labs){%>
<li><html:link action="/startLoadMenuCourse?type=${CourseView.degree}&courseView.id=${CourseView.id}&content=labs"><bean:message key="course.menu.labs"/></html:link></li>
<%}if(actividades){%>
<li><html:link action="/startLoadMenuCourse?type=${CourseView.degree}&courseView.id=${CourseView.id}&content=actividades"><bean:message key="course.menu.actividades"/></html:link></li>
<%}if(casos){%>
<li><html:link action="/startLoadMenuCourse?type=${CourseView.degree}&courseView.id=${CourseView.id}&content=casos"><bean:message key="course.menu.casos"/></html:link></li>
<%}if(parceiros){%>
<li><html:link action="/startLoadMenuCourse?type=${CourseView.degree}&courseView.id=${CourseView.id}&content=parceiros"><bean:message key="course.menu.parceiros"/></html:link></li>
<%}if(faq){%>
<li><html:link action="/startLoadMenuCourse?type=${CourseView.degree}&courseView.id=${CourseView.id}&content=faq"><bean:message key="course.menu.faq"/></html:link></li>
<%}if(publicacoes){%>
<li><html:link action="/startLoadMenuCourse?type=${CourseView.degree}&courseView.id=${CourseView.id}&content=publicacoes"><bean:message key="course.menu.publicacoes"/></html:link></li>
<%}%>
</ul>
</div>
</div>
/impl/src/web/public/courses/studiesPlan.jsp
18,7 → 18,7
<ul>
<logic:iterate id="courseUnitView" name="CourseView" property="courseUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView">
<li>
${courseUnitView.name}
${courseUnitView.name} (${courseUnitView.code})
</li>
</logic:iterate>
</ul>
/impl/src/web/public/courseunits/topnavCourseUnitEvaluation.jsp
New file
0,0 → 1,13
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="jomm.web.utils.NavPlaceServer" %>
<%@ page import="jomm.web.utils.TopNav" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/Welcome.do", "Home");
topNav.addNavPlace(null, "course", CourseUnitView.getCourseName());
topNav.addNavPlace("/startLoadCourseUnit.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName());
topNav.addNavPlace(null, "courseunit.evaluation");
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/user/courseunits/courseunitEvaluation.jsp
New file
0,0 → 1,267
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="pt.estgp.estgweb.domain.Teacher" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-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" %>
<jsp:useBean id="CourseUnitEvaluationForm" type="pt.estgp.estgweb.web.form.courseunits.CourseUnitEvaluationForm" scope="request"/>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%--<jsp:useBean id="CourseUnitProgramView" type="pt.estgp.estgweb.domain.views.CourseUnitProgramView" scope="request"/>--%>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<div id="contentIntranet">
<div id="contentPane">
<html:errors/>
<jomm:messages/>
 
<%
IServiceManager sm = ServiceManager.getInstance();
 
List<pt.estgp.estgweb.domain.views.CourseUnitView> otherYearUnits;
otherYearUnits = new ArrayList<pt.estgp.estgweb.domain.views.CourseUnitView>();
try{
String[] names = new String[]{};
Object[] args = new Object[]{new Long(CourseUnitView.getId())};
otherYearUnits =
(List<pt.estgp.estgweb.domain.views.CourseUnitView>)
sm.execute(RequestUtils.getRequester(request, response), "LoadUnitOtherYearsWithProgram", args, names);
request.setAttribute("OtherYearUnits", otherYearUnits);
 
 
names = new String[]{};
args = new Object[]{};
List<Teacher> teachers = (List<Teacher>)
sm.execute(RequestUtils.getRequester(request, response), "LoadTeachers", args, names);
request.setAttribute("teachers", teachers);
}catch(Exception e)
{
System.err.print(e.toString());
e.printStackTrace();
}
 
 
 
 
%>
<div class="seccao">
<h2>
<bean:message key="courseunit.evaluation"/>
</h2>
 
<%
boolean editCoordinatorPart = false;
boolean editTeacherPart = false;
pt.estgp.estgweb.domain.User u = UserSession.getUser();
if(u.isSuperuserOrAdmin())
{
editCoordinatorPart = true;
editTeacherPart = true;
}
else
{
if(u instanceof pt.estgp.estgweb.domain.Teacher)
{
pt.estgp.estgweb.domain.Teacher t = (pt.estgp.estgweb.domain.Teacher) u;
if(t.isTeacherOfCourseUnit(CourseUnitView.getId()))
{
editTeacherPart = true;
}
if(CourseUnitView.getCourseView().getCoordinator() != null && (t.getId() == CourseUnitView.getCourseView().getCoordinator().getId() || t.hasRole(CourseUnitView.getCourseView().getValidationRole())))
{
editCoordinatorPart = true;
}
 
}
}
%>
 
 
<%
boolean closed = CourseUnitEvaluationForm.getCourseUnitEvaluationView().getCourseUnitEvaluation().isClosed();
//todo é necessário um servico para ver se tem estes papeis
if(CourseUnitView.getResponsableTeacher().getId() == UserSession.getUser().getId()
||
CourseUnitView.isOwnedBy(UserSession.getUser(),false)
||
//Validation Role e o papel da comissão de curso
UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole()))
{
 
if(closed)
{
%>
<h2>Este formulário está FECHADO para edição</h2>
<%
}
else
{
%>
<h2>Formulário em fase de edição</h2>
<%
}
 
if(closed)
{
%>
<script>
$( document ).ready(function() {
$("#formEdit :input").attr("disabled", true);
});
 
</script>
<%
}
%>
 
<div id="formEdit">
<html:form action="/user/courseUnitEvaluationController">
<input type="hidden" name="dispatch" value="saveEvaluation">
<html:hidden property="id"/>
<html:hidden property="courseUnitView.id"/>
 
<%--DOCENTE--%>
 
<table class="dataTable tableDisabled" width="100%">
<tr>
<th colspan="2">Dados alterados pelo Docente da Unidade</th>
</tr>
 
<tr>
<th align="right"><bean:message key="courseunit.evaluation.mapa1"/></th>
<td width="80%">
<h3><bean:message key="courseunit.evaluation.mapa1.desc"/></h3>
 
<table class="dataTable" width="100%">
<tr>
<th rowspan="2">
Nº Alunos Inscritos
</th>
<th rowspan="2">
Nº de alunos sem elementos de avaliação
</th>
<th colspan="5">
Nº de alunos aprovados em
</th>
<th rowspan="2">
Aprovados com a classificação entre 10 e 13 valores (%)
</th>
<th rowspan="2">
Aprovados com a classificação entre 14 e 16 valores (%)
</th>
<th rowspan="2">
Aprovados com a classificação entre 17 e 20 valores (%)
</th>
</tr>
<tr>
<th>Avaliação de frequência</th>
<th>Exame Época Normal</th>
<th>Exame Época Recurso</th>
<th>Exame Época Especial</th>
<th>Total</th>
</tr>
<tr>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosInscritos"/>
</td>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosSemElementosAvaliacao"/>
</td>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosAprovFrequencia"/>
</td>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosAprovNormal"/>
</td>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosAprovRecurso"/>
</td>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosAprovEspecial"/>
</td>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosAprovTotal"/>
</td>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosAprov1013"/>
</td>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosAprov1416"/>
</td>
<td align="center">
<html:text size="4" property="courseUnitEvaluationView.courseUnitEvaluation.numAlunosAprov1720"/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th>
Auto-avaliação
</th>
<td>
<table class="dataTable" width="100%">
<tr>
<th>Apreciação dos resultados quantitativos obtidos pelos estudantes</th>
<td width="80%">
<html:textarea style="width:100%;height: 200px" property="courseUnitEvaluationView.courseUnitEvaluation.qualApreciacaoQuantitivos"/>
</td>
</tr>
<tr>
<th>Apreciação do funcionamento da UC<br/>
(Condições de funcionamento da UC; problemas detetados; identificação de práticas pedagógicas de mérito ou deficientes; etc.)</th>
<td width="80%">
<html:textarea style="width:100%;height: 200px" property="courseUnitEvaluationView.courseUnitEvaluation.qualApreciacaoUC"/>
</td>
</tr>
<tr>
<th>Apreciação do cumprimento do programa da UC<br/>
(Adequação das metodologias de ensino/aprendizagem utilizadas; competências efetivamente adquiridas e cumprimento dos conteúdos planificados)
</th>
<td width="80%">
<html:textarea style="width:100%;height: 200px" property="courseUnitEvaluationView.courseUnitEvaluation.qualApreciacaoCumprimentoPrograma"/>
</td>
</tr>
<tr>
<th>
Conclusões<br/>
(Pontos fortes e fracos; sugestões de melhoria e respetivo plano de ação para a sua concretização)
</th>
<td width="80%">
<html:textarea style="width:100%;height: 200px" property="courseUnitEvaluationView.courseUnitEvaluation.qualConclusoes"/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<%
if(!closed)
{
%>
 
<input type="button" value="<bean:message key="save"/>" onclick="set(form,'saveEvaluation');form.submit()"/>
<%
}
%>
</td>
 
</tr>
</table>
 
 
</html:form>
<%
}
%>
</div>
</div>
</div>
</div>
/impl/src/web/user/courseunits/topnavEvaluation.jsp
New file
0,0 → 1,15
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %>
 
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName());
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName());
topNav.addNavPlace(null, "courseunit.evaluation");
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/user/courseunits/courseunit.jsp
27,6 → 27,8
request.setAttribute("fromAction", fromAction);
%>
 
<jomm:messages/>
 
<div id="contentPane">
<h1>${CourseUnitView.name} (${CourseUnitView.code}) - (${CourseUnitView.semestre})</h1>
<table width="100%" cellpadding="0" cellspacing="2" border="0">
/impl/src/web/user/courseunits/menu.jsp
8,6 → 8,7
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %>
<%@ page import="pt.estgp.estgweb.domain.UserImpl" %>
<%@ page import="pt.estgp.estgweb.domain.UserSession" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
54,6 → 55,27
<html:link action="${user}/startLoadCourseUnit${fromAction}?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.home"/></html:link>
</li>
 
 
<%
if(Globals.MODULE_STATUS_COURSEUNITEVALUATION)
{
//todo é necessário um servico para ver se tem estes papeis
if(CourseUnitView.getResponsableTeacher().getId() == UserSession.getUser().getId()
||
CourseUnitView.isOwnedBy(UserSession.getUser(),false)
||
//Validation Role e o papel da comissão de curso
UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole()))
{
%>
<li style="background-color: yellow">
<html:link action="/user/startLoadCourseUnitEvaluation.do?courseUnitId=${CourseUnitView.id}"><bean:message key="courseunit.menu.evaluation"/></html:link>
</li>
<%
}
}
%>
 
<baco:isTeacherOfCourseUnit courseUnitId="${CourseUnitView.id}">
<li>
<html:link action="/user/startSubmitAnnouncementFromCourseUnit?announcementView.courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.put.announcement"/></html:link>
/impl/src/web/user/home/teacher.jsp
25,8 → 25,8
<div class="block">
<%
java.util.List<String> years = new java.util.ArrayList<String>();
years.add("201415");
years.add("201314");
years.add("201213");
 
java.util.Collections.sort(years, new java.util.Comparator<String>()
{
/impl/src/web/user/processes/openProcess.jsp
319,6 → 319,7
<%
 
%>
<html:option value="${process.owner.username}">${process.owner.name} (${process.owner.username}) (requerente)</html:option>
</html:select>
 
</td>
/impl/src/web/user/processes/startMetaProcess.jsp
23,7 → 23,7
<div class="seccao">
<p>Caro ${UserSession.name} Está prestes a submeter um processo de <b>${metaProcess.name}</b></p>
 
<p>Para concretizar este pedido deverá fazer <i>download</i> do seguinte documento digital, preencher o mesmo com a informação requisitada e envia-lo por este formulário para que seja expedido para o serviço respectivo:</p>
<p>Para concretizar este pedido deverá fazer <i>download</i> do seguinte documento digital modelo, preencher o mesmo com a informação requisitada e envia-lo por este formulário para que seja expedido para o serviço respectivo:</p>
<table class="dataTable process">
<tr>
<th>Remetente</th>
/impl/src/xsd/curso.xsl
51,7 → 51,12
@@ -101,7 +106,9 @@
@@ -119,7 +126,7 @@
@@ -132,13 +139,28 @@
@@ -151,11 +173,35 @@
@@ -167,7 +213,15 @@
/impl/src/xsd/fragmentoCurso.xsl
1,6 → 1,7
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:curso="http://www.estgp.pt/xsd/planoestudos/1.0/">
<xsl:import href="curso.xsl"/>
<xsl:param name="COURSE_SIGES_CODE"></xsl:param>
<xsl:template match="/">
<xsl:call-template name="fragmentoCurso"/>
</xsl:template>
/impl/gen/java/pt/ipportalegre/siges/web/services/Docente.java
390,4 → 390,22
this.disciplinas = value;
}
 
@Override
public String toString() {
return "Docente{" +
"codigoFuncionario=" + codigoFuncionario +
", nomeFuncionario='" + nomeFuncionario + '\'' +
", nomeFuncionarioInt='" + nomeFuncionarioInt + '\'' +
", nomeAcademico='" + nomeAcademico + '\'' +
", sexo='" + sexo + '\'' +
", dataNascimento=" + dataNascimento +
", morada='" + morada + '\'' +
", codigoPostal=" + codigoPostal +
", subCodigoPostal=" + subCodigoPostal +
", email='" + email + '\'' +
", numeroBi='" + numeroBi + '\'' +
", usernameNetpa='" + usernameNetpa + '\'' +
", disciplinas=" + disciplinas +
'}';
}
}
/impl/build.xml
9,6 → 9,7
-->
<target name="help">
<echo>This is the availible Ant Tasks:</echo>
<echo message="${env.JAVA_HOME}"></echo>
</target>