Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1348 → Rev 1350

/branches/v3/impl/conf/language/MessageResources.properties
1050,7 → 1050,7
course.description=Descrição
course.coordinator=Coordenador de Curso
course.director=Director de Departamento
course.studies.plan=Plano de Estudos (XML válido no planoEstudos.xsd)
course.studies.plan=Plano de Estudos
course.studies.plan.users=Plano de Estudos
course.studies.plan.not.available=Não disponivel
course.courseunit.program.objectives.todo={0} Unidades em Falta (Ficha)
/branches/v3/impl/conf/WEB-INF/struts/struts-courseunits.xml
26,6 → 26,8
<action path="/startTeste2" forward="page.separators.home"/>
 
<action path="/user/startLoadCourseUnitProgram" forward="/user/courseUnitProgramController.do?dispatch=editProgram"/>
<action path="/user/validateAndLoadCourseUnitProgram" forward="/user/courseUnitProgramController.do?dispatch=validateProgram"/>
<action path="/user/invalidateAndLoadCourseUnitProgram" forward="/user/courseUnitProgramController.do?dispatch=invalidateProgram"/>
<action path="/startLoadCourseUnitStudents" forward="/courseUnitController.do?dispatch=loadStudents"/>
<action path="/startCourseUnitBlog" forward="/courseUnitController.do?dispatch=startBlog"/>
<action path="/startLoadCourseUnitWorks" forward="/courseUnitController.do?dispatch=loadWorks"/>
/branches/v3/impl/conf/WEB-INF/struts/tiles-courses.xml
27,7 → 27,7
<put name="body" value="/public/courses/course.jsp"/>
</definition>
 
<definition name="page.load.course.plan" extends="base.layout1">
<definition name="page.load.course.plan" extends="base.layout0ComLeft">
<put name="title" value="Curso"/>
<put name="topnav" value="/public/courses/topnavCourse.jsp"/>
<!--<put name="navigation" value="/public/courses/courses.jsp"/>-->
35,16 → 35,14
<put name="body" value="/public/courses/studiesPlan.jsp"/>
</definition>
 
 
 
<definition name="page.load.course.separators" extends="base.layout1">
<definition name="page.load.course.separators" extends="base.layout0ComLeft">
<put name="title" value="Curso"/>
<put name="topnav" value="/public/courses/topnavCourse.jsp"/>
<put name="navigation" value="/public/courses/courseMenu.jsp"/>
<put name="body" value="/public/courses/courseSeparators.jsp"/>
</definition>
 
<definition name="page.load.course.menu" extends="base.layout1">
<definition name="page.load.course.menu" extends="base.layout0ComLeft">
<put name="title" value="Curso"/>
<put name="topnav" value="/public/courses/topnavCourse.jsp"/>
<put name="navigation" value="/public/courses/courseMenu.jsp"/>
100,11 → 98,6
</definition>
 
<definition name="page.courses.comissions" extends="page.separators.home">
<put name="title" value="Comissões de Curso"/>
<put name="topnav" value="/admin/courses/topnavCourseComissions.jsp"/>
<put name="body" value="/admin/courses/courseComissions.jsp"/>
</definition>
 
<definition name="page.courses.courseunits" extends="page.separators.home">
<put name="title" value="Listagem de Unidades"/>
/branches/v3/impl/conf/WEB-INF/struts/struts-configuration.xml
10,6 → 10,7
<form-bean type="pt.estgp.estgweb.web.form.configuration.ConfigurationGradesForm" name="ConfigurationGradesForm"/>
<form-bean type="pt.estgp.estgweb.web.form.configuration.DirectoriesForm" name="DirectoriesForm"/>
<form-bean type="pt.estgp.estgweb.web.form.configuration.SchedulleTasksForm" name="SchedulleTasksForm"/>
<form-bean type="pt.estgp.estgweb.web.form.configuration.ConfigurationsForm" name="ConfigurationsForm"/>
</form-beans>
 
<global-exceptions>
35,8 → 36,22
<forward name="userRoles" path="page.configuration.userRoles"/>
</action>
 
 
<action path="/admin/configurations" forward="page.configurations"/>
 
<action path="/admin/setConfigurations"
type="pt.estgp.estgweb.web.controllers.configuration.ConfigurationsController"
name="ConfigurationsForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.separators.serviceZone">
 
<forward name="save" path="page.separators.serviceZone"/>
<forward name="configs" path="page.configurations"/>
</action>
 
<action path="/user/configurationGrades" forward="page.configuration.grades"/>
 
<action path="/user/grades"
type="pt.estgp.estgweb.web.controllers.configuration.GradesController"
name="ConfigurationGradesForm"
/branches/v3/impl/conf/WEB-INF/struts/tiles-configuration.xml
12,6 → 12,12
<put name="body" value="/admin/configuration/grades.jsp"/>
</definition>
 
<definition name="page.configurations" extends="page.separators.serviceZone">
<put name="title" value="Configurações Gerais"/>
<put name="topnav" value="/user/serviceZone/topnavConfigurations.jsp"/>
<put name="body" value="/admin/configuration/configs.jsp"/>
</definition>
 
<definition name="page.configuration.userRoles" extends="page.separators.serviceZone">
<put name="title" value="Configuração Papeis Institucionais"/>
<put name="topnav" value="/user/serviceZone/topnavConfigurationUserRoles.jsp"/>
/branches/v3/impl/conf/WEB-INF/struts/tiles-default.xml
55,6 → 55,10
<put name="navigation" value="/layout/navigationLeft.jsp" />
</definition>
 
<definition name="base.layout0ComLeft" extends="base.definition" path="/layout/layout0ComLeft.jsp">
<put name="navigation" value="/layout/navigationLeft.jsp" />
</definition>
 
<definition name="base.layout2" extends="base.definition" path="/layout/layout2.jsp"/>
 
<definition name="base.layout3" extends="base.definition" path="/layout/layout3.jsp">
/branches/v3/impl/conf/WEB-INF/tlds/baco.tld
121,6 → 121,20
</attribute>
</tag>
<tag>
<name>isNotOwner</name>
<tagclass>pt.estgp.estgweb.web.tags.NotOwnerTag</tagclass>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>isRealOwner</name>
<tagclass>pt.estgp.estgweb.web.tags.RealOwnerTag</tagclass>
<attribute>
/branches/v3/impl/conf/app.properties
111,7 → 111,7
module.quotasImpressao=false
module.srusource=false
#Duarte Santos
module.surveys=true
module.surveys=false
#Filipe Matos
module.assessments=true
 
/branches/v3/impl/conf/directories/topMenus.xml
1,50 → 1,226
<?xml version="1.0" encoding="UTF-8"?>
<directory id="topMenus" label="Menus de Top" place="home" layout="" layoutRoot="" targetRole="" menuKey="" style="topMenus.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 node="true" label="Apresentação" id="app">
<leaf node="false" id="msgDir" label="Mensagem do Director" absolute="false" url="/dir/futureStudent/ESTG/estgDirector/public/portal/estgMensagemDirector.html" proxy="local"/>
<leaf node="false" id="missao" label="A ESTG e a sua missão" absolute="false" url="/dir/futureStudent/ESTG/estgMissao/public/portal/estgMissao.html" proxy="local"/>
<leaf node="false" id="historia" label="História" absolute="false" url="/dir/futureStudent/ESTG/estgPassado/public/portal/estgPassado.html" proxy="local"/>
<leaf node="false" id="localizacao" label="Localização" absolute="false" url="/dir/futureStudent/ESTG/estgChegar/public/portal/estgComoChegarEstg.html" proxy="local"/>
<leaf node="false" id="fotos" label="A ESTG em Fotografias" absolute="false" url="/dir/futureStudent/ESTG/estgFotos/public/portal/estgFotos.html" proxy="local"/>
</leaf>
 
<leaf node="true" label="Organização" id="org">
<leaf node="false" id="director" label="Director" absolute="false" url="/dir/student/OrgaosGestao/orgaosDirector/public/portal/orgaoDirector.html" proxy="local"/>
<leaf node="false" id="ctc" label="Conselho Tecnico Cientifico" absolute="false" url="/dir/student/OrgaosGestao/orgaosConselhoTecnicoCientifico/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="local"/>
<leaf node="false" id="cr" label="Conselho de Representantes" absolute="false" url="/dir/student/OrgaosGestao/orgaosConselhoRepresentantes/public/portal/orgaosConselhoRepresentantes.html" proxy="local"/>
<leaf node="false" id="cp" label="Conselho Pedagógico" absolute="false" url="/dir/student/OrgaosGestao/orgaosConselhoPedagogico/public/portal/orgaosConselhoPedagogico.html" proxy="local"/>
<leaf node="false" id="cg" label="Conselho de Gestão" absolute="false" url="/dir/student/OrgaosGestao/orgaosConselhogestao/public/portal/orgaosConselhoGestao.html" proxy="local"/>
<leaf node="false" id="cint" label="Conselho Interdepartamental" absolute="false" url="/dir/teacher/OrgaosGestao/orgaosConselhoInterdepartamental/public/portal/orgaosConselhoInterdepartamental.html" proxy="local"/>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<directory menuKey="" targetRole="all" layoutRoot="" layout="" style="topMenus.xsl" label_es="" label_en="" label="Menus de Top" id="topMenus" xmlns="http://www.estgp.pt/baco/directory/">
<groupsDeclaration/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es="" label_en=""
label="Apresentação" id="app" url="" node="true">
<groupsDeclaration/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Mensagem do Director" id="msgDir"
url="/dir/futureStudent/ESTG/estgDirector/public/portal/estgMensagemDirector.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="A ESTG e a sua missão" id="missao"
url="/dir/futureStudent/ESTG/estgMissao/public/portal/estgMissao.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="História" id="historia"
url="/dir/futureStudent/ESTG/estgPassado/public/portal/estgPassado.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Localização" id="localizacao"
url="/dir/futureStudent/ESTG/estgChegar/public/portal/estgComoChegarEstg.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="A ESTG em Fotografias" id="fotos"
url="/dir/futureStudent/ESTG/estgFotos/public/portal/estgFotos.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<rights/>
</leaf>
 
<leaf node="true" label="Departamentos" id="departamentos">
<leaf node="false" id="dtd" label="Tecnologia e Design" absolute="false" url="/dir/student/departamentos/depTD/public/departamentos/depTD.html" proxy="local"/>
<leaf node="false" id="cesh" label="Ciencias Empresariais Sociais e Humanas" absolute="false" url="/dir/student/departamentos/depTD/public/departamentos/depCESH.html" proxy="local"/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es="" label_en=""
label="Organização" id="org" url="" node="true">
<groupsDeclaration/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Director" id="director"
url="/dir/student/OrgaosGestao/orgaosDirector/public/portal/orgaoDirector.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Conselho Tecnico Cientifico" id="ctc"
url="/dir/student/OrgaosGestao/orgaosConselhoTecnicoCientifico/public/portal/orgaosConselhoTecnicoCientifico.html"
node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Conselho de Representantes" id="cr"
url="/dir/student/OrgaosGestao/orgaosConselhoRepresentantes/public/portal/orgaosConselhoRepresentantes.html"
node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Conselho Pedagógico" id="cp"
url="/dir/student/OrgaosGestao/orgaosConselhoPedagogico/public/portal/orgaosConselhoPedagogico.html"
node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Conselho de Gestão" id="cg"
url="/dir/student/OrgaosGestao/orgaosConselhogestao/public/portal/orgaosConselhoGestao.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Conselho Interdepartamental" id="cint"
url="/dir/teacher/OrgaosGestao/orgaosConselhoInterdepartamental/public/portal/orgaosConselhoInterdepartamental.html"
node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<rights/>
</leaf>
 
<leaf node="true" label="Ensino" id="ensino">
<leaf node="false" id="lecenciaturas" label="Licenciaturas" absolute="false" url="/courses.do?type=L" proxy="local"/>
<leaf node="false" id="mestrados" label="Mestrados" absolute="false" url="/courses.do?type=M" proxy="local"/>
<leaf node="false" id="accurtadur" label="Acções de Formação de Curta Duração" absolute="false" url="/courses.do?type=C" proxy="local"/>
<leaf node="false" id="cet" label="CET" absolute="false" url="/courses.do?type=E" proxy="local"/>
<leaf node="false" id="favanc" label="Formações Avançadas" absolute="false" url="/courses.do?type=A" proxy="local"/>
<leaf node="false" id="pgrad" label="Pós Graduação" absolute="false" url="/courses.do?type=P" proxy="local"/>
<leaf node="false" id="tesp" label="TeSP" absolute="false" url="/courses.do?type=T" proxy="local"/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es="" label_en=""
label="Departamentos" id="departamentos" url="" node="true">
<groupsDeclaration/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Tecnologia e Design" id="dtd"
url="/dir/student/departamentos/depTD/public/departamentos/depTD.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Ciencias Empresariais Sociais e Humanas" id="cesh"
url="/dir/student/departamentos/depTD/public/departamentos/depCESH.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<rights/>
</leaf>
 
<leaf node="true" label="I&amp;D" id="ied">
<leaf node="false" id="poliempreende" label="Poliempreende" absolute="true" url="http://www.ipportalegre.pt/poliempreende/" proxy="local"/>
<leaf node="false" id="alimentsaud" label="Alimentação Saudável" absolute="true" url="http://alimentacaosaudavel.ipportalegre.pt" proxy="local"/>
<leaf node="false" id="c3i" label="C3i" absolute="true" url="http://www.c3i.ipportalegre.pt/" proxy="local"/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es="" label_en=""
label="Ensino" id="ensino" url="" node="true">
<groupsDeclaration/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Licenciaturas" id="lecenciaturas" url="/courses.do?type=L" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Mestrados" id="mestrados" url="/courses.do?type=M" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Acções de Formação de Curta Duração" id="accurtadur" url="/courses.do?type=C"
node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="CET" id="cet" url="/courses.do?type=E" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Formações Avançadas" id="favanc" url="/courses.do?type=A" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="Pós Graduação" id="pgrad" url="/courses.do?type=P" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es=""
label_en="" label="TeSP" id="tesp" url="/courses.do?type=T" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<rights/>
</leaf>
 
<leaf node="false" id="contactos" label="Contactos" absolute="false" url="/dir/student/contactos/contGerais/public/portal/contactosGeraisEstg.html" proxy="local"/>
 
<leaf node="true" label="O Politécnico" id="politecnico">
<leaf node="false" id="ipp" label="Instituto Politécnico de Portalegre" absolute="true" url="http://www.ipportalegre.pt/" proxy="local"/>
<leaf node="false" id="esep" label="E. S. Educação" absolute="true" url="http://www.esep.pt/" proxy="local"/>
<leaf node="false" id="esae" label="E. S. Agrária de Elvas" absolute="true" url="http://www.esaelvas.pt/" proxy="local"/>
<leaf node="false" id="essp" label="E. S. Saúde" absolute="true" url="http://www.essp.pt/" proxy="local"/>
<leaf node="false" id="sas" label="SAS" absolute="true" url="http://www.ipportalegre.pt/sas/" proxy="local"/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es="" label_en=""
label="I&amp;D" id="ied" url="" node="true">
<groupsDeclaration/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="Poliempreende" id="poliempreende" url="http://www.ipportalegre.pt/poliempreende/"
node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="Alimentação Saudável" id="alimentsaud" url="http://alimentacaosaudavel.ipportalegre.pt"
node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="C3i" id="c3i" url="http://www.c3i.ipportalegre.pt/" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="false" style="true" layout="true" label_es="" label_en=""
label="Contactos" id="contactos"
url="/dir/student/contactos/contGerais/public/portal/contactosGeraisEstg.html" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es="" label_en=""
label="O Politécnico" id="politecnico" url="" node="true">
<groupsDeclaration/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="Instituto Politécnico de Portalegre" id="ipp" url="http://www.ipportalegre.pt/"
node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="E. S. Educação" id="esep" url="http://www.esep.pt/" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="E. S. Agrária de Elvas" id="esae" url="http://www.esaelvas.pt/" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="E. S. Saúde" id="essp" url="http://www.essp.pt/" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="SAS" id="sas" url="http://www.ipportalegre.pt/sas/" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es="" label_en=""
label="Internacional" id="internacional" url="" node="true">
<groupsDeclaration/>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="Candidaturas - Alunos ESTG" id="candidaturas" url="http://www.ipportalegre.pt/html1/home/mostrar/mostrar.aspx?ne=1&amp;cod=834"
node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="4 Razones para estudiar en la ESTG" id="razonesEs" url="http://www.estgp.pt/loadAnnouncement.do?id=3670&amp;dispatch=load" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<leaf remoteExtensionRoot="false" proxy="local" absolute="true" style="true" layout="true" label_es=""
label_en="" label="4 reasons to study at the ESTG" id="reasonsEn" url="http://www.estgp.pt/loadAnnouncement.do?id=3671&amp;dispatch=load" node="false">
<groupsDeclaration/>
<rights/>
</leaf>
<rights/>
</leaf>
<rights>
<internal>false</internal>
</rights>
</directory>
 
/branches/v3/impl/conf/berserk/sd.xml
920,10 → 920,10
<description>Load course unit</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadCourseUnitViewAndCourse</defaultMethod>
 
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="CourseUnitProgramClearancesPreSerializable"/>
</filterChains>
</service>
<service>
938,11 → 938,39
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="EditCourseUnitProgram"/>
<!--<chain name="LoadCourseUnitViewAndCourse"/>-->
<chain name="CourseUnitProgramClearancesPre"/>
</filterChains>
</service>
 
<service>
<name>ValidateCourseUnitProgram</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram</implementationClass>
<description>Save course unit program</description>
<isTransactional>true</isTransactional>
<defaultMethod>validate</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="LoadCourseUnitViewAndCourse"/>-->
<chain name="CourseUnitProgramClearancesPre"/>
</filterChains>
</service>
<service>
<name>InvalidateCourseUnitProgram</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram</implementationClass>
<description>Save course unit program</description>
<isTransactional>true</isTransactional>
<defaultMethod>invalidate</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="LoadCourseUnitViewAndCourse"/>-->
<chain name="CourseUnitProgramClearancesPre"/>
</filterChains>
</service>
 
<service>
<name>SaveCourseUnitEvaluation</name>
<!--Args
CourseUnitEvaluationView evaluationView,
2314,7 → 2342,7
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
<chain name="ServicesOrAdmin"/>
</filterChains>
</service>
 
/branches/v3/impl/conf/berserk/fd.xml
235,6 → 235,13
 
 
 
<filter>
<!--Require parameter with unit id-->
<name>CourseUnitProgramClearances</name>
<implementationClass>pt.estgp.estgweb.filters.filters.CourseUnitProgramClearancesFilter</implementationClass>
<description>This filter fullfill clearances support for courseunit with service parameter unitId regarding the user in session</description>
<isTransactional>false</isTransactional>
</filter>
 
<filter>
<!--Require parameter with unit id-->
/branches/v3/impl/conf/berserk/fcd.xml
445,6 → 445,24
 
<filterChain>
<!--Require parameter unitId with unit id-->
<name>CourseUnitProgramClearancesPre</name>
<expression>CourseUnitProgramClearances("unitId")</expression>
<description>See Filter description</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
 
<filterChain>
<!--Require parameter unitId with unit id-->
<name>CourseUnitProgramClearancesPreSerializable</name>
<expression>CourseUnitProgramClearances("serializable")</expression>
<description>See Filter description</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
 
<filterChain>
<!--Require parameter unitId with unit id-->
<name>CourseUnitEvaluationClearancesPre</name>
<expression>CourseUnitEvaluationClearances("unitId")</expression>
<description>See Filter description</description>
/branches/v3/impl/src/java/jomm/utils/DiacriticFilter.java
1,11 → 1,12
 
package jomm.utils;
 
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Token;
 
import java.io.*;
import java.io.IOException;
import java.text.Normalizer;
 
 
/**
30,6 → 31,12
return new Token(clean(value),t.startOffset(),t.endOffset());
}
 
public static String stripAccents(String s)
{
s = Normalizer.normalize(s, Normalizer.Form.NFD);
s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
return s;
}
public static String clean(String value)
{
StringBuilder finalTerm = new StringBuilder();
/branches/v3/impl/src/java/jomm/web/utils/NavPlace.java
1,11 → 1,10
package jomm.web.utils;
 
import jomm.utils.MessageResources;
import org.apache.log4j.Logger;
 
import javax.servlet.http.HttpServletRequest;
 
import org.apache.log4j.Logger;
 
/**
*
* @author Jorge Machado
/branches/v3/impl/src/java/jomm/web/ftp/impl/FtpFile.java
126,6 → 126,12
queryAux = "?" + queryAux;
else queryAux = "";
return URIUtil.encodePath(name,"ISO-8859-1") + "/" + queryAux;
/*try {
return URLEncoder.encode(name, "UTF-8") + "/" + queryAux;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}*/
//return null;
}
 
public long getSize()
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitProgram.java
54,45 → 54,61
 
private static final Logger logger = Logger.getLogger(SaveCourseUnitProgram.class);
 
public CourseUnitProgramView run(CourseUnitProgramView cupv, Long coursUnitId, UserSession usession) throws ServiceException, TransformerException, IOException, FOPException {
 
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(coursUnitId);
public void validate(Long courseUnitId, UserSession usession, CourseUnitImpl clearedCourseUnit) throws ServiceException, TransformerException, IOException, FOPException {
 
CourseUnitProgram program = c.getCourseUnitProgram();
if(clearedCourseUnit.isClear((UserSessionImpl) usession,CourseUnitImpl.CourseUnitClearancesOperation.PROGRAM_CAN_VALIDATE.name()))
{
clearedCourseUnit.setValidProgram(true);
}
 
}
 
public void invalidate(Long courseUnitId, UserSession usession, CourseUnitImpl clearedCourseUnit) throws ServiceException, TransformerException, IOException, FOPException {
 
if(clearedCourseUnit.isClear((UserSessionImpl) usession,CourseUnitImpl.CourseUnitClearancesOperation.PROGRAM_CAN_VALIDATE.name()))
{
clearedCourseUnit.setValidProgram(false);
}
 
}
 
public CourseUnitProgramView run(CourseUnitProgramView cupv, Long coursUnitId, UserSession usession, CourseUnitImpl clearedCourseUnit) throws ServiceException, TransformerException, IOException, FOPException {
 
//CourseUnit cProxy = DaoFactory.getCourseUnitDaoImpl().get(coursUnitId);
 
 
//Ja vem do filtro isto feito
// clearedCourseUnit.initClearances((UserSessionImpl) usession,true);
 
CourseUnitProgram program = clearedCourseUnit.getCourseUnitProgram();
if(program == null)
{
program = new CourseUnitProgramImpl();
DaoFactory.getCourseUnitProgramDaoImpl().save(program);
program.setCourseUnitProgramPart2(new CourseUnitProgramPart2Impl());
DaoFactory.getCourseUnitProgramPart2DaoImpl().save(program.getCourseUnitProgramPart2());
c.setCourseUnitProgram(program);
clearedCourseUnit.setCourseUnitProgram(program);
}
//
if(usession.getUser().isSuperuserOrAdmin())
//if(usession.getUser().isSuperuserOrAdmin())
 
if(clearedCourseUnit.isClear((UserSessionImpl) usession,CourseUnitImpl.CourseUnitClearancesOperation.PROGRAM_TEACHER_PART.name()))
//if(usession.getUser() instanceof Teacher && (((Teacher)(usession.getUser())).isTeacherOfCourseUnit(c.getId(),true)))
{
cupv.persistViewInObjectAdministrator(program);
cupv.persistViewInObjectCoordinator(program);
cupv.persistViewInObjectTeacher(program);
setResponsableTeacher(cupv, c);
}
if(usession.getUser() instanceof Teacher && (((Teacher)(usession.getUser())).isTeacherOfCourseUnit(c.getId(),true)))
if(clearedCourseUnit.isClear((UserSessionImpl) usession,CourseUnitImpl.CourseUnitClearancesOperation.PROGRAM_COORDINATOR_PART.name()))
{
cupv.persistViewInObjectTeacher(program);
}
if(usession.getUser() instanceof Teacher
&& (((usession.getUser())).hasRole(c.getCourse().getValidationRole())
||
((usession.getUser()) == c.getCourse().getCoordinator()))
)
{
cupv.persistViewInObjectCoordinator(program);
setResponsableTeacher(cupv, c);
setResponsableTeacher(cupv, clearedCourseUnit);
}
 
List<String> errors = new ArrayList<String>();
createPdf(c,errors,usession);
createPdf(clearedCourseUnit,errors,usession);
 
if(usession.getUser() instanceof Teacher)
DirectedCoordinatedUnitsService.sendNotificationsEditedInterestedPeople(c,usession);
DirectedCoordinatedUnitsService.sendNotificationsEditedInterestedPeople(clearedCourseUnit,usession);
else
{
logger.info("Nao vai informar docentes");
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitService.java
40,6 → 40,11
public CourseUnitView run(long id, boolean initTeachers, boolean initStudents, boolean initBlog, UserSession userSession) throws ServiceException
{
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(id);
return runCleared(id,initTeachers,initStudents,initBlog,userSession,DaoFactory.getCourseUnitDaoImpl().narrow(c));
}
 
public CourseUnitView runCleared(long id, boolean initTeachers, boolean initStudents, boolean initBlog, UserSession userSession,CourseUnit c) throws ServiceException
{
c.setCourseUnitEvaluation(DaoFactory.getCourseUnitEvaluationDaoImpl().narrow(c.getCourseUnitEvaluation()));
c.setCourseUnitProgram(DaoFactory.getCourseUnitProgramDaoImpl().narrow(c.getCourseUnitProgram()));
 
77,10 → 82,10
}
 
 
public CourseUnitView loadCourseUnitViewAndCourse(long id, boolean initTeachers, boolean initStudents, boolean initBlog, boolean initCourseView, UserSession userSession) throws ServiceException
public CourseUnitView loadCourseUnitViewAndCourse(long id, boolean initTeachers, boolean initStudents, boolean initBlog, boolean initCourseView, UserSession userSession,CourseUnitImpl clearedUnit) throws ServiceException
{
 
CourseUnitView cV = run(id,initTeachers,initStudents,initBlog,userSession);
CourseUnitView cV = runCleared(id, initTeachers, initStudents, initBlog, userSession, clearedUnit);
if(initCourseView)
{
CourseView coV = new CourseView(cV.getCourseUnit().getCourse());
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courseunits/DirectedCoordinatedUnitsService.java
346,15 → 346,17
int counter = 0;
for(CourseUnitView courseUnitView: views)
{
if(courseUnitView != null && courseUnitView.getId()>0)
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().load(courseUnitView.getId());
 
//EVALUATION OPEN BY ADMIN
if(courseUnitView.isEvaluationOpenByAdmin() != courseUnit.isEvaluationOpenByAdmin())
courseUnit.setEvaluationOpenByAdmin(courseUnitView.isEvaluationOpenByAdmin());
 
 
 
if(courseUnitView != null && courseUnitView.getId()>0)
{
if(courseUnitView.getProgramStreamId() != null && courseUnitView.getProgramStreamId().length() > 0)
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().load(courseUnitView.getId());
 
if(usession.getUser().isAdmin() || usession.getUser().hasRole("courseValidatePrograms") || usession.getUser().hasRole(courseUnit.getCourse().getValidationRole()))
{
if(courseUnit.isValidProgram() != courseUnitView.isValidProgram())
/branches/v3/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpService.java
1,6 → 1,7
package pt.estgp.estgweb.services.ftpservices;
 
import jomm.utils.DesUtils;
import jomm.utils.DiacriticFilter;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
126,7 → 127,8
}
 
logger.info("trying to import file: " + name);
if(!client.storeFile(name,item.getInputStream()))
//client.setControlEncoding("ISO-8859-1");
if(!client.storeFile(DiacriticFilter.stripAccents(name),item.getInputStream()))
result = "errors.ftp.no.permission";
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitProgramView.java
58,6 → 58,11
 
public void persistViewInObjectTeacher(CourseUnitProgram c)
{
c.getCourseUnitProgramPart2().setObjectivos(courseUnitProgram.getCourseUnitProgramPart2().getObjectivos());
c.setPrerequisitos(courseUnitProgram.getPrerequisitos());
c.setLingua1(courseUnitProgram.getLingua1());
c.setLingua2(courseUnitProgram.getLingua2());
 
c.getCourseUnitProgramPart2().setAvaliacaoOrdinariosFrequencia(courseUnitProgram.getCourseUnitProgramPart2().getAvaliacaoOrdinariosFrequencia());
c.getCourseUnitProgramPart2().setAvaliacaoOrdinariosExame(courseUnitProgram.getCourseUnitProgramPart2().getAvaliacaoOrdinariosExame());
c.getCourseUnitProgramPart2().setAvaliacaoEspeciaisFrequencia(courseUnitProgram.getCourseUnitProgramPart2().getAvaliacaoEspeciaisFrequencia());
77,10 → 82,6
 
public void persistViewInObjectCoordinator(CourseUnitProgram c)
{
c.getCourseUnitProgramPart2().setObjectivos(courseUnitProgram.getCourseUnitProgramPart2().getObjectivos());
c.setPrerequisitos(courseUnitProgram.getPrerequisitos());
c.setLingua1(courseUnitProgram.getLingua1());
c.setLingua2(courseUnitProgram.getLingua2());
 
c.setEcts(courseUnitProgram.getEcts());
c.setCargaHorariaTotal(courseUnitProgram.getCargaHorariaTotal());
96,21 → 97,8
 
public void persistViewInObjectAdministrator(CourseUnitProgram c)
{
 
c.getCourseUnitProgramPart2().setObjectivos(courseUnitProgram.getCourseUnitProgramPart2().getObjectivos());
c.setPrerequisitos(courseUnitProgram.getPrerequisitos());
c.setLingua1(courseUnitProgram.getLingua1());
c.setLingua2(courseUnitProgram.getLingua2());
 
c.setEcts(courseUnitProgram.getEcts());
c.setCargaHorariaTotal(courseUnitProgram.getCargaHorariaTotal());
c.setCargaHorariaT(courseUnitProgram.getCargaHorariaT());
c.setCargaHorariaTP(courseUnitProgram.getCargaHorariaTP()) ;
c.setCargaHorariaPL(courseUnitProgram.getCargaHorariaPL());
c.setCargaHorariaTC(courseUnitProgram.getCargaHorariaTC());
c.setCargaHorariaO(courseUnitProgram.getCargaHorariaO());
c.setCargaHorariaS(courseUnitProgram.getCargaHorariaS());
c.setCargaHorariaOT(courseUnitProgram.getCargaHorariaOT());
persistViewInObjectCoordinator(c);
persistViewInObjectTeacher(c);
}
 
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/DomainObjectFactory.java
411,4 → 411,8
public static QuestionarioPedagogicoAlunoRequisitadoImpl createQuestionarioPedagogicoAlunoRequisitadoImpl() {
return new QuestionarioPedagogicoAlunoRequisitadoImpl();
}
 
public static ConfigurationImpl createConfigurationImpl() {
return new ConfigurationImpl();
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
360,16 → 360,25
|| usession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_ALL.name(),usession);
s.addClearance(CourseUnitClearancesOperation.PROGRAM_CAN_VALIDATE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.PROGRAM_TEACHER_PART.name(),usession);
s.addClearance(CourseUnitClearancesOperation.PROGRAM_COORDINATOR_PART.name(),usession);
}
 
if(usession.getUser() != null && usession.getUser() instanceof Teacher)
{
Teacher t = ((Teacher)(usession.getUser()));
boolean teacher = ((Teacher)(usession.getUser())).isTeacherOfCourseUnit(c.getId(),true);
boolean responsable = c.getResponsableTeacher()!=null && usession.getUser().getId() == c.getResponsableTeacher().getId();
boolean isCoordinator = (c.getCourse().getCoordinator() != null && t.getId() == c.getCourse().getCoordinator().getId()) || (c.getCourse().getValidationRole() != null && t.hasRole(c.getCourse().getValidationRole()));
if(teacher)
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_TEACHER.name(), usession);
}
if(responsable)
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_RESP_TEACHER.name(), usession);
}
if(teacher || responsable)
{
//s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_TEACHER.name(), usession);
381,37 → 390,52
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_COMPLETE.name(),usession);
}
}
}
 
if(usession.getUser() != null && usession.getUser() instanceof Teacher
&& (((usession.getUser())).hasRole(c.getCourse().getValidationRole())
||
((usession.getUser()) == c.getCourse().getCoordinator()))
)
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_COMMISSION.name(), usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITION.name(), usession);
if(active && isEdit)
if(isCoordinator)
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_COMISSION_PART.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_COMPLETE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_CLOSE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.PROGRAM_CAN_VALIDATE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_COMMISSION.name(), usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITION.name(), usession);
if(active && isEdit)
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_COMISSION_PART.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_COMPLETE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_CLOSE.name(),usession);
}
else if(active && isComplete)
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_COMISSION_PART.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_CLOSE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_EDIT.name(),usession);
}
else if(active && isClosed)
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_EDIT.name(),usession);
}
}
else if(active && isComplete)
 
 
if(!c.isValidProgram())
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_COMISSION_PART.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_CLOSE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_EDIT.name(),usession);
if(teacher)
s.addClearance(CourseUnitClearancesOperation.PROGRAM_TEACHER_PART.name(), usession);
if(isCoordinator)
{
s.addClearance(CourseUnitClearancesOperation.PROGRAM_TEACHER_PART.name(), usession);
s.addClearance(CourseUnitClearancesOperation.PROGRAM_COORDINATOR_PART.name(), usession);
}
}
else if(active && isClosed)
else
{
s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_EDIT.name(),usession);
s.addClearance(CourseUnitClearancesOperation.PROGRAM_INFO_VALID_NOT_ACTIVE.name(), usession);
}
 
}
 
c.setClearanceRuledSupport(s);
}
 
441,6 → 465,12
EVALUATION_INFO_USER_RESP_TEACHER, //INFO CLEARANCE
EVALUATION_INFO_USER_COMMISSION, //INFO CLEARANCE
 
 
PROGRAM_COORDINATOR_PART,
PROGRAM_TEACHER_PART,
PROGRAM_CAN_VALIDATE,
PROGRAM_INFO_VALID_NOT_ACTIVE
 
;
 
public static CourseUnitClearancesOperation parse(String clearance)
/branches/v3/impl/src/java/pt/estgp/estgweb/filters/filters/CourseUnitProgramClearancesFilter.java
New file
0,0 → 1,35
package pt.estgp.estgweb.filters.filters;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.CourseUnitImpl;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
 
/**
* @author Jorge Machado
* @date 4/Jun/2008
* @see pt.estgp.estgweb.filters.filters
*/
public class CourseUnitProgramClearancesFilter extends LoadControlFilter
{
private static final Logger logger = Logger.getLogger(CourseUnitProgramClearancesFilter.class);
public static final String COURSEUNIT_PROGRAM_CLEARED_SERV_PARAM = "COURSEUNIT_PROGRAM_CLEARED_SERV_PARAM";
 
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception
{
UserSessionImpl usession = (UserSessionImpl) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY);
 
Long unitId = (Long) request.getServiceParameters().getParameter((String) filterParameters.parametersArray()[0]);
CourseUnitImpl c = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().get(unitId);
 
c.initClearances(usession,true);
 
request.getServiceParameters().addParameter(COURSEUNIT_PROGRAM_CLEARED_SERV_PARAM,c);
}
}
Property changes:
Added: svn:executable
+ *
/branches/v3/impl/src/java/pt/estgp/estgweb/web/tags/NotOwnerTag.java
New file
0,0 → 1,98
package pt.estgp.estgweb.web.tags;
 
import org.apache.log4j.Logger;
import org.apache.struts.util.RequestUtils;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.IOwned;
import pt.estgp.estgweb.domain.UserSessionImpl;
 
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
 
public class NotOwnerTag extends BodyTagSupport
{
 
private static final Logger logger = Logger.getLogger(NotOwnerTag.class);
 
private String name;
 
private String property;
 
private String valid;
 
public String getName()
{
return name;
}
 
public void setName(String name)
{
this.name = name;
}
 
public String getProperty()
{
return property;
}
 
public void setProperty(String property)
{
this.property = property;
}
 
 
public String getValid()
{
return valid;
}
 
public void setValid(String valid)
{
this.valid = valid;
}
 
public int doStartTag() throws JspException
{
if (go())
{
return EVAL_BODY_TAG;
}
else
return SKIP_BODY;
}
 
public boolean go() throws JspException
{
 
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY);
 
IOwned owned = (IOwned) RequestUtils.lookup(pageContext, name, property, null);
return !(owned != null && userSession.getUser() != null && (owned.isOwnedBy(userSession.getUser(),false) || (userSession.getUser()).isSuperuserOrAdmin()));
 
}
 
public int doEndTag() throws JspException
{
if(go())
{
String toPage = bodyContent.getString().trim();
JspWriter writer = pageContext.getOut();
try
{
writer.write(toPage);
}
catch (Exception e)
{
logger.error(e, e);
throw new JspException(e);
}
}
 
// Continue processing this page
return EVAL_PAGE;
}
 
 
}
Property changes:
Added: svn:executable
+ *
/branches/v3/impl/src/java/pt/estgp/estgweb/web/tags/NotClearOperationTag.java
61,7 → 61,16
{
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest((HttpServletRequest) pageContext.getRequest());
ClearanceRuled ruledObj = (ClearanceRuled) RequestUtils.lookup(pageContext, name, property, null);
return !ruledObj.isClear(userSession,op);
 
String[] ops = op.split(",");
for(String opSub: ops)
{
if(ruledObj.isClear(userSession,opSub))
{
return false;
}
}
return true;
}
 
public int doEndTag() throws JspException
/branches/v3/impl/src/java/pt/estgp/estgweb/web/LayoutProxy.java
1,16 → 1,16
package pt.estgp.estgweb.web;
 
import jomm.web.utils.NavPlace;
import org.apache.log4j.Logger;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.net.URLEncoder;
 
import jomm.web.utils.NavPlace;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
54,7 → 54,9
{
try
{
getServletContext().getRequestDispatcher("/layout.do?server=" + server + "&path=" + path + "&layout=" + layout + "&" + request.getQueryString()).forward(request,response);
//Aqui temos de codificar em UTf-8 porque estamos dentro da máquina em UTF-8
//Tem de ser com o URLEncoder e não com o URIUtil porque o URLEncoder trabalha com o + e o URIUtil apenas trabalha com diacriticos
getServletContext().getRequestDispatcher("/layout.do?server=" + server + "&path=" + URLEncoder.encode(path, "UTF-8") + "&layout=" + layout + "&" + request.getQueryString()).forward(request, response);
}
catch(FileNotFoundException e)
{
/branches/v3/impl/src/java/pt/estgp/estgweb/web/form/configuration/ConfigurationsForm.java
New file
0,0 → 1,52
package pt.estgp.estgweb.web.form.configuration;
 
import pt.estgp.estgweb.domain.Configuration;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.web.form.ApplicationForm;
 
/**
* @author Jorge Machado
* @date 25/Jun/2008
* @see pt.estgp.estgweb.web.form.courses
*/
public class ConfigurationsForm extends ApplicationForm
{
 
private String dispatch;
private long id;
private Configuration configuration;
 
 
public ConfigurationsForm()
{
 
}
 
public Configuration getConfiguration() {
if(configuration == null)
configuration = DomainObjectFactory.createConfigurationImpl();
return configuration;
}
 
public void setConfiguration(Configuration configuration) {
this.configuration = configuration;
}
 
public String getOp() {
return dispatch;
}
 
public void setOp(String dispatch) {
this.dispatch = dispatch;
}
 
 
 
public long getId() {
return id;
}
 
public void setId(long id) {
this.id = id;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/web/FtpManager.java
57,7 → 57,7
InputStream stream = item.getInputStream();
if (item.isFormField())
{
request.setAttribute(item.getFieldName(), item.getString());
request.setAttribute(item.getFieldName(), new String(item.getString().getBytes("ISO-8859-1")));
}
if (stream != null && item.getSize() > 0 && item.getName() != null)
{
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsProgramController.java
35,6 → 35,54
 
 
 
public ActionForward validateProgram(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable {
 
CourseUnitProgramForm cUF = (CourseUnitProgramForm) form;
 
long id = cUF.getCourseUnitId();
if(id <= 0)
id = cUF.getCourseUnitView().getId();
 
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{id};
String[] names = new String[]{"unitId"};
sm.execute(RequestUtils.getRequester(request, response), "ValidateCourseUnitProgram", args,names);
 
return saveProgram(mapping,
form,
request,
response);
 
}
 
public ActionForward invalidateProgram(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable {
 
CourseUnitProgramForm cUF = (CourseUnitProgramForm) form;
 
long id = cUF.getCourseUnitId();
if(id <= 0)
id = cUF.getCourseUnitView().getId();
 
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{id};
String[] names = new String[]{"unitId"};
sm.execute(RequestUtils.getRequester(request, response), "InvalidateCourseUnitProgram", args,names);
 
return editProgram(mapping,
form,
request,
response);
 
}
 
public ActionForward editProgram(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/configuration/ConfigurationsController.java
New file
0,0 → 1,151
package pt.estgp.estgweb.web.controllers.configuration;
 
import jomm.dao.impl.AbstractDao;
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.ConfigurationGradesEpocaAvaliacao;
import pt.estgp.estgweb.domain.ConfigurationGradesStatusEpoca;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.configuration.ConfigurationGradesForm;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class ConfigurationsController extends ApplicationDispatchController
{
 
private static final Logger logger = Logger.getLogger(ConfigurationsController.class);
 
 
 
public ActionForward saveGrades(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
 
ConfigurationGradesForm f = (ConfigurationGradesForm) form;
AbstractDao.getCurrentSession().beginTransaction();
for(ConfigurationGradesEpocaAvaliacao a: f.getConfigurationGrades().getEpocasAvaliacao())
{
if(a.getId() > 0)
{
ConfigurationGradesEpocaAvaliacao persist = DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().load(a.getId());
persist.setCodigoEpoca(a.getCodigoEpoca());
persist.setCodigoMomento(a.getCodigoMomento());
persist.setObs(a.getObs());
persist.setDescricao(a.getDescricao());
}
}
 
for(ConfigurationGradesStatusEpoca a: f.getConfigurationGrades().getStatusEpocas())
{
if(a.getId() > 0)
{
ConfigurationGradesStatusEpoca persist = DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().load(a.getId());
persist.setStatus(a.getStatus());
persist.setObs(a.getObs());
persist.setDescricao(a.getDescricao());
}
}
AbstractDao.getCurrentSession().getTransaction().commit();
 
return mapping.findForward("grades");
}
 
public ActionForward addEpocaAvaliacao(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
AbstractDao.getCurrentSession().beginTransaction();
 
ConfigurationGradesEpocaAvaliacao epoca = DomainObjectFactory.createConfigurationGradesEpocaAvaliacaoImpl();
DaoFactory.getConfigurationDaoImpl().load().getConfigurationGrades().getEpocasAvaliacao().add(epoca);
DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().save(epoca);
AbstractDao.getCurrentSession().getTransaction().commit();
return mapping.findForward("grades");
}
 
public ActionForward addSatusEpoca(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
AbstractDao.getCurrentSession().beginTransaction();
ConfigurationGradesStatusEpoca status = DomainObjectFactory.createConfigurationGradesStatusEpocaImpl();
DaoFactory.getConfigurationDaoImpl().load().getConfigurationGrades().getStatusEpoca().add(status);
DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().save(status);
AbstractDao.getCurrentSession().getTransaction().commit();
return mapping.findForward("grades");
}
 
public ActionForward deleteEpocaAvaliacao(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
ConfigurationGradesForm f = (ConfigurationGradesForm) form;
AbstractDao.getCurrentSession().beginTransaction();
DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().delete(f.getId());
AbstractDao.getCurrentSession().getTransaction().commit();
return mapping.findForward("grades");
}
 
public ActionForward deleteStatusEpoca(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
ConfigurationGradesForm f = (ConfigurationGradesForm) form;
 
AbstractDao.getCurrentSession().beginTransaction();
DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().delete(f.getId());
AbstractDao.getCurrentSession().getTransaction().commit();
return mapping.findForward("grades");
}
 
}
Property changes:
Added: svn:executable
+ *
/branches/v3/impl/src/java/pt/estgp/estgweb/web/filters/RequestURLFilter.java
1,12 → 1,9
package pt.estgp.estgweb.web.filters;
 
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.web.utils.RequestUtils;
import org.apache.commons.httpclient.util.URIUtil;
 
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.io.IOException;
 
/**
43,13 → 40,15
String relativePath = hrequest.getServletPath();
if (relativePath == null)
relativePath = "";
else
relativePath = URIUtil.encodePath(relativePath, "ISO-8859-1");
 
if (hrequest.getPathInfo() != null && hrequest.getPathInfo().length() > 0)
{
relativePath += hrequest.getPathInfo();
relativePath += URIUtil.encodePath(hrequest.getPathInfo(), "ISO-8859-1");
}
if(hrequest.getQueryString() != null && hrequest.getQueryString().length()>0)
relativePath += "?" + hrequest.getQueryString();
relativePath += "?" + URIUtil.encodePath(hrequest.getQueryString(), "ISO-8859-1");
 
 
String url = relativePath;
/branches/v3/impl/src/web/admin/profile/menu.jsp
31,12 → 31,22
<li>
<html:link action="/user/startProfile"><bean:message key="profile.home"/></html:link>
</li>
<li>
 
<baco:hasRole role="admin,services">
<html:link action="/user/startChangeProfile?id=${ProfileForm.userView.id}"><bean:message key="profile.personal.data"/></html:link>
<li>
<html:link action="/user/startChangeProfile?id=${ProfileForm.userView.id}"><bean:message key="profile.personal.data"/></html:link>
</li>
</baco:hasRole>
</li>
 
 
<baco:isModuleOn module="profile">
<baco:hasNotRole role="admin,services">
<logic:equal value="${ProfileForm.userView.id}" name="UserSession" property="user.id">
<li>
<html:link action="/user/startChangeProfile?id=${ProfileForm.userView.id}"><bean:message key="profile.personal.data"/></html:link>
</li>
</logic:equal>
</baco:hasNotRole>
<logic:equal value="${ProfileForm.userView.id}" name="UserSession" property="user.id">
<li>
<html:link action="/user/startProfileCurriculum"><bean:message key="profile.curriculum"/></html:link>
/branches/v3/impl/src/web/admin/profile/profilePersonalData.jsp
173,6 → 173,25
}
%>
 
<div class="form-group">
<div class="control-label col-sm-2"> Papeis atribuidos: </div>
<div class="col-sm-6">
<logic:present name="ProfileForm" property="selectedRoles">
<logic:notEmpty name="ProfileForm" property="selectedRoles">
<div class="list-group">
<logic:iterate id="item" name="ProfileForm" property="selectedRoles">
<div class="list-group-item">
<bean:message key="user.role.${item}"/>
</div>
</logic:iterate>
</div>
</logic:notEmpty>
</logic:present>
</div>
</div>
 
 
 
</baco:isNotAdmin>
<baco:isAdmin>
<div class="form-group">
/branches/v3/impl/src/web/admin/profile/findUser.jsp
9,51 → 9,56
 
<%UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response);%>
<jomm:messages/>
<html:form action="/user/profileFromSearchUsers?separator=4&amp;from=ServiceZone">
<input type="hidden" name="dispatch" value="search">
<div class="panel panel-default">
<div class="panel-body">
<html:form styleClass="form-horizontal" action="/user/profileFromSearchUsers?separator=4&amp;from=ServiceZone">
<input type="hidden" name="dispatch" value="search">
 
<table class="form">
<tr>
<th>
<bean:message key="profile.search.user"/>
</th>
<td>
<html:text property="textToSearch" maxlength="50"/>
</td>
<td>
<html:select property="typeToSearch">
<html:option value="<%=(UserImpl.class).getName()%>"><bean:message key="user"/></html:option>
<html:option value="<%=(StudentImpl.class).getName()%>"><bean:message key="student"/></html:option>
<html:option value="<%=(TeacherImpl.class).getName()%>"><bean:message key="teacher"/></html:option>
</html:select>
</td>
<td>
<input type="button" onclick="set(this.form,'search');this.form.submit()" value="<bean:message key="search"/>">
</td>
</tr>
</table>
</html:form>
<logic:present name="ProfileForm" property="usersFind">
<table class="dataTable">
<tr>
<th><bean:message key="profile.siges.student.code"/></th>
<th><bean:message key="username"/> </th>
<th><bean:message key="name"/> </th>
<th><bean:message key="email"/></th>
<th></th>
<th></th>
</tr>
<div class="form-group">
<label class="control-label col-sm-2"><bean:message key="profile.search.user"/></label>
<div class="col-sm-4">
<html:text styleClass="form-control" property="textToSearch" maxlength="250"/>
</div>
<div class="col-sm-2">
<html:select styleClass="form-control" property="typeToSearch">
<html:option value="<%=(UserImpl.class).getName()%>"><bean:message key="user"/></html:option>
<html:option value="<%=(StudentImpl.class).getName()%>"><bean:message key="student"/></html:option>
<html:option value="<%=(TeacherImpl.class).getName()%>"><bean:message key="teacher"/></html:option>
</html:select>
</div>
<div class="col-sm-2">
<input class="btn btn-default" type="button" onclick="set(this.form,'search');this.form.submit()" value="<bean:message key="search"/>">
</div>
</div>
</html:form>
 
<logic:iterate id="userView" name="ProfileForm" property="usersFind" type="pt.estgp.estgweb.domain.views.UserView">
<tr>
<td>${userView.code}</td>
<td>${userView.username}</td>
<td>${userView.name}</td>
<td>${userView.email}</td>
<td><html:link action="/user/startProfileFromSearchUsers?id=${userView.id}"><bean:message key="edit"/></html:link></td>
<td><a href="<%=request.getContextPath()%>/user/startDeleteProfileFromSearchUsers.do?id=${userView.id}" onclick="return confirm('<bean:message key="profile.confirm.delete"/>')"><bean:message key="delete"/></a></td>
<td></td>
</tr>
</logic:iterate>
</table>
</logic:present>
<logic:present name="ProfileForm" property="usersFind">
<table class="tablesorterfiltered">
<thead>
<tr>
<th><bean:message key="profile.siges.student.code"/></th>
<th><bean:message key="username"/> </th>
<th><bean:message key="name"/> </th>
<th><bean:message key="email"/></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<logic:iterate id="userView" name="ProfileForm" property="usersFind" type="pt.estgp.estgweb.domain.views.UserView">
<tr>
<td>${userView.code}</td>
<td>${userView.username}</td>
<td>${userView.name}</td>
<td>${userView.email}</td>
<td><html:link action="/user/startProfileFromSearchUsers?id=${userView.id}"><bean:message key="edit"/></html:link></td>
<td><a href="<%=request.getContextPath()%>/user/startDeleteProfileFromSearchUsers.do?id=${userView.id}" onclick="return confirm('<bean:message key="profile.confirm.delete"/>')"><bean:message key="delete"/></a></td>
<td></td>
</tr>
</logic:iterate>
</tbody>
</table>
</logic:present>
</div>
</div>
 
/branches/v3/impl/src/web/admin/configuration/taskLog.jsp
132,7 → 132,8
 
if(data.progress >= 100 && startStatus != data.status)
{
window.location.href = $("#<%=logid%>").closest('.task-log').data("href");
if($("#<%=logid%>").closest('.task-log').length > 0)
window.location.href = $("#<%=logid%>").closest('.task-log').data("href");
}
});
 
270,6 → 271,7
line-height: 1.2;
white-space: pre-wrap;
font-family: monospace;
font-size: 0.7em;
}
</style>
<script>
/branches/v3/impl/src/web/admin/configuration/grades.jsp
10,7 → 10,7
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib prefix="hmlt" uri="http://jakarta.apache.org/struts/tags-html" %>
 
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<jomm:messages/>
<html:errors/>
/branches/v3/impl/src/web/admin/configuration/configs.jsp
New file
0,0 → 1,40
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.Configuration" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.web.form.configuration.ConfigurationsForm" %>
<%@ 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-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
 
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<jomm:messages/>
<html:errors/>
 
<%
 
AbstractDao.getCurrentSession().beginTransaction();
 
Configuration configuration = DaoFactory.getConfigurationDaoImpl().load();
%>
 
<html:form action="/admin/setConfigurations">
<jsp:useBean id="ConfigurationsForm" type="pt.estgp.estgweb.web.form.configuration.ConfigurationsForm" scope="request"/>
<%
ConfigurationsForm.setConfiguration(configuration);
%>
Ano de Interface : <html:text property="configuration.interfaceImportYear"/>
Cursos Ficticios : <html:text property="configuration.cursosFicticios"/>
Ano em Avaliação : <html:text property="configuration.courseUnitEvaluationActiveYear"/>
Tipos de Cursos em Avaliação : <html:text property="configuration.courseUnitEvaluationActiveDegrees"/>
Cursos Ativos para Avaliação : <html:text property="configuration.courseUnitEvaluationActiveCourseIds"/>
Informação de Abertura da Intranet : <html:textarea property="configuration.openInfoIntranet"/>
</html:form>
 
<%
AbstractDao.getCurrentSession().getTransaction().commit();
%>
/branches/v3/impl/src/web/js/logtailer/logtail.js
88,7 → 88,7
}
 
if (o.lines){
self.idx = o.lines.length;
self.idx +=o.lines.length;
}
 
if (!self.paused){
/branches/v3/impl/src/web/layout/headerTools.jsp
71,6 → 71,22
$($(e.currentTarget).data("target")).toggleClass('fullscreen');
});
 
 
 
 
$('.confirmModalFunction').on('show.bs.modal', function(e) {
callbackscript = $(e.relatedTarget).data('script');
$(this).find('.btn-ok').unbind('click').click(
function(){
eval(callbackscript);
}
);
$(this).find('.ConfirmMessageToUser').html($(e.relatedTarget).data('message'));
});
 
 
 
 
});
</script>
<style>
99,6 → 115,28
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancelar</button>
<button class="btn btn-danger btn-ok">Sim</button>
</div>
</div>
</div>
</div>
 
 
<div class="modal fade confirmModalFunction" id="confirm-ModalFunction" tabindex="-1" role="dialog" >
<div class="modal-dialog" data-width="450" style="display: block; width: 450px; margin-top: 50px;" aria-hidden="false">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Tem a certeza que deseja efectuar a seguinte operação?</h4>
</div>
<div class="modal-body">
 
<p class="ConfirmMessageToUser">
 
</p>
 
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancelar</button>
<a class="btn btn-danger btn-ok">Sim</a>
</div>
</div>
/branches/v3/impl/src/web/layout/layout0ComLeft.jsp
New file
0,0 → 1,39
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ 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" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<html:html locale="true">
<head>
<title><bean:message key="site.title"/> - <tiles:getAsString name="title"/></title>
<jsp:include page="/layout/scripts.jsp"/>
</head>
<body id="public" onload="horizontal();" >
<!-- HEADER -->
<tiles:insert attribute="header"/>
<!-- SHORTCUTS MENU -->
<tiles:insert attribute="navigationTop"/>
 
<div class="container" style="padding-left: 0;padding-right: 0; padding-top: 20px; border-top: 1px solid #323431">
<!-- TOP NAV -->
<tiles:insert attribute="topnav"/>
<!-- BODY -->
<div class="row">
<div class="col-sm-2" style="margin-right: 0;padding-right: 0">
<tiles:insert attribute="navigation"/>
</div>
<div class="col-sm-10" style="border:1px solid black;margin-left: 0;padding-left: 0">
<tiles:insert attribute="body"/>
</div>
</div>
 
 
</div>
<!-- FOOTER -->
<tiles:insert attribute="footer"/>
 
</body>
</html:html>
/branches/v3/impl/src/web/public/index.jsp
25,6 → 25,24
});
</script>
 
 
 
 
<%
 
IServiceManager sm = ServiceManager.getInstance();
String subTarget = null;
String[] names = new String[]{};
Object[] args = new Object[]{Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS, subTarget,5};
List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request, response), "LoadTypeAnnouncements", args, names);
request.setAttribute("Banners", announcementViews);
 
if(announcementViews.size() > 0)
{
 
 
%>
 
<div class="row row-offcanvas row-offcanvas-left hidden-xs">
 
 
34,45 → 52,47
<button type="button" class="btn btn-primary btn-xs" data-toggle="offcanvas">Menu</button>
</p>-->
 
<div id="myCarousel" class="carousel" data-ride="carousel" data-interval="100000">
<div id="myCarousel" class="carousel" data-ride="carousel" data-interval="2000">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
<li data-target="#myCarousel" data-slide-to="1"></li>
<li data-target="#myCarousel" data-slide-to="2"></li>
<%
int i = 0;
%>
<logic:iterate id="banner" name="Banners" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<li data-target="#myCarousel" data-slide-to="<%=i%>" <%=i==0?"class=\"active\"":""%>></li>
<%
i++;
%>
</logic:iterate>
</ol>
 
 
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
 
<div class="item active">
<a href="www.estgp.pt"><img src="<%=request.getContextPath()%>/imgs/testes/bannerTesteEstg.jpg" alt="Chania" height="100%" width="100%"></a>
<div class="carousel-caption">
<h3>Chania</h3>
<p>The atmosphere in Chania has a touch of Florence and Venice.</p>
<%
i = 0;
%>
<logic:iterate id="banner" name="Banners" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<div class="item <%=i==0?"active":""%>">
<a href="${banner.url}"><img src="<%=request.getContextPath()%>/imageStream/${banner.bigImageId}" alt="${banner.title}" height="100%" width="100%"></a>
<baco:isOwner name="banner">
<div class="carousel-caption">
<a href="<%=request.getContextPath()%>/startLoadAnnouncement.do?id=${banner.id}" class="btn btn-default">EDITAR</a>
</div>
</baco:isOwner>
<baco:isNotOwner name="banner">
<baco:hasRole role="admin,all,services">
<div class="carousel-caption">
<a href="<%=request.getContextPath()%>/startLoadAnnouncement.do?id=${banner.id}" class="btn btn-default">EDITAR</a>
</div>
</baco:hasRole>
</baco:isNotOwner>
</div>
</div>
<%
i++;
%>
</logic:iterate>
 
<div class="item">
<a href="www.estgp.pt"><img src="<%=request.getContextPath()%>/imgs/testes/bannerTesteEstg.jpg" alt="Chania" height="100%" width="100%"></a>
<div class="carousel-caption">
<h3>Chania</h3>
<p>The atmosphere in Chania has a touch of Florence and Venice.</p>
</div>
</div>
 
 
<div class="item">
<img src="<%=request.getContextPath()%>/imgs/testes/transferir.jpeg" alt="Chania" height="100%" width="100%">
<div class="carousel-caption">
<h3>Chania</h3>
<p>The atmosphere in Chania has a touch of Florence and Venice.</p>
</div>
</div>
 
 
 
</div>
 
<!-- Left and right controls -->
100,7 → 120,9
 
</div><!--/row-->
 
 
<%
}
%>
<%---
#####
##### NOTICIAS
/branches/v3/impl/src/web/public/courseunits/topnavCourseUnitTeacher.jsp
7,7 → 7,7
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("/startLoadCourseUnit.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.teachers");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/public/courseunits/topnavCourseUnitBlog.jsp
7,7 → 7,7
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("/startLoadCourseUnit.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "blog");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/public/courseunits/topnavCourseUnitStudent.jsp
7,7 → 7,7
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("/startLoadCourseUnit.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace("/startLoadCourseUnitStudents.do?courseUnitView.id=" + CourseUnitView.getId() ,"courseunit.students");
topNav.addNavPlace(null, "student");
%>
/branches/v3/impl/src/web/public/courseunits/topnavCourseUnitEvaluation.jsp
7,7 → 7,7
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("/startLoadCourseUnit.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.evaluation");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/public/courseunits/topnavCourseUnitStudents.jsp
4,10 → 4,11
<%@ 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("/startLoadCourseUnit.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.students");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/courses/directedCoordinatedCoursesCourseView.jsp
68,6 → 68,7
%>
<th>Docente</th>
<th class="filter-false" data-sorter="false">Ficha</th>
<th class="filter-false" data-sorter="false">Abrir Avaliação Extraordináriamente</th>
<th class="filter-false" data-sorter="false">Relatório</th>
</tr>
</thead>
111,6 → 112,11
<html:link styleClass="btn btn-small" action="/user/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><span class="glyphicon glyphicon-pencil"></span></html:link>
</baco:isAdmin>
</td>
<td class="icons" style="text-align: center; vertical-align: middle">
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms" >
<nested:checkbox styleClass="btn" property="evaluationOpenByAdmin"/>
</baco:hasRole>
</td>
<td class="icons">
<baco:isNotAdmin>
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
183,6 → 189,7
<th>Docente</th>
<th class="filter-false" data-sorter="false">Validar Ficha</th>
<th class="filter-false" data-sorter="false">Ficha</th>
<th class="filter-false" data-sorter="false">Abrir Avaliação Extraordináriamente</th>
<th class="filter-false" data-sorter="false">Relatório</th>
</tr>
</thead>
261,6 → 268,11
<html:link styleClass="btn btn-small" action="/user/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><span class="glyphicon glyphicon-pencil"></span></html:link>
</baco:isAdmin>
</td>
<td class="icons" style="text-align: center; vertical-align: middle">
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms" >
<nested:checkbox styleClass="btn" property="evaluationOpenByAdmin"/>
</baco:hasRole>
</td>
<td class="icons">
<baco:isNotAdmin>
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
329,6 → 341,7
<th>Docente</th>
<th class="filter-false" data-sorter="false">Validar Ficha</th>
<th class="filter-false" data-sorter="false">Ficha</th>
<th class="filter-false" data-sorter="false">Abrir Avaliação Extraordináriamente</th>
<th class="filter-false" data-sorter="false">Relatório</th>
</tr>
</thead>
407,6 → 420,11
<html:link styleClass="btn btn-small" action="/user/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><span class="glyphicon glyphicon-pencil"></span></html:link>
</baco:isAdmin>
</td>
<td class="icons" style="text-align: center; vertical-align: middle">
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms" >
<nested:checkbox styleClass="btn" property="evaluationOpenByAdmin"/>
</baco:hasRole>
</td>
<td class="icons">
<baco:isNotAdmin>
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
/branches/v3/impl/src/web/user/courseunits/topnavDossierTecnicoPedagogico.jsp
15,7 → 15,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.dossier.tecnico.pedagogico");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/courseunits/courseunitProgram.jsp
16,10 → 16,29
<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">
 
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="courseunit.program"/>
</div>
<div class="panel-body">
 
 
 
<html:errors/>
<jomm:messages/>
 
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_INFO_VALID_NOT_ACTIVE">
<div class="alert alert-warning">
O programa não está aberto para edição. A comissão de curso terá de invalidar o programa para que este possa ser alterado.
</div>
</baco:clearOperation>
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_CAN_VALIDATE">
<logic:equal name="CourseUnitView" property="validProgram" value="true">
<html:link styleClass="btn btn-warning" action="/user/invalidateAndLoadCourseUnitProgram?courseUnitId=${CourseUnitView.id}">Invalidar</html:link>
</logic:equal>
</baco:clearOperation>
 
<script>
//Manter a sessão activa para os docentes não perderem os dados
ping();
50,459 → 69,362
e.printStackTrace();
}
 
%>
 
 
 
%>
<div class="seccao">
<h2>
<bean:message key="courseunit.program"/>
</h2>
<baco:notClearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_COORDINATOR_PART">
<script>
$(document).ready(
function(){
$(".editCoordinatorPart *").prop('disabled',true);
 
<%
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;
}
);
</script>
</baco:notClearOperation>
<baco:notClearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_TEACHER_PART">
<script>
$(document).ready(
function(){
$(".editTeacherPart *").prop('disabled',true);
 
}
}
%>
 
 
<html:form action="/user/courseUnitProgramController">
}
);
</script>
</baco:notClearOperation>
<html:form styleId="ProgramForm" styleClass="form-horizontal" action="/user/courseUnitProgramController">
<input type="hidden" name="dispatch" value="saveProgram">
<html:hidden property="id"/>
<html:hidden property="courseUnitView.id"/>
 
<h3>Dados alterados pelo Coordenador de curso</h3>
<div class="editCoordinatorPart">
<div class="form-group">
<label class="control-label col-sm-3">
Importar programa a partir de outro ano
</label>
<div class="col-sm-3">
<select class="form-control col-sm-3" name="cloneFromUnitId">
<logic:iterate id="other" name="OtherYearUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView">
<option value="<%=other.getId()%>"><%=other.getImportYear()%> - <%=other.getSemestre()%></option>
</logic:iterate>
</select>
</div>
<div class="col-sm-3">
<input class="form-control" type="button" value="Clonar a partir deste programa" onclick="if(confirm('<bean:message key="courseunit.confirmaclonagem"/>')){set(form,'cloneProgram');form.submit()}"/>
</div>
</div>
</div>
<div class="alert alert-info">
 
<%
 
if(editCoordinatorPart)
{
%>
<div>
Importar programa a partir de outro ano
<select name="cloneFromUnitId">
<logic:iterate id="other" name="OtherYearUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView">
<option value="<%=other.getId()%>"><%=other.getImportYear()%> - <%=other.getSemestre()%></option>
</logic:iterate>
</select>
<input type="button" value="Clonar a partir deste programa" onclick="if(confirm('<bean:message key="courseunit.confirmaclonagem"/>')){set(form,'cloneProgram');form.submit()}"/>
<bean:message key="courseunit.consultaroutros"/>:
<logic:iterate id="other" name="OtherYearUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView">
<a href="<%=request.getContextPath()%>/repositoryStream/<%=other.getProgramStreamId()%>" target="_blank"> <%=other.getImportYear()%> - <%=other.getSemestre()%></a>
&nbsp;&nbsp;
</logic:iterate>
</div>
 
 
 
 
 
 
 
 
 
 
<%
}
%>
<table>
<tr>
<td colspan="<%=otherYearUnits.size()%>"><bean:message key="courseunit.consultaroutros"/> </td>
</tr>
<tr>
<logic:iterate id="other" name="OtherYearUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView">
<td>
<a href="<%=request.getContextPath()%>/repositoryStream/<%=other.getProgramStreamId()%>" target="_blank"> <%=other.getImportYear()%> - <%=other.getSemestre()%></a>
</td>
</logic:iterate>
 
</tr>
</table>
 
<table class="dataTable tableDisabled" width="100%">
 
<%--COORDENADOR--%>
<tr>
<th colspan="2">Dados alterados pelo Coordenador de curso</th>
</tr>
<%
 
if(editCoordinatorPart)
{
%>
 
<%// DADOS DE UNIDADE //%>
 
<tr>
<th>
<div class="editCoordinatorPart">
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.responsable"/>
</th>
<td>
<html:select property="courseUnitView.responsableId">
</label>
<div class="col-sm-10">
<html:select styleClass="form-control" property="courseUnitView.responsableId">
<html:option value="0"></html:option>
<logic:iterate id="teacher" name="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<html:option value="${teacher.id}">${teacher.name} (${teacher.code})</html:option>
</logic:iterate>
</html:select>
</td>
</tr>
</div>
</div>
<baco:isAdmin>
<tr>
<th>
<bean:message key="courseunit.teachers"/>
</th>
<td>
<logic:lessEqual value="0" name="CourseUnitView" property="id">
<i><bean:message key="courseunit.to.add.teachers.save.first"/></i>
</logic:lessEqual>
 
 
<html:select property="teacherId">
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.teachers"/>
</label>
<div class="col-sm-8">
<logic:lessEqual value="0" name="CourseUnitView" property="id">
<i><bean:message key="courseunit.to.add.teachers.save.first"/></i>
</logic:lessEqual>
<html:select styleClass="form-control" property="teacherId">
<logic:present name="CourseUnitProgramForm" property="teachers">
<logic:iterate id="teacher" name="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<jomm:option itemName="teacher" itemProperty="id" comparableObjectName="CourseUnitProgramForm"
comparableObjectProperty="teacherId">
${teacher.name} (${teacher.code})
</jomm:option>
<html:option value="${teacher.id}">${teacher.name} (${teacher.code})</html:option>
</logic:iterate>
<input type="button" value="<bean:message key="add"/>"
onclick="set(this.form,'addTeacher');this.form.submit();">
</logic:present>
</html:select>
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0">
<table class="dataTable removeButton">
</div>
<div class="col-sm-2">
<button class="form-control" type="button" onclick="set(this.form,'addTeacher');this.form.submit();">
<bean:message key="add"/>
</button>
</div>
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0">
<label class="col-sm-2">
 
</label>
<div class="col-sm-10">
<div class="list-group">
<logic:iterate id="userView" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<tr>
<th>
${userView.code}
</th>
<th>
${userView.name}
</th>
<td><input type="button" class="removeButton"
onclick="CourseUnitProgramForm.id.value='${userView.id}';set(this.form,'removeTeacher');this.form.submit();">
</td>
</tr>
<div class="list-group-item">
${userView.name} (${userView.code})
<button class="btn btn-danger btn-xs" type="button" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai remover o docente da unidade localmente, a sincronização com o sistema do IPP não voltará a colocar o docente neste unidade!! Tem a certeza que deseja prosseguir?" data-script="CourseUnitProgramForm.id.value='${userView.id}';set($('#ProgramForm').get(0),'removeTeacher');$('#ProgramForm').get(0).submit();">
<span class="glyphicon glyphicon-remove small"></span>
</button>
</div>
</logic:iterate>
</table>
</logic:greaterThan>
</td>
</tr>
</div>
</div>
</logic:greaterThan>
</div>
</baco:isAdmin>
<baco:isNotAdmin>
<logic:iterate id="prof" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<tr>
<th>
<bean:message key="courseunit.teachers"/>
</th>
<td>
${prof.name} (${prof.code})
</td>
</tr>
</logic:iterate>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.teachers"/>
</label>
<div class="col-sm-10">
<div class="list-group">
<logic:iterate id="prof" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<div class="list-group-item"> ${prof.name} (${prof.code})</div>
</logic:iterate>
</div>
</div>
</div>
</baco:isNotAdmin>
<%//TODO adicionar workflow e inicializações para a função addTeacher%>
 
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.ects.title"/>
</label>
<div class="col-sm-10">
<div>
<div class="form-group">
<label class="control-label col-sm-1">
<bean:message key="courseunit.program.ects"/>
</label>
<div class="col-sm-11">
<html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.ects"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-1">
<bean:message key="courseunit.program.ects.cargaHorariaTotal"/>
</label>
<div class="col-sm-11">
<html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaTotal"/>
</div>
</div>
</div>
<div>
<div class="form-group">
<div class="col-sm-12">
<table>
<tr>
<th><bean:message key="courseunit.program.cargaHorariaT"/></th>
<th><bean:message key="courseunit.program.cargaHorariaTP"/></th>
<th><bean:message key="courseunit.program.cargaHorariaPL"/></th>
<th><bean:message key="courseunit.program.cargaHorariaS"/></th>
<th><bean:message key="courseunit.program.cargaHorariaTC"/></th>
<th><bean:message key="courseunit.program.cargaHorariaO"/></th>
<th><bean:message key="courseunit.program.cargaHorariaOT"/></th>
</tr>
<tr>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaT"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaTP"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaPL"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaS"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaTC"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaO"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaOT"/></td>
</tr>
</table>
</div>
</div>
</div>
 
</div>
 
</div>
</div>
 
<h3>Dados alterados pelo Docente da Unidade</h3>
<div class="editTeacherPart">
<%//TODO adicionar workflow e inicializações para a função addTeacher%>
 
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.objectivos"/>
</label>
<div class="col-sm-10">
<html:textarea rows="10" styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.objectivos" />
</div>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.objectivos"/></td>
<td width="80%"><html:textarea property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.objectivos" style="width:100%;height:200px" /></td>
</tr>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.prerequisitos"/>
</label>
<div class="col-sm-10">
<html:textarea rows="10" styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.prerequisitos" />
</div>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.prerequisitos"/></td>
<td width="80%"><html:textarea property="courseUnitProgramView.courseUnitProgram.prerequisitos" style="width:100%;height:200px" /></td>
</tr>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.lingua1"/>
</label>
<div class="col-sm-10">
<html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.lingua1" />
</div>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.lingua1"/></td>
<td width="80%"><html:text property="courseUnitProgramView.courseUnitProgram.lingua1" style="width:100%" /></td>
</tr>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.lingua2"/>
</label>
<div class="col-sm-10">
<html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.lingua2" />
</div>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.lingua2"/></td>
<td width="80%"><html:text property="courseUnitProgramView.courseUnitProgram.lingua2" style="width:100%" /></td>
</tr>
 
 
<tr>
<td colspan="2"><bean:message key="courseunit.program.ects.title"/></td>
</tr>
 
<tr>
<td align="right"><bean:message key="courseunit.program.ects"/></td>
<td width="80%"><html:text property="courseUnitProgramView.courseUnitProgram.ects"/></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.ects.cargaHorariaTotal"/></td>
<td width="80%"><html:text property="courseUnitProgramView.courseUnitProgram.cargaHorariaTotal"/></td>
</tr>
<tr>
<td align="right"></td>
<td width="80%">
<table>
<tr>
<td><bean:message key="courseunit.program.cargaHorariaT"/></td>
<td><bean:message key="courseunit.program.cargaHorariaTP"/></td>
<td><bean:message key="courseunit.program.cargaHorariaPL"/></td>
<td><bean:message key="courseunit.program.cargaHorariaS"/></td>
<td><bean:message key="courseunit.program.cargaHorariaTC"/></td>
<td><bean:message key="courseunit.program.cargaHorariaO"/></td>
<td><bean:message key="courseunit.program.cargaHorariaOT"/></td>
</tr>
<tr>
<td><html:text property="courseUnitProgramView.courseUnitProgram.cargaHorariaT"/></td>
<td><html:text property="courseUnitProgramView.courseUnitProgram.cargaHorariaTP"/></td>
<td><html:text property="courseUnitProgramView.courseUnitProgram.cargaHorariaPL"/></td>
<td><html:text property="courseUnitProgramView.courseUnitProgram.cargaHorariaS"/></td>
<td><html:text property="courseUnitProgramView.courseUnitProgram.cargaHorariaTC"/></td>
<td><html:text property="courseUnitProgramView.courseUnitProgram.cargaHorariaO"/></td>
<td><html:text property="courseUnitProgramView.courseUnitProgram.cargaHorariaOT"/></td>
</tr>
</table>
 
 
</td>
</tr>
<!--Conteudos-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.conteudosProgramaticos"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.conteudos" />
</div>
</div>
 
<%
}
else
{
%>
<tr>
<th>
<bean:message key="courseunit.responsable"/>
</th>
<td>
${CourseUnitView.responsableTeacher.name} (${CourseUnitView.responsableTeacher.code})
</td>
</tr>
<logic:iterate id="prof" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<tr>
<th>
<bean:message key="courseunit.teachers"/>
</th>
<td>
${prof.name} (${prof.code})
</td>
</tr>
</logic:iterate>
<tr>
<td align="right"><bean:message key="courseunit.program.objectivos"/></td>
<td width="80%"><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.objectivos" style="width:100%;height:200px" /></td>
</tr>
<!--demonstracaoCoerenciaConteudos-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.demonstracaoCoerenciaConteudosObjectivos"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.demonstracaoCoerenciaConteudos" />
</div>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.prerequisitos"/></td>
<td width="80%"><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.prerequisitos" style="width:100%;height:200px" /></td>
</tr>
<!--metodologiasEnsino-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.metodologiasEnsino"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.metodologiasEnsino" />
</div>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.lingua1"/></td>
<td width="80%"><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.lingua1" style="width:100%" /></td>
</tr>
<!--demonstracaoObjectivosMetodologia-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.demonstracaoDaCoerenciaMetodologiasObjectivos"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.demonstracaoObjectivosMetodologia" />
</div>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.lingua2"/></td>
<td width="80%"><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.lingua2" style="width:100%" /></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.ects"/></td>
<td width="80%"><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.ects"/></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.ects.cargaHorariaTotal"/></td>
<td width="80%"><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.cargaHorariaTotal"/></td>
</tr>
<tr>
<td align="right"></td>
<td width="80%">
<table>
<tr>
<td><bean:message key="courseunit.program.cargaHorariaT"/></td>
<td><bean:message key="courseunit.program.cargaHorariaTP"/></td>
<td><bean:message key="courseunit.program.cargaHorariaPL"/></td>
<td><bean:message key="courseunit.program.cargaHorariaS"/></td>
<td><bean:message key="courseunit.program.cargaHorariaTC"/></td>
<td><bean:message key="courseunit.program.cargaHorariaO"/></td>
<td><bean:message key="courseunit.program.cargaHorariaOT"/></td>
</tr>
<tr>
<td><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.cargaHorariaT"/></td>
<td><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.cargaHorariaTP"/></td>
<td><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.cargaHorariaPL"/></td>
<td><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.cargaHorariaS"/></td>
<td><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.cargaHorariaTC"/></td>
<td><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.cargaHorariaO"/></td>
<td><html:text disabled="true" property="courseUnitProgramView.courseUnitProgram.cargaHorariaOT"/></td>
</tr>
</table>
<h4><bean:message key="courseunit.program.avaliacao"/></h4>
 
<!--avaliacaoOrdinariosFrequencia-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.alunosOrdinariosPorFrequencia"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoOrdinariosFrequencia" />
</div>
</div>
<!--avaliacaoOrdinariosExame-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.alunosOrdinariosPorExame"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoOrdinariosExame" />
</div>
</div>
<!--avaliacaoEspeciaisFrequencia-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoEspeciaisFrequencia" />
</div>
</div>
<!--avaliacaoEspeciaissExame-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorExame"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoEspeciaissExame" />
</div>
</div>
 
</td>
</tr>
<h4><bean:message key="courseunit.program.bibliografia"/></h4>
 
<%
}
if(editTeacherPart)
{
%>
<tr>
<th colspan="2">Dados alterados pelo Docente da Unidade</th>
</tr>
<!--bibliografia-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.bibliografiaPrincipal"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.bibliografia" />
</div>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.conteudosProgramaticos"/></td>
<td width="80%"><html:textarea property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.conteudos" style="width:100%;height:200px" /></td>
</tr>
<!--bibliografiaComplementar-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.bibliografiaComplementar"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.bibliografiaComplementar" />
</div>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.demonstracaoCoerenciaConteudosObjectivos"/></td>
<td width="80%"><html:textarea property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.demonstracaoCoerenciaConteudos" style="width:100%;height:200px" /></td>
</tr>
 
<tr>
<td align="right"><bean:message key="courseunit.program.metodologiasEnsino"/></td>
<td width="80%"><html:textarea property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.metodologiasEnsino" style="width:100%;height:200px" /></td>
</tr>
</div>
 
<tr>
<td align="right"><bean:message key="courseunit.program.demonstracaoDaCoerenciaMetodologiasObjectivos"/></td>
<td width="80%"><html:textarea property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.demonstracaoObjectivosMetodologia" style="width:100%;height:200px" /></td>
</tr>
 
<tr>
<td colspan="2"><bean:message key="courseunit.program.avaliacao"/></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.alunosOrdinariosPorFrequencia"/></td>
<td><html:textarea property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoOrdinariosFrequencia" style="width:100%;height:200px" /></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.alunosOrdinariosPorExame"/></td>
<td><html:textarea property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoOrdinariosExame" style="width:100%;height:200px" /></td>
</tr>
 
<tr>
<td align="right"><bean:message key="courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia"/></td>
<td><html:textarea property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoEspeciaisFrequencia" style="width:100%;height:200px" /></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorExame"/></td>
<td><html:textarea property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoEspeciaissExame" style="width:100%;height:200px" /></td>
</tr>
 
 
<tr>
<td colspan="2"><bean:message key="courseunit.program.bibliografia"/></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.bibliografiaPrincipal"/></td>
<td><html:textarea property="courseUnitProgramView.courseUnitProgram.bibliografia" style="width:100%;height:200px" /></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.bibliografiaComplementar"/></td>
<td><html:textarea property="courseUnitProgramView.courseUnitProgram.bibliografiaComplementar" style="width:100%;height:200px" /></td>
</tr>
<%
}
else
{
%>
<tr>
<th colspan="2">Dados alterados pelo Docente da Unidade</th>
</tr>
 
<tr>
<td align="right"><bean:message key="courseunit.program.conteudosProgramaticos"/></td>
<td width="80%"><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.conteudos" style="width:100%;height:200px" /></td>
</tr>
 
<tr>
<td align="right"><bean:message key="courseunit.program.demonstracaoCoerenciaConteudosObjectivos"/></td>
<td width="80%"><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.demonstracaoCoerenciaConteudos" style="width:100%;height:200px" /></td>
</tr>
 
<tr>
<td align="right"><bean:message key="courseunit.program.metodologiasEnsino"/></td>
<td width="80%"><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.metodologiasEnsino" style="width:100%;height:200px" /></td>
</tr>
 
<tr>
<td align="right"><bean:message key="courseunit.program.demonstracaoDaCoerenciaMetodologiasObjectivos"/></td>
<td width="80%"><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.demonstracaoObjectivosMetodologia" style="width:100%;height:200px" /></td>
</tr>
 
<tr>
<td colspan="2"><bean:message key="courseunit.program.avaliacao"/></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.alunosOrdinariosPorFrequencia"/></td>
<td><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoOrdinariosFrequencia" style="width:100%;height:200px" /></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.alunosOrdinariosPorExame"/></td>
<td><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoOrdinariosExame" style="width:100%;height:200px" /></td>
</tr>
 
<tr>
<td align="right"><bean:message key="courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia"/></td>
<td><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoEspeciaisFrequencia" style="width:100%;height:200px" /></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorExame"/></td>
<td><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoEspeciaissExame" style="width:100%;height:200px" /></td>
</tr>
 
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_TEACHER_PART,PROGRAM_COORDINATOR_PART">
<button class="btn btn-success" type="button" onclick="set(form,'saveProgram');form.submit()"><bean:message key="save"/></button>
</baco:clearOperation>
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_CAN_VALIDATE">
<logic:equal name="CourseUnitView" property="validProgram" value="false">
<button class="btn btn-success" type="button" onclick="set(form,'validateProgram');form.submit()">Salvar e Validar</button>
</logic:equal>
</baco:clearOperation>
 
<tr>
<td colspan="2"><bean:message key="courseunit.program.bibliografia"/></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.bibliografiaPrincipal"/></td>
<td><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.bibliografia" style="width:100%;height:200px" /></td>
</tr>
<tr>
<td align="right"><bean:message key="courseunit.program.bibliografiaComplementar"/></td>
<td><html:textarea disabled="true" property="courseUnitProgramView.courseUnitProgram.bibliografiaComplementar" style="width:100%;height:200px" /></td>
</tr>
<%
}
%>
 
 
<baco:canManage name="CourseUnitView">
<%--DOCENTE--%>
 
</baco:canManage>
<tr><td colspan="2"><input type="button" value="<bean:message key="confirm"/>" onclick="set(form,'saveProgram');form.submit()"/></td></tr>
 
</table>
 
 
</html:form>
 
</div>
</div>
</div>
 
 
</div><!--Panel body-->
</div><!--Panel-->
/branches/v3/impl/src/web/user/courseunits/topnavEvaluation.jsp
9,7 → 9,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.evaluation");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/courseunits/topnavCreateBlog.jsp
15,7 → 15,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "submit.blog");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/courseunits/topnavCreateAnnouncement.jsp
30,7 → 30,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "submit.announcement");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/courseunits/topnavLoadBlog.jsp
15,7 → 15,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "blog");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/courseunits/topnavCourseUnitProgram.jsp
5,9 → 5,9
<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("/user/startHome.do", "Home");
topNav.addNavPlace(null, "course", CourseUnitView.getCourseName());
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName());
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.program");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/courseunits/topnavLoadBlogMonth.jsp
11,7 → 11,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace("/user/startCourseUnitBlogFromHome.do?id="+BlogView.getId() + "&courseUnitView.id=" + CourseUnitView.getId(), "blog","(" + BlogView.getTitle() + ")");
topNav.addNavPlace(null, "month." + BlogView.getMonth() + ".year",""+ BlogView.getYear());
%>
/branches/v3/impl/src/web/user/courseunits/topnavLoadAnnouncement.jsp
15,7 → 15,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "announcement");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/ftpclient/ftpclient.jsp
3,6 → 3,7
<%@ page import="pt.estgp.estgweb.web.filters.RequestURLFilter" %>
<%@ page import="pt.estgp.estgweb.web.utils.DatesUtils" %>
<%@ page import="java.util.List" %>
<%@ page import="org.apache.commons.httpclient.util.URIUtil" %>
<%@ 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-bean.tld" prefix="bean" %>
136,236 → 137,239
else
{
%>
<div id="topnav">
<ul>
<%
<div id="topnav">
<ul>
<%
 
NavPlace upDir = null;
NavPlace upDir = null;
 
NavPlace rootPlace = new NavPlace("../","nav.place.root");
String root = "../";
if (navPlaces != null && navPlaces.size() > 1) //if there is only one will be null because is the actual place
{
root += navPlaces.get(0).getUrl(request);
}
else
{
root += "?" + NavPlace.getUrlQueryString(request);
}
if(navPlaces != null && navPlaces.size() > 0)
{
upDir = rootPlace;
%>
<li class="navPlace">
<a href="<%=root%>">
<bean:message key="nav.place.root"/>
</a> /
</li>
<%
}
else if(navPlaces == null)
{
%>
<%
}
else
{
%>
<li class="navPlace">
<bean:message key="nav.place.root"/>
</li>
<%
}
%>
<%
for (NavPlace navPlace : navPlaces)
{
if (navPlace.getUrl(request) == null)
NavPlace rootPlace = new NavPlace("../","nav.place.root");
String root = "../";
if (navPlaces != null && navPlaces.size() > 1) //if there is only one will be null because is the actual place
{
root += navPlaces.get(0).getUrl(request);
}
else
{
root += "?" + NavPlace.getUrlQueryString(request);
}
if(navPlaces != null && navPlaces.size() > 0)
{
upDir = rootPlace;
%>
<li class="navPlace">
<a href="<%=root%>">
<bean:message key="nav.place.root"/>
</a> /
</li>
<%
}
else if(navPlaces == null)
{
%>
<%
}
else
{
%>
<li class="navPlace">
<bean:message key="nav.place.root"/>
</li>
<%
}
%>
<%
for (NavPlace navPlace : navPlaces)
{
if (navPlace.getUrl(request) == null)
{
%>
<li class="navPlace">
<%=navPlace.getKey()%>
</li>
<%
}
else
{
%>
<li class="navPlace">
<%=navPlace.getKey()%>
</li>
<%
}
else
{
upDir = navPlace;
%>
<li class="navPlace">
<a href="<%=navPlace.getUrl(request)%>"><%=navPlace.getKey()%></a> /
</li>
<%
}
}
upDir = navPlace;
%>
<li class="navPlace">
<a href="<%=navPlace.getUrl(request)%>"><%=navPlace.getKey()%></a> /
</li>
<%
}
}
 
%>
</ul>
</div>
%>
</ul>
</div>
 
<div class="panel">
<div class="panel-body">
 
<div class="files">
<table cellpadding="0" cellspacing="0">
<div class="files">
<table cellpadding="0" cellspacing="0">
 
<%
<%
 
if(upDir != null)
{
%>
<tr><td colspan="3"> .. [ <a class="updir" href="<%=upDir.getUrl(request)%>"><bean:message key="file.up.dir"/></a> ]</td></tr>
<%
}
%>
<tr>
<th>
<bean:message key="file.name"/>
</th>
<th>
<bean:message key="file.date"/>
</th>
<th>
<bean:message key="file.size"/>
</th>
</tr>
<%
int counter = 0;
if (iFiles.size() > 0)
{
%>
<%
for (IFile i : iFiles)
{
if (i.isDirectory())
{
request.setAttribute("i",i);
%>
<tr class="dir">
<td colspan="3">
if(upDir != null)
{
%>
<tr><td colspan="3"> .. [ <a class="updir" href="<%=upDir.getUrl(request)%>"><bean:message key="file.up.dir"/></a> ]</td></tr>
<%
}
%>
<tr>
<th>
<bean:message key="file.name"/>
</th>
<th>
<bean:message key="file.date"/>
</th>
<th>
<bean:message key="file.size"/>
</th>
</tr>
<%
int counter = 0;
if (iFiles.size() > 0)
{
%>
<%
for (IFile i : iFiles)
{
if (i.isDirectory())
{
request.setAttribute("i",i);
%>
<tr class="dir">
<td colspan="3">
 
<a class="btn btn-xs btn-danger" id="FTP_NODE_<%=++counter%>" style="display:none" href="javascript:if(confirmLink('<bean:message key="ftp.comfirm.delete" arg0="${i.nameHtml}"/>')){document.FormFtpManager.deleteFolder.value='<%=i.getNameHtml()%>';document.FormFtpManager.submit();}"><span class="glyphicon glyphicon-remove"> </span></a>
&nbsp;
<span class="glyphicon glyphicon-folder-open"> </span> &nbsp;<a href="<%=i.getName(request)%>"><%=i.getNameEscapedHtml()%>
</a>
</td>
</tr>
<%
}
<a class="btn btn-xs btn-danger" id="FTP_NODE_<%=++counter%>" style="display:none" href="javascript:if(confirmLink('<bean:message key="ftp.comfirm.delete" arg0="${i.name}"/>')){document.FormFtpManager.deleteFolder.value='<%=i.getName()%>';document.FormFtpManager.submit();}"><span class="glyphicon glyphicon-remove"> </span></a>
&nbsp;
<span class="glyphicon glyphicon-folder-open"> </span> &nbsp;<a href="<%=i.getName(request)%>"><%=i.getName()%>
</a>
</td>
</tr>
<%
}
 
}
}
%>
<%
for (IFile i : iFiles)
{
if (!i.isDirectory())
{
request.setAttribute("i",i);
%>
<tr class="file">
<td>
 
<a id="FTP_NODE_<%=++counter%>" class="btn btn-xs btn-danger" style="display:none" href="javascript:if(confirmLink('<bean:message key="ftp.comfirm.delete" arg0="${i.name}"/>')){document.FormFtpManager.deleteFile.value='<%=i.getName()%>';document.FormFtpManager.submit();}"><span class="glyphicon glyphicon-remove"> </span></a>
&nbsp;
 
<%
if (i.getName().toLowerCase().endsWith("doc") || i.getName().endsWith("rtf") || i.getName().endsWith("docx"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/doc.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("pdf"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/pdf.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("ppt"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/ppt.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("zip") || i.getName().endsWith(".gz") || i.getName().endsWith("tgz"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/zip.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("rar"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/rar.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("html") || i.getName().endsWith("htm"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/html.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("xls") || i.getName().endsWith("xlsx"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/xls.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("txt"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/txt.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("xml"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/xml.gif">
<%
}
else
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/unknown.gif">
<%
}
%>
<!--<a target="_blank" href="<%=i.getCompleteUrl()%>"><%=i.getName()%></a>-->
<a target="_blank" href="<%=request.getContextPath()%>/ftpProxyStream/ionline<%=i.getServerRelativePathFile()%>"><%=i.getName()%></a>
 
</td>
<td>
<%=DatesUtils.getStringFromDate(i.getLastUpdate())%>
</td>
<td>
<%=i.getSize()%> kb
</td>
</tr>
<%
}
 
}
}
%>
</table>
<%
for (IFile i : iFiles)
{
if (!i.isDirectory())
{
request.setAttribute("i",i);
%>
<tr class="file">
<td>
 
<a id="FTP_NODE_<%=++counter%>" class="btn btn-xs btn-danger" style="display:none" href="javascript:if(confirmLink('<bean:message key="ftp.comfirm.delete" arg0="${i.name}"/>')){document.FormFtpManager.deleteFile.value='<%=i.getName()%>';document.FormFtpManager.submit();}"><span class="glyphicon glyphicon-remove"> </span></a>
&nbsp;
 
<%
if (i.getName().toLowerCase().endsWith("doc") || i.getName().endsWith("rtf") || i.getName().endsWith("docx"))
if(iFiles.size() == 0)
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/doc.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("pdf"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/pdf.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("ppt"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/ppt.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("zip") || i.getName().endsWith(".gz") || i.getName().endsWith("tgz"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/zip.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("rar"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/rar.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("html") || i.getName().endsWith("htm"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/html.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("xls") || i.getName().endsWith("xlsx"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/xls.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("txt"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/txt.gif">
<%
}
else if (i.getName().toLowerCase().endsWith("xml"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/xml.gif">
<%
}
else
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/unknown.gif">
<%
}
%>
<!--<a target="_blank" href="<%=i.getCompleteUrl()%>"><%=i.getName()%></a>-->
<a target="_blank" href="<%=request.getContextPath()%>/ftpProxyStream/ionline<%=i.getServerRelativePathFile()%>"><%=i.getName()%></a>
%>
<ul class="statusWARNING">
<li>
<bean:message key="zero.files"/>
</li>
</ul>
 
</td>
<td>
<%=DatesUtils.getStringFromDate(i.getLastUpdate())%>
</td>
<td>
<%=i.getSize()%> kb
</td>
</tr>
<%
}
 
}
}
%>
</table>
 
</div>
 
</div>
</div>
</div>
<%
}
else
{
%>
<ul class="statusWARNING">
<li>
<bean:message key="zero.files"/>
</li>
</ul>
 
<%
<%
 
}
}
%>
</div>
</div>
</div>
/branches/v3/impl/src/web/user/home/topnavCourseUnitTeacher.jsp
7,7 → 7,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.teachers");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/home/topnavCourseUnitAssignement.jsp
8,7 → 8,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace("/user/startLoadCourseUnitWorksFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "course.unit.works");
topNav.addNavPlace(null, "courseunit.assignement", CourseUnitAssignementView.getTitle());
%>
/branches/v3/impl/src/web/user/home/topnavCourseUnit.jsp
7,6 → 7,6
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName());
topNav.addNavPlace(null, "courseunit",CourseUnitView.getName());
topNav.addNavPlace(null, CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/home/topnavCourseUnitStudent.jsp
7,7 → 7,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace("/user/startLoadCourseUnitStudentsFromHome.do?courseUnitView.id=" + CourseUnitView.getId() ,"courseunit.students");
topNav.addNavPlace(null, "student");
%>
/branches/v3/impl/src/web/user/home/topnavCourseUnitDtp.jsp
7,7 → 7,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.menu.dtp");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/home/topnavCourseUnitPresences.jsp
7,7 → 7,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.menu.presences");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/home/topnavCourseUnitContents.jsp
7,7 → 7,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.menu.contents");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/home/topnavCourseUnitGrades.jsp
7,7 → 7,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.menu.grades");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/home/topnavCourseUnitWorks.jsp
7,7 → 7,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "course.unit.works");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/home/topnavCourseUnitStudents.jsp
7,7 → 7,7
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("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "courseunit.students");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/serviceZone/serviceZone.jsp
65,139 → 65,141
%>
<jomm:messages/>
<html:errors/>
<div id="serviceZone">
<table class="columnTable" width="100%">
<tbody>
<tr>
<td class="column">
<div class="block">
<div class="head">
<bean:message key="intranet.services"/>
</div>
<div class="panel panel-default">
<div class="panel-heading"><bean:message key="intranet.services"/></div>
<div class="panel-body">
<div class="col-sm-6">
 
 
<baco:hasRole role="admin,services,all">
<ul>
<li><bean:message key="configuration"/>
<baco:hasRole role="admin,services,all">
<ul>
<li><bean:message key="configuration"/>
 
<ul>
<li><a href="<%=request.getContextPath()%>/user/configurationGrades.do"><bean:message key="configuration.grades"/></a></li>
<li><a href="<%=request.getContextPath()%>/user/configurationDirectories.do"><bean:message key="configuration.directories"/></a></li>
<li><a href="<%=request.getContextPath()%>/user/configurationSchedulleTasks.do"><bean:message key="configuration.tasks"/></a></li>
<li><html:link action="/admin/courseUnitsDeleteAdmin">Administração de Unidades Curriculares (Remoções)</html:link></li>
<li><a href="<%=request.getContextPath()%>/user/configurationUserRoles.do"><bean:message key="configuration.roles"/></a></li>
</ul>
</li>
</ul>
</baco:hasRole>
<baco:isModuleOn module="processes">
<ul>
<li><a href="<%=request.getContextPath()%>/admin/configurations.do">Configurações Gerais do Sistema</a></li>
<li><a href="<%=request.getContextPath()%>/user/configurationGrades.do"><bean:message key="configuration.grades"/></a></li>
<li><a href="<%=request.getContextPath()%>/user/configurationDirectories.do"><bean:message key="configuration.directories"/></a></li>
<li><a href="<%=request.getContextPath()%>/user/configurationSchedulleTasks.do"><bean:message key="configuration.tasks"/></a></li>
<li><html:link action="/admin/courseUnitsDeleteAdmin">Administração de Unidades Curriculares (Remoções)</html:link></li>
<li><a href="<%=request.getContextPath()%>/user/configurationUserRoles.do"><bean:message key="configuration.roles"/></a></li>
</ul>
</li>
</ul>
</baco:hasRole>
<baco:isModuleOn module="processes">
 
<ul>
<li><bean:message key="processes"/>
<ul>
<li><bean:message key="processes"/>
 
<ul>
<li><a href="<%=request.getContextPath()%>/user/listProcesses.do?target=participation"><bean:message key="processes.list"/></a></li>
<baco:hasRole role="all,processes.admin">
<li><a href="<%=request.getContextPath()%>/user/startNewMetaProcess.do"><bean:message key="processes.new.meta.process"/></a></li>
</baco:hasRole>
<li><a href="<%=request.getContextPath()%>/user/listMetaProcesses.do"><bean:message key="processes.new.process"/></a></li>
</ul>
</li>
</ul>
</baco:isModuleOn>
<ul>
<li><a href="<%=request.getContextPath()%>/user/listProcesses.do?target=participation"><bean:message key="processes.list"/></a></li>
<baco:hasRole role="all,processes.admin">
<li><a href="<%=request.getContextPath()%>/user/startNewMetaProcess.do"><bean:message key="processes.new.meta.process"/></a></li>
</baco:hasRole>
<li><a href="<%=request.getContextPath()%>/user/listMetaProcesses.do"><bean:message key="processes.new.process"/></a></li>
</ul>
</li>
</ul>
</baco:isModuleOn>
 
 
<!-- Filipe Matos -->
<baco:isModuleOn module="assessments">
<baco:hasRole role="teacher">
<baco:hasRole role="assessementsTester">
<ul>
<!-- Filipe Matos -->
<baco:isModuleOn module="assessments">
<baco:hasRole role="teacher">
<baco:hasRole role="assessementsTester">
<ul>
<li>
<bean:message key="assessments"/>
<ul>
<li>
<html:link action="/user/startSubmitAssessmentFromServiceZone">
<bean:message key="assessment.create.assessment"/>
</html:link>
</li>
<li>
<html:link action="/user/startListAssessmentsFromServiceZone">
<bean:message key="assessment.list.assessments"/>
</html:link>
</li>
</ul>
</li>
</ul>
</baco:hasRole>
</baco:hasRole>
<baco:hasRole role="student">
<li>
<bean:message key="assessments"/>
<ul>
<li>
<html:link action="/user/startListAssessmentsFromServiceZone">
<bean:message key="assessment.list.assessments"/>
</html:link>
</li>
</ul>
</li>
</baco:hasRole>
</baco:isModuleOn>
<!---->
 
<ul>
<baco:isModuleOn module="announcements">
 
<li>
<bean:message key="assessments"/>
<ul>
<li>
<html:link action="/user/startSubmitAssessmentFromServiceZone">
<bean:message key="assessment.create.assessment"/>
</html:link>
</li>
<li>
<html:link action="/user/startListAssessmentsFromServiceZone">
<bean:message key="assessment.list.assessments"/>
</html:link>
</li>
</ul>
</li>
</ul>
</baco:hasRole>
</baco:hasRole>
<baco:hasRole role="student">
<li>
<bean:message key="assessments"/>
<ul>
<li>
<html:link action="/user/startListAssessmentsFromServiceZone">
<bean:message key="assessment.list.assessments"/>
</html:link>
</li>
</ul>
</li>
</baco:hasRole>
</baco:isModuleOn>
<!---->
<baco:isModuleOn module="announcements">
<li>
<html:link action="/user/startSubmitAnnouncementFromServiceZone">
<bean:message key="submit.announcement"/>
</html:link>
</li>
</baco:isModuleOn>
<baco:isModuleOn module="blogs">
<li>
<html:link action="/user/startSubmitBlogFromServiceZone">
<bean:message key="submit.blog"/>
</html:link>
</li>
</baco:isModuleOn>
<baco:isModuleOn module="todos">
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
<li>
<html:link action="/user/startSubmitTodoAnnouncementFromServiceZone">
<bean:message key="submit.todo.announcement"/>
<html:link action="/user/startSubmitAnnouncementFromServiceZone">
<bean:message key="submit.announcement"/>
</html:link>
</li>
 
</baco:hasRole>
<baco:hasRole role="admin,all,services,sendMailMessages">
</baco:isModuleOn>
<baco:isModuleOn module="blogs">
 
<li>
<html:link action="/user/startSubmitMessage">
<bean:message key="submit.todo.message"/>
<html:link action="/user/startSubmitBlogFromServiceZone">
<bean:message key="submit.blog"/>
</html:link>
</li>
</baco:hasRole>
</baco:isModuleOn>
 
<!-- Duarte Santos -->
<baco:isModuleOn module="surveys">
<baco:isAdmin>
<li>
<bean:message key="surveys"/>
<ul>
<li>
<html:link action="/user/startSubmitSurveyFromServiceZone">
<bean:message key="survey.create.survey"/>
</baco:isModuleOn>
<baco:isModuleOn module="todos">
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
<li>
<html:link action="/user/startSubmitTodoAnnouncementFromServiceZone">
<bean:message key="submit.todo.announcement"/>
</html:link>
</li>
<li>
<html:link action="/user/startListSurveysFromServiceZone">
<bean:message key="survey.list.surveys"/>
</li>
 
</baco:hasRole>
<baco:hasRole role="admin,all,services,sendMailMessages">
<li>
<html:link action="/user/startSubmitMessage">
<bean:message key="submit.todo.message"/>
</html:link>
</li>
</ul>
</li>
</baco:isAdmin>
</baco:isModuleOn>
<!---->
</li>
</baco:hasRole>
</baco:isModuleOn>
 
<!-- Duarte Santos -->
<baco:isModuleOn module="surveys">
<baco:isAdmin>
<li>
<bean:message key="surveys"/>
<ul>
<li>
<html:link action="/user/startSubmitSurveyFromServiceZone">
<bean:message key="survey.create.survey"/>
</html:link>
</li>
<li>
<html:link action="/user/startListSurveysFromServiceZone">
<bean:message key="survey.list.surveys"/>
</html:link>
</li>
</ul>
</li>
</baco:isAdmin>
</baco:isModuleOn>
<!---->
 
<baco:isAdmin>
<li>
<bean:message key="users"/>
235,32 → 237,32
<bean:message key="courses"/>
<ul>
<baco:isAdmin>
<li>
<html:link action="/user/startNewCourseFromServiceZone">
<bean:message key="course.new"/>
</html:link>
</li>
<li>
<html:link action="/user/startSelectCourseFromServiceZone">
<bean:message key="course.select"/>
</html:link>
</li>
<li>
<html:link action="/user/startNewCourseUnitAdminFromServiceZone">
<bean:message key="courseunit.new"/>
</html:link>
</li>
<li>
<html:link action="/user/startFindCourseUnitAdminFromServiceZone">
<bean:message key="courseunit.search"/>
</html:link>
</li>
<li>
<html:link action="/user/startNewCourseFromServiceZone">
<bean:message key="course.new"/>
</html:link>
</li>
<li>
<html:link action="/user/startSelectCourseFromServiceZone">
<bean:message key="course.select"/>
</html:link>
</li>
<li>
<html:link action="/user/startNewCourseUnitAdminFromServiceZone">
<bean:message key="courseunit.new"/>
</html:link>
</li>
<li>
<html:link action="/user/startFindCourseUnitAdminFromServiceZone">
<bean:message key="courseunit.search"/>
</html:link>
</li>
</baco:isAdmin>
<%--<li>--%>
<%--<li>--%>
<%--<html:link action="/user/startFindCourseUnitAdminFromServiceZone">--%>
<%--<bean:message key="courseunit.program.archive"/>--%>
<%--<bean:message key="courseunit.program.archive"/>--%>
<%--</html:link>--%>
<%--</li>--%>
<%--</li>--%>
<li>
<baco:hasRole role="admin,all,servicesPrograms,administrativeCouncil,scientificCouncil,pedagogicCouncil">
<html:link action="/user/startLoadCoursesProgramsFromServiceZone">
277,7 → 279,7
</li>
</ul>
</li>
</baco:hasRole>
</baco:hasRole>
<li>
<bean:message key="backups"/>
<ul>
347,283 → 349,280
</li>
</baco:isModuleOn>
</baco:isAdmin>
<baco:hasRole role="identifiersManager,identifiersCollectionCreator">
<baco:isModuleOn module="manageidentifiers">
<li>
<bean:message key="module.ManagedIdentifier"/>
<ul>
<li>
<html:link action="/user/startLoadManagedIdentifierCollectionsFromServiceZone">
<bean:message key="managedidentifier.manage"/>
</html:link>
</li>
</ul>
</li>
</baco:isModuleOn>
</baco:hasRole>
 
</ul>
</div>
</td>
<td class="column">
<baco:isModuleOn module="announcements">
<div class="block">
 
<div class="head">
<bean:message key="intranet.my.announcements"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('myAnnouncements','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
<baco:hasRole role="identifiersManager,identifiersCollectionCreator">
<baco:isModuleOn module="manageidentifiers">
<li>
<bean:message key="module.ManagedIdentifier"/>
<ul>
<li>
<html:link action="/user/startLoadManagedIdentifierCollectionsFromServiceZone">
<bean:message key="managedidentifier.manage"/>
</html:link>
</li>
</ul>
</li>
</baco:isModuleOn>
</baco:hasRole>
</ul>
</div>
<div class="col-sm-6">
 
<div id="myAnnouncements" style="display:none;">
<%
if (ownerAnnouncement.size() == 0)
{
%>
<baco:isModuleOn module="announcements">
<div class="block">
 
<div class="zerofound">
<bean:message key="announcement.zero.placed"/>
</div>
<div class="head">
<bean:message key="intranet.my.announcements"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('myAnnouncements','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
</div>
 
<%
}
else
{
%>
 
<table>
<%
for (AnnouncementView a : ownerAnnouncement)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startLoadAnnouncementFromServiceZone.do?id=<%=a.getId()%>"><%=a.getTitle()%></a>
 
<div id="myAnnouncements" style="display:none;">
<%
if (a.getCourseUnitView() != null)
if (ownerAnnouncement.size() == 0)
{
%>
(<%=a.getCourseUnitView().getName()%>)
 
<div class="zerofound">
<bean:message key="announcement.zero.placed"/>
</div>
 
<%
}
}
else
{
%>
 
</td>
<td>
<%
<table>
<%
for (AnnouncementView a : ownerAnnouncement)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startLoadAnnouncementFromServiceZone.do?id=<%=a.getId()%>"><%=a.getTitle()%></a>
 
<%
if (a.getCourseUnitView() != null)
{
%>
(<%=a.getCourseUnitView().getName()%>)
<%
}
%>
 
</td>
<td>
<%
String message;
if(a.isStatus())
message = MessageResources.getMessage(request,"announcement.status.valid");
else
message = MessageResources.getMessage(request,"announcement.status.not.valid");
%>
<%=message%>
<td><%=a.getFormatedUpdateDate()%>
</td>
</tr>
<%
}
%>
</table>
<%=message%>
<td><%=a.getFormatedUpdateDate()%>
</td>
</tr>
<%
}
%>
</table>
 
<%
}
%>
</div>
</div>
</baco:isModuleOn>
<baco:isModuleOn module="blogs">
<div class="block">
<div class="head">
<bean:message key="intranet.my.blog.posts"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('myPosts','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
</div>
<div id="myPosts" style="display:none;">
<%
if (ownerBlogs.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="blog.posts.zero.placed"/>
</div>
<%
}
else
{
%>
<table>
<%
for (BlogPostView b : ownerBlogPosts)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startLoadBlogFromServiceZone.do?id=<%=b.getBlogId()%>"><%=b.getTitle()%>
</a></td>
<td>
<%
String message;
if (b.isStatus())
message = MessageResources.getMessage(request, "blog.status.valid");
else
message = MessageResources.getMessage(request, "blog.status.not.valid");
}
%>
</div>
</div>
</baco:isModuleOn>
<baco:isModuleOn module="blogs">
<div class="block">
<div class="head">
<bean:message key="intranet.my.blog.posts"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('myPosts','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
</div>
<div id="myPosts" style="display:none;">
<%
if (ownerBlogs.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="blog.posts.zero.placed"/>
</div>
<%
}
else
{
%>
<table>
<%
for (BlogPostView b : ownerBlogPosts)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startLoadBlogFromServiceZone.do?id=<%=b.getBlogId()%>"><%=b.getTitle()%>
</a></td>
<td>
<%
String message;
if (b.isStatus())
message = MessageResources.getMessage(request, "blog.status.valid");
else
message = MessageResources.getMessage(request, "blog.status.not.valid");
 
%>
<%=message%>
</td>
</tr>
<%
}
%>
</table>
<%
}
%>
<%=message%>
</td>
</tr>
<%
}
%>
</table>
<%
}
%>
</div>
</div>
</div>
</div>
 
<div class="block">
<div class="head">
<bean:message key="intranet.my.blogs"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('myBlogs','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
</div>
<div id="myBlogs" style="display:none;">
<%
if (ownerBlogs.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="blog.zero.placed"/>
</div>
<%
}
else
{
%>
<table>
<%
for (BlogView b : ownerBlogs)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startLoadBlogFromServiceZone.do?id=<%=b.getId()%>"><%=b.getTitle()%>
</a></td>
<td>
<div class="block">
<div class="head">
<bean:message key="intranet.my.blogs"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('myBlogs','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
</div>
<div id="myBlogs" style="display:none;">
<%
String message;
if (b.isStatus())
message = MessageResources.getMessage(request, "blog.status.valid");
else
message = MessageResources.getMessage(request, "blog.status.not.valid");
if (ownerBlogs.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="blog.zero.placed"/>
</div>
<%
}
else
{
%>
<table>
<%
for (BlogView b : ownerBlogs)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startLoadBlogFromServiceZone.do?id=<%=b.getId()%>"><%=b.getTitle()%>
</a></td>
<td>
<%
String message;
if (b.isStatus())
message = MessageResources.getMessage(request, "blog.status.valid");
else
message = MessageResources.getMessage(request, "blog.status.not.valid");
 
%>
<%=message%>
</td>
</tr>
<%
}
%>
</table>
<%
}
%>
<%=message%>
</td>
</tr>
<%
}
%>
</table>
<%
}
%>
</div>
</div>
</div>
</div>
 
<div class="block">
<div class="head">
<bean:message key="intranet.editable.blogs"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('editableBlogs','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
</div>
<div id="editableBlogs" style="display:none;">
<%
if (editableBlogs.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="blog.zero.editable"/>
</div>
<%
}
else
{
%>
<table>
<%
for (BlogView b : editableBlogs)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startLoadBlogFromServiceZone.do?id=<%=b.getId()%>"><%=b.getTitle()%>
</a></td>
<td>
<div class="block">
<div class="head">
<bean:message key="intranet.editable.blogs"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('editableBlogs','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
</div>
<div id="editableBlogs" style="display:none;">
<%
String message;
if (b.isStatus())
message = MessageResources.getMessage(request, "blog.status.valid");
else
message = MessageResources.getMessage(request, "blog.status.not.valid");
if (editableBlogs.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="blog.zero.editable"/>
</div>
<%
}
else
{
%>
<table>
<%
for (BlogView b : editableBlogs)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startLoadBlogFromServiceZone.do?id=<%=b.getId()%>"><%=b.getTitle()%>
</a></td>
<td>
<%
String message;
if (b.isStatus())
message = MessageResources.getMessage(request, "blog.status.valid");
else
message = MessageResources.getMessage(request, "blog.status.not.valid");
 
%>
<%=message%>
</td>
</tr>
<%
}
%>
</table>
<%
}
%>
<%=message%>
</td>
</tr>
<%
}
%>
</table>
<%
}
%>
</div>
</div>
</baco:isModuleOn>
<!-- Duarte Santos -->
<baco:isModuleOn module="surveys">
<%--
<div class="block">
<div class="head">
<bean:message key="intranet.my.surveys.stats"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('mySurveysStats','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
</div>
<div id="mySurveysStats" style="display:none;">
<%
if(consultStatsSurveys.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="survey.stats.zero.placed"/>
</div>
</div>
<%
}
else
{
%>
<table>
<%
for (SurveyView s : consultStatsSurveys)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startListSurveyStats.do?id=<%=s.getId()%>&from=ServiceZone"><%=s.getTitle()%></a>
</td>
</tr>
<%
}
%>
</table>
<%
}
%>
</div>
</div>--%>
</baco:isModuleOn>
</baco:isModuleOn>
<!-- Duarte Santos -->
<baco:isModuleOn module="surveys">
<%--
<div class="block">
<div class="head">
<bean:message key="intranet.my.surveys.stats"/>
<a href="#"><img border="0" onclick="this.src=showOrHide('mySurveysStats','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a>
</div>
<div id="mySurveysStats" style="display:none;">
<%
if(consultStatsSurveys.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="survey.stats.zero.placed"/>
</div>
<%
}
else
{
%>
<table>
<%
for (SurveyView s : consultStatsSurveys)
{
%>
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/startListSurveyStats.do?id=<%=s.getId()%>&from=ServiceZone"><%=s.getTitle()%></a>
</td>
</tr>
<%
}
%>
</table>
<%
}
%>
</div>
</div>--%>
</baco:isModuleOn>
 
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
/branches/v3/impl/src/web/user/serviceZone/topnavConfigurations.jsp
New file
0,0 → 1,10
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "configuration");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *