/impl/importRoutines.xml |
---|
15,9 → 15,15 |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportStudentsService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="jobs"> |
<java classname="pt.estgp.estgweb.services.jobs.JobDeamon" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
<java fork="true" classname="pt.estgp.estgweb.services.jobs.JobDeamon" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="summaries"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportSumaries" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="setAreas"> |
<java fork="true" classname="pt.estgp.estgweb.services.courses.SetUserArea" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="setOfficeExtMainArea"> |
<java fork="true" classname="pt.estgp.estgweb.services.profile.SetUserAreaOfficeExtFromCSV" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
</project> |
/impl/conf/language/MessageResourcesIntranet.properties |
---|
5,7 → 5,7 |
################################################################################ |
intranet=Intranet |
intranet.services=Os Meus Serviços |
intranet.todo=Os Meus Afazeres |
intranet.todo=As Minhas Tarefas |
intranet.editable.blogs=Os Blogs Onde Posso Publicar |
intranet.my.announcements=Os Anúncios Colocados por Mim |
intranet.my.blogs=Os Meus Blogs |
21,7 → 21,10 |
intranet.separator.ionline=Navegar no IOnline |
intranet.separator.utils=Utilitários |
intranet.separator.utils.back=Voltar aos Utilitários |
intranet.separator.contacts=Contactos |
intranet.contacts.lists=@Listas de Distribuição |
intranet.contacts.labs=Laboratórios |
intranet.my.blog.posts=Os Meus Posts |
45,6 → 48,7 |
intranet.utils.actas=Actas |
intranet.home.curricular=Consulta de Material Curricular |
/impl/conf/language/MessageResourcesCourse.properties |
---|
13,6 → 13,7 |
course.select=Escolha Curso |
course.select.message=Por favor selecione o curso que deseja editar |
course.area=Area Científica |
course.code=Código |
course.degree=Grau académico |
course.importYear=Ano de Importação |
46,6 → 47,7 |
course.units.with.program.checked=Unidades com programa válido |
course.valid.program=Programa Validado |
course.directed.coordinated=Cursos que coordena e/ou dirige (Apenas os coordenadores tem permissão para alterar o estado de um programa) |
courseunit.programs=Programas Curriculares |
course.directed.courses=Cursos que dirige |
course.coordinated.courses=Cursos que coordena |
course.unit.directed=Unidades Curriculares |
62,3 → 64,13 |
courses.all=Todos os Cursos |
/impl/conf/language/MessageResources.properties |
---|
64,8 → 64,11 |
error.401.item.3=Seguiu um link proveniente de um web site exterior cuja informação pode estar desactualizada |
error.401.item.4=Seguiu um link interno errado ou desactualizado. |
organization=Organização |
areas=Áreas |
areas=Areas |
area=Area |
areas.all=Todas as Areas |
area.eg=Área de Engenharia |
area.ch=Área de Ciencias Humanas |
77,6 → 80,8 |
top.menu.area.ce=Ciências Empresariais |
top.menu.area.ch=Ciências Humanas |
#roles |
user.role.all=Todos |
87,6 → 92,11 |
user.role.teacher.eg=Professor da Área de Engenharia |
user.role.teacher.dg=Professor da Área de Design |
user.role.teacher.ce=Professor da Área de Ciencias Empresariais |
user.role.teacher.ch=Professor da Área de Ciencias Humanas |
user.role.student.eg=Aluno da Área de Engenharia |
user.role.student.dg=Aluno da Área de Design |
user.role.student.ce=Aluno da Área de Ciencias Empresariais |
user.role.student.ch=Aluno da Área de Ciencias Humanas |
user.role.ci=Centro Informático |
user.role.worker=Funcionário |
user.role.invited=Convidado |
294,6 → 304,7 |
wait=Aguarde um instante por favor |
name=Nome |
targets=Papeis |
office=Gabinete |
bi=BI |
address=Morada |
zip=Código Postal |
/impl/conf/language/MessageResourcesCourseUnits.properties |
---|
48,6 → 48,13 |
courseunit.assignement=Trabalho: {0} |
courseunit.teacher.situation=Situação de Professores |
courseunit.teacher.situation.withTeachers=Com Professor |
courseunit.teacher.situation.withNoTeachers=Sem Professor |
courseunit.teacher.situation.all=Todos |
courseunit.S1=1º Semestre |
courseunit.S2=2ª Semestre |
courseunit.ALL=Todos os Semestres |
courseunit.assignement.delivered.date=Data de Entrega |
courseunit.assignement.deliver.date=Data Limite de Entrega |
courseunit.assignement.deliver.type=Tipo de entrega |
/impl/conf/WEB-INF/struts/struts-courses.xml |
---|
34,7 → 34,7 |
<forward name="load" path="page.load.course"/> |
</action> |
<action path="/user/startLoadCoursesProgramsFromServiceZone" forward="/user/courseControllerFromHome.do?dispatch=loadCoursesPrograms&fromDispatch=loadCoursesPrograms&from=ServiceZone"/> |
<action path="/user/startLoadCoursesProgramsFromServiceZone" forward="/user/courseControllerFromServiceZone.do?dispatch=loadCoursesPrograms&fromDispatch=loadCoursesPrograms&from=ServiceZone"/> |
<action path="/user/startLoadDirectedCoordinatedCoursesFromServiceZone" forward="/user/courseControllerFromServiceZone.do?dispatch=loadDirectedCoordininatedCourses&fromDispatch=loadDirectedCoordininatedCourses&from=ServiceZone"/> |
<action path="/user/startSelectCourseFromServiceZone" forward="page.select.course.from.service.zone"/> |
<action path="/user/startEditCourseFromServiceZone" forward="/user/courseControllerFromServiceZone.do?dispatch=edit&from=ServiceZone"/> |
/impl/conf/WEB-INF/struts/struts-intranet.xml |
---|
38,6 → 38,17 |
input="page.welcome"> |
</action> |
<action path="/user/listTeachers" |
type="pt.estgp.estgweb.web.controllers.contacts.ContactsController" |
scope="request" |
parameter="dispatch" |
validate="false"> |
<forward name="contactTeachers" path="page.layoutIntranetContacts.listTeachers"/> |
</action> |
</action-mappings> |
</struts-config> |
/impl/conf/WEB-INF/struts/tiles-intranet.xml |
---|
32,9 → 32,14 |
<definition name="page.separators.utils" extends="base.separators"> |
<put name="separator" value="6" type="string"/> |
<put name="left" value="/user/utils/menu.jsp"/> |
<!--<put name="left" value="/user/utils/menu.jsp"/>--> |
</definition> |
<definition name="page.separators.contacts" extends="base.separators"> |
<put name="separator" value="7" type="string"/> |
<put name="left" value="/user/contacts/menu.jsp"/> |
</definition> |
<definition name="page.layoutIOnline.proxy.ftp" extends="base.separators"> |
<put name="separator" value="5" type="string"/> |
<put name="body" value="/user/ftpclient/ftpclient.jsp"/> |
45,6 → 50,14 |
<put name="body" value="/WebProxy"/> |
</definition> |
<definition name="page.layoutIntranetContacts.proxy" extends="page.separators.contacts"> |
<put name="body" value="/WebProxy"/> |
</definition> |
<definition name="page.layoutIntranetContacts.listTeachers" extends="page.separators.contacts"> |
<put name="body" value="/user/contacts/listTeachers.jsp"/> |
</definition> |
<definition name="page.layoutIntranetUtilsOrg.proxy" extends="page.layoutIntranetUtils.proxy"> |
<put name="topnav" value="/user/utils/topnavOrg.jsp"/> |
</definition> |
/impl/conf/WEB-INF/struts/struts-default.xml |
---|
60,6 → 60,7 |
<forward name="layout2" path="page.layout2.dir"/> |
<forward name="layout3" path="page.layout3.dir"/> |
<forward name="layout4" path="page.layout4.dir"/> |
<forward name="layoutIntranetUtils" path="page.layoutIntranetUtils.dir"/> |
<forward name="layoutPortal" path="page.layoutPortal.dir"/> |
</action> |
<!--Layout Forward--> |
135,6 → 136,7 |
<forward name="courseLayoutIOnlinePresences.ftp" path="page.courseLayoutIOnlinePresences.proxy.ftp"/> |
<forward name="layoutIntranetUtils" path="page.layoutIntranetUtils.proxy"/> |
<forward name="layoutIntranetContacts" path="page.layoutIntranetContacts.proxy"/> |
<forward name="layoutIntranetUtilsOrg" path="page.layoutIntranetUtilsOrg.proxy"/> |
<forward name="layoutIntranetUtilsSecretaria" path="page.layoutIntranetUtilsSecretaria.proxy"/> |
<forward name="layoutIntranetUtilsSecretariaConfigurable" path="page.layoutIntranetUtilsSecretariaConfigurable.proxy"/> |
/impl/conf/WEB-INF/struts/tiles-default.xml |
---|
95,6 → 95,9 |
<definition name="page.layout4.dir" extends="base.layout4"> |
<put name="body" value="/DirWebProxy"/> |
</definition> |
<definition name="page.layoutIntranetUtils.dir" extends="page.separators.utils"> |
<put name="body" value="/DirWebProxy"/> |
</definition> |
<definition name="page.layoutPortal.dir" extends="base.layoutPortal"> |
<put name="body" value="/DirWebProxy"/> |
</definition> |
/impl/conf/WEB-INF/web.xml |
---|
166,7 → 166,7 |
</servlet> |
<servlet> |
<servlet-name>LayoutProxy</servlet-name> |
<servlet-class>pt.estgp.estgweb.web.DirProxy</servlet-class> |
<servlet-class>pt.estgp.estgweb.web.LayoutProxy</servlet-class> |
</servlet> |
<servlet> |
<servlet-name>CourseUnitLayoutProxy</servlet-name> |
/impl/conf/app.properties |
---|
88,7 → 88,7 |
#server.estgp=http://localhost:8180 |
#estgp.encoding=ISO-8859-1 |
server.estgp.start.path= |
server.estgp=http://www.estgp.pt/testes/nova_web |
server.estgp=http://172.20.100.14:8180/static |
estgp.encoding=UTF-8 |
estgp.proxy.host= |
estgp.proxy.port= |
110,7 → 110,7 |
server.casaTestes=http://localhost:8080 |
server.casaTestes.start.path=/static |
server.casaTestes.start.path=/templates |
casaTestes.encoding=ISO-8859-1 |
casaTestes.proxy.host= |
casaTestes.proxy.port= |
140,24 → 140,29 |
user.role.08=teacher.eg |
user.role.09=teacher.dg |
user.role.10=teacher.ce |
user.role.11=worker |
user.role.12=invited |
user.role.13=services |
user.role.14=administrativeCouncil |
user.role.15=scientificCouncil |
user.role.16=pedagogicCouncil |
user.role.17=erasmusCouncil |
user.role.18=courseCoordinator |
user.role.19=studentAssociation |
user.role.20=representativeCouncil |
user.role.21=computerCenter |
user.role.22=courseCoordinator |
user.role.23=courseDirector |
user.role.24=identifiersManager |
user.role.25=identifiersCollectionCreator |
user.role.26=servicesPrograms |
user.role.27=studentsID |
user.role.28=studentsFSIR |
user.role.11=teacher.ch |
user.role.12=worker |
user.role.13=invited |
user.role.14=services |
user.role.15=administrativeCouncil |
user.role.16=scientificCouncil |
user.role.17=pedagogicCouncil |
user.role.18=erasmusCouncil |
user.role.19=courseCoordinator |
user.role.20=studentAssociation |
user.role.21=representativeCouncil |
user.role.22=computerCenter |
user.role.23=courseCoordinator |
user.role.24=courseDirector |
user.role.25=identifiersManager |
user.role.26=identifiersCollectionCreator |
user.role.27=servicesPrograms |
user.role.28=studentsID |
user.role.29=studentsFSIR |
user.role.30=student.eg |
user.role.31=student.dg |
user.role.32=student.ce |
user.role.33=student.ch |
######################################################################### |
372,6 → 377,16 |
########################################################################### |
# |
# AREAS CIENTIFICAS |
# |
area.1=eg |
area.2=dg |
area.3=ce |
area.4=ch |
/impl/conf/directories/directory.xsd |
---|
8,11 → 8,15 |
<xs:complexType> |
<xs:sequence> |
<xs:element name="groupsDeclaration" type="groupDeclarationT" minOccurs="0"/> |
<xs:element name="node" type="nodeT" minOccurs="0" maxOccurs="unbounded"/> |
<xs:choice maxOccurs="unbounded"> |
<xs:element name="node" type="nodeT"/> |
<xs:element name="leaf" type="leafT"/> |
</xs:choice> |
<xs:element name="rights" type="rightsT" minOccurs="0"/> |
</xs:sequence> |
<xs:attribute name="id" type="xs:ID" use="required"/> |
<xs:attribute name="label" use="required"/> |
<xs:attribute name="place" use="required"/> |
<xs:attribute name="style" use="required"/> |
<xs:attribute name="layout" use="required"/> |
<xs:attribute name="layoutRoot" use="required"/> |
38,6 → 42,22 |
<xs:documentation>Grouping purposes in styling</xs:documentation> |
</xs:annotation> |
</xs:attribute> |
<xs:attribute name="showNav" type="xs:boolean" use="optional"> |
<xs:annotation> |
<xs:documentation>Show link to this node in navigation menus, true by default</xs:documentation> |
</xs:annotation> |
</xs:attribute> |
<xs:attribute name="type" use="optional"> |
<xs:annotation> |
<xs:documentation>Type of node, by default HTTP link</xs:documentation> |
</xs:annotation> |
<xs:simpleType> |
<xs:restriction base="xs:string"> |
<xs:enumeration value="ftp"/> |
<xs:enumeration value="http"/> |
</xs:restriction> |
</xs:simpleType> |
</xs:attribute> |
<xs:attribute name="id" type="xs:ID" use="required"/> |
</xs:complexType> |
<xs:complexType name="leafT"> |
45,6 → 65,13 |
<xs:documentation>A leaf is an URL for an external or internal WEB site</xs:documentation> |
</xs:annotation> |
<xs:sequence> |
<xs:choice minOccurs="0" maxOccurs="unbounded"> |
<xs:annotation> |
<xs:documentation>A leaf can be a root of some diferent system like FTP server Directory</xs:documentation> |
</xs:annotation> |
<xs:element name="node" type="nodeT"/> |
<xs:element name="leaf" type="leafT"/> |
</xs:choice> |
<xs:element name="rights" type="rightsT" minOccurs="0"/> |
</xs:sequence> |
<xs:attribute name="url" type="xs:string" use="required"/> |
81,6 → 108,38 |
<xs:documentation>Grouping purposes in styling</xs:documentation> |
</xs:annotation> |
</xs:attribute> |
<xs:attribute name="remoteExtensionRoot" type="xs:boolean" use="optional"/> |
<!-- |
The next attributes are filled by system BACO when remoteExtensionPoint is reached |
--> |
<xs:attribute name="ftpDirectory" type="xs:boolean"/> |
<xs:attribute name="size" use="optional"> |
<xs:annotation> |
<xs:documentation>Size of content in Kb</xs:documentation> |
</xs:annotation> |
</xs:attribute> |
<xs:attribute name="mimeType" use="optional"> |
<xs:annotation> |
<xs:documentation>Mime Type of content in Kb</xs:documentation> |
</xs:annotation> |
</xs:attribute> |
<xs:attribute name="lastModification" use="optional"> |
<xs:annotation> |
<xs:documentation>Last Modification of content in Kb</xs:documentation> |
</xs:annotation> |
</xs:attribute> |
<xs:attribute name="visualization" use="optional"> |
<xs:annotation> |
<xs:documentation>Type of node, by default HTTP link</xs:documentation> |
</xs:annotation> |
<xs:simpleType> |
<xs:restriction base="xs:string"> |
<xs:enumeration value="filesystem"/> |
<xs:enumeration value="normal"/> |
</xs:restriction> |
</xs:simpleType> |
</xs:attribute> |
</xs:complexType> |
<xs:complexType name="groupDeclarationT"> |
<xs:sequence> |
/impl/conf/directories/student.xml |
---|
1,5 → 1,5 |
<?xml version="1.0" encoding="UTF-8"?> |
<directory label="Alunos" layout="layout0" layoutRoot="layoutPortal" targetRole="student" id="student" menuKey="menu.alunos" style="style1.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd"> |
<directory label="Alunos" place="home" layout="layout0" layoutRoot="layoutPortal" targetRole="student" id="student" menuKey="menu.alunos" style="style1.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd"> |
<groupsDeclaration> |
<group>1</group> |
<group>2</group> |
/impl/conf/directories/utils.xsl |
---|
10,10 → 10,18 |
<xsl:apply-templates select="." mode="label"/> |
</a> |
</xsl:template> |
<xsl:template match="d:node" mode="link"> |
<a> |
<xsl:attribute name="href"> |
<xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/> |
<xsl:choose> |
<xsl:when test="@idPrefixSize"> |
<xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="substring(@id,@idPrefixSize+1)"/> |
</xsl:when> |
<xsl:otherwise> |
<xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/> |
</xsl:otherwise> |
</xsl:choose> |
</xsl:attribute> |
<xsl:apply-templates select="." mode="label"/> |
</a> |
24,18 → 32,30 |
<xsl:choose> |
<xsl:when test="string(@absolute)='true'"> |
<xsl:value-of select="@url"/> |
</xsl:when> |
<xsl:otherwise> |
<xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/><xsl:value-of select="@url"/> |
</xsl:otherwise> |
</xsl:when> |
<xsl:when test="@idPrefixSize"><xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="substring(@id,@idPrefixSize+1)"/></xsl:when> |
<xsl:when test="@remoteExtensionRoot='true'"><xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/></xsl:when> |
<xsl:otherwise><xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/><xsl:value-of select="@url"/></xsl:otherwise> |
</xsl:choose> |
</xsl:attribute> |
<xsl:apply-templates select="." mode="label"/> |
</a> |
</xsl:template> |
<xsl:template match="d:directory" mode="linkParent">/<xsl:value-of select="@id"/></xsl:template> |
<xsl:template match="d:node" mode="linkParent"> |
<xsl:choose> |
<xsl:when test="@idPrefixSize"><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="substring(@id,@idPrefixSize+1)"/></xsl:when> |
<xsl:otherwise><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/></xsl:otherwise> |
</xsl:choose> |
</xsl:template> |
<xsl:template match="d:leaf" mode="linkParent"> |
<xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/> |
</xsl:template> |
/impl/conf/directories/style1.xsl |
---|
10,7 → 10,8 |
<xsl:param name="roles">professor,administrador</xsl:param> |
<!--<xsl:param name="ACTUAL">pagina_a1.2.1</xsl:param>--> |
<!--<xsl:param name="ACTUAL">ficha_trabalhoIncluido</xsl:param>--> |
<xsl:param name="ACTUAL">pagina_teste.html</xsl:param> |
<xsl:param name="ACTUAL">ionline</xsl:param> |
<xsl:param name="ACTUAL_REMOTE_CHILD">FTP_3_Trabalhos</xsl:param> |
<xsl:param name="includeXML">oai_dc.xml</xsl:param> |
<xsl:template match="/"> |
380,12 → 381,100 |
<xsl:apply-templates select=".." mode="latNav"/> |
</td> |
<td class="contentPortal"> |
<xsl:apply-templates select="." mode="bodyContent"/> |
<xsl:choose> |
<xsl:when test="not(./d:*[@ftpDirectory])"> |
<xsl:apply-templates select="." mode="bodyContent"/> |
</xsl:when> |
<xsl:otherwise> |
<xsl:choose> |
<xsl:when test="//*[@id=$ACTUAL_REMOTE_CHILD]"> |
<xsl:apply-templates select="//*[@id=$ACTUAL_REMOTE_CHILD]" mode="remoteChildsContent"/> |
</xsl:when> |
<xsl:otherwise> |
<xsl:apply-templates select="." mode="remoteChildsContent"/> |
</xsl:otherwise> |
</xsl:choose> |
</xsl:otherwise> |
</xsl:choose> |
</td> |
</tr> |
</table> |
</xsl:template> |
<xsl:template match="d:*" mode="remoteChildsContent"> |
<xsl:apply-templates select="." mode="topNavRemote"/> |
<div class="files"> |
<table cellpadding="0" cellspacing="0"> |
<tr> |
<th> |
Nome do ficheiro/pasta |
</th> |
<th> |
Data de Modificação |
</th> |
<th> |
Tamanho |
</th> |
</tr> |
<xsl:apply-templates select="./d:leaf[@ftpDirectory='true']" mode="ftpLine"/> |
<xsl:apply-templates select="./d:leaf[@ftpDirectory='false']" mode="ftpLine"/> |
</table> |
</div> |
</xsl:template> |
<xsl:template match="d:leaf" mode="ftpLine"> |
<xsl:choose> |
<xsl:when test="./@ftpDirectory='true'"> |
<tr class="dir"> |
<td colspan="3" > |
<img> |
<xsl:attribute name="src"><xsl:value-of select="$contextPath"/>/imgs/folder.gif</xsl:attribute> |
</img> |
<xsl:text> </xsl:text> |
<xsl:apply-templates select="." mode="link"/> |
</td> |
</tr> |
</xsl:when> |
<xsl:otherwise> |
<tr class="file"> |
<td> |
<xsl:apply-templates select="." mode="mime"/><xsl:text> </xsl:text> |
<xsl:apply-templates select="." mode="link"/> |
</td> |
<td> |
<xsl:value-of select="./@lastModification"/> |
</td> |
<td> |
<xsl:value-of select="./@size"/> |
</td> |
</tr> |
</xsl:otherwise> |
</xsl:choose> |
</xsl:template> |
<xsl:template match="d:leaf" mode="mime"> |
<img> |
<xsl:attribute name="alt"><xsl:value-of select="."/></xsl:attribute> |
<xsl:attribute name="src"> |
<xsl:choose> |
<xsl:when test="contains(@extension, 'rtf')"><xsl:value-of select="$contextPath"/>/imgs/mime/doc.gif</xsl:when> |
<xsl:when test="contains(@extension, 'doc')"><xsl:value-of select="$contextPath"/>/imgs/mime/doc.gif</xsl:when> |
<xsl:when test="contains(@extension, 'docx')"><xsl:value-of select="$contextPath"/>/imgs/mime/doc.gif</xsl:when> |
<xsl:when test="contains(@extension, 'pdf')"><xsl:value-of select="$contextPath"/>/imgs/mime/pdf.gif</xsl:when> |
<xsl:when test="contains(@extension, 'ppt')"><xsl:value-of select="$contextPath"/>/imgs/mime/ppt.gif</xsl:when> |
<xsl:when test="contains(@extension, 'zip')"><xsl:value-of select="$contextPath"/>/imgs/mime/zip.gif</xsl:when> |
<xsl:when test="contains(@extension, 'gz')"><xsl:value-of select="$contextPath"/>/imgs/mime/zip.gif</xsl:when> |
<xsl:when test="contains(@extension, 'tgz')"><xsl:value-of select="$contextPath"/>/imgs/mime/zip.gif</xsl:when> |
<xsl:when test="contains(@extension, 'rar')"><xsl:value-of select="$contextPath"/>/imgs/mime/rar.gif</xsl:when> |
<xsl:when test="contains(@extension, 'html')"><xsl:value-of select="$contextPath"/>/imgs/mime/html.gif</xsl:when> |
<xsl:when test="contains(@extension, 'html')"><xsl:value-of select="$contextPath"/>/imgs/mime/html.gif</xsl:when> |
<xsl:when test="contains(@extension, 'xls')"><xsl:value-of select="$contextPath"/>/imgs/mime/xls.gif</xsl:when> |
<xsl:when test="contains(@extension, 'xlsx')"><xsl:value-of select="$contextPath"/>/imgs/mime/xls.gif</xsl:when> |
<xsl:when test="contains(@extension, 'txt')"><xsl:value-of select="$contextPath"/>/imgs/mime/txt.gif</xsl:when> |
<xsl:otherwise><xsl:value-of select="$contextPath"/>/imgs/mime/unknown.gif</xsl:otherwise> |
</xsl:choose> |
</xsl:attribute> |
</img> |
</xsl:template> |
<!--<xsl:function name="d:parse" as="document-node()"> |
<xsl:param name="s" as="xs:string"/> |
<xsl:sequence select="doc(concat('data:text/xml','<ola>teste</ola>'))"/> |
400,6 → 489,7 |
=========================================================== |
--> |
<xsl:template match="d:leaf" mode="topNav"> |
<div id="topnav"> |
<ul> |
439,7 → 529,28 |
</div>--> |
</xsl:template> |
<xsl:template match="d:leaf" mode="topNavRemote"> |
<div id="topnav"> |
<ul> |
<li class="navPlace"> |
<xsl:value-of select="@label"/></li> |
</ul> |
</div> |
</xsl:template> |
<xsl:template match="d:node" mode="topNavRemote"> |
<div id="topnav"> |
<ul> |
<xsl:apply-templates select=".." mode="navBackRemote"/> |
<li class="navPlace"> |
> |
<xsl:apply-templates select="." mode="label"/> |
</li> |
</ul> |
</div> |
</xsl:template> |
<xsl:template match="d:directory" mode="navBack"> |
<li class="navPlace"> |
<xsl:call-template name="homeLink"/> |
459,6 → 570,28 |
</li> |
</xsl:template> |
<xsl:template match="d:leaf" mode="navBack"> |
<xsl:apply-templates select=".." mode="navBack"/> |
<li class="navPlace"> |
> |
<xsl:apply-templates select="." mode="link"/> |
</li> |
</xsl:template> |
<xsl:template match="d:leaf" mode="navBackRemote"> |
<li class="navPlace"> |
<xsl:apply-templates select="." mode="link"/> |
</li> |
</xsl:template> |
<xsl:template match="d:node" mode="navBackRemote"> |
<xsl:apply-templates select=".." mode="navBackRemote"/> |
<li class="navPlace"> |
> |
<xsl:apply-templates select="." mode="link"/> |
</li> |
</xsl:template> |
<!-- |
=========================================================== |
| Barra de Navegação Lateral Esquerda |
466,6 → 599,7 |
--> |
<xsl:template match="d:node" mode="latNav"> |
<xsl:if test="./d:leaf or ./d:node"> |
<div class="linkMenuBlock"> |
<div class="linkMenuBlockTitle"><xsl:apply-templates select="." mode="label"/></div> |
<div class="linkLeftMenu"> |
495,7 → 629,7 |
</xsl:if> |
</xsl:template> |
<xsl:template match="d:directory" mode="latNav"> |
<xsl:template match="d:leaf" mode="latNav"> |
<xsl:if test="./d:leaf or ./d:node"> |
<div class="linkMenuBlock"> |
<div class="linkMenuBlockTitle"><xsl:apply-templates select="." mode="label"/></div> |
526,6 → 660,40 |
</xsl:if> |
</xsl:template> |
<xsl:template match="d:directory" mode="latNav"> |
<xsl:if test="./d:leaf or ./d:node"> |
<div class="linkMenuBlock"> |
<div class="linkMenuBlockTitle"><xsl:apply-templates select="." mode="label"/></div> |
<div class="linkLeftMenu"> |
<div class="listClean"> |
<ul id="portalMenu"> |
<xsl:for-each select="./d:node"> |
<xsl:choose> |
<xsl:when test="@id = $ACTUAL"> |
<li class="navPlace selected"> |
<xsl:apply-templates select="." mode="label"/> |
</li> |
</xsl:when> |
<xsl:otherwise> |
<li class="navPlace"> |
<xsl:apply-templates select="." mode="link"/> |
</li> |
</xsl:otherwise> |
</xsl:choose> |
</xsl:for-each> |
<xsl:for-each select="./d:leaf"> |
<li class="navPlace"><xsl:call-template name="linkPrefix"/><xsl:apply-templates select="." mode="link"/></li> |
</xsl:for-each> |
</ul> |
</div> |
</div> |
</div> |
</xsl:if> |
</xsl:template> |
<xsl:template name="linkPrefix"> |
... |
</xsl:template> |
<!-- |
=========================================================== |
| Apresentar Todo o Directorio em árvore - NAO ESTA EM USO DE MOMENTO |
/impl/conf/berserk/sd.xml |
---|
853,7 → 853,7 |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="ServicesOrOrganisms"/> |
<chain name="AuthenticatedUsers"/> |
</filterChains> |
</service> |
<service> |
1109,6 → 1109,16 |
</filterChains> |
</service> |
<service> |
<name>LoadCoursesImportYearArea</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass> |
<description>Load All Courses</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadCoursesImportYearArea</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCoursesImportYear</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass> |
<description>Load All Courses</description> |
/impl/src/java/jomm/web/ftp/impl/FtpFile.java |
---|
34,6 → 34,7 |
private String path; |
private boolean directory; |
private String completeUrl; |
private String extension = ""; |
FileType fileType; |
45,7 → 46,8 |
this.name = ftpFile.getName(); |
this.directory = ftpFile.isDirectory(); |
this.size = ftpFile.getSize(); |
if(name.lastIndexOf('.')>=0) |
this.extension = name.substring(name.lastIndexOf('.')); |
if (ftpFile.getType() == FTPFile.DIRECTORY_TYPE) |
fileType = FileType.DIRECTORY; |
else if (ftpFile.getType() == FTPFile.FILE_TYPE) |
80,6 → 82,11 |
{ |
return name; |
} |
public String getExtension() |
{ |
return extension; |
} |
public String getName(HttpServletRequest request) throws URIException |
{ |
String queryAux = NavPlace.getAuxiliaryQueryString(request); |
141,4 → 148,18 |
} |
return navPlaces; |
} |
public static List<IFile> init(FTPFile[] files, String server, String path) throws URIException |
{ |
List<IFile> iFiles = new ArrayList<IFile>(); |
for (FTPFile ftpFile : files) |
{ |
IFile iFile; |
if (path.endsWith("/")) |
iFile = new FtpFile(ftpFile, server + URIUtil.encodePath(path +ftpFile.getName(),"ISO-8859-1"), path); |
else iFile = new FtpFile(ftpFile, server + URIUtil.encodePath(path + "/" + ftpFile.getName(),"ISO-8859-1"), path); |
iFiles.add(iFile); |
} |
return iFiles; |
} |
} |
/impl/src/java/jomm/web/ftp/IFile.java |
---|
22,6 → 22,7 |
public InputStream getInputStream() throws IOException; |
public Date getLastUpdate(); |
public String getName(); |
public String getExtension(); |
public String getName(HttpServletRequest request) throws URIException; |
public long getSize(); |
public String getOriginalPath(); |
/impl/src/java/pt/estgp/estgweb/utils/DatesUtils.java |
---|
63,6 → 63,31 |
} |
} |
public static enum SemestreModerate |
{ |
S1, |
S2, |
S1S2 |
} |
public static SemestreModerate getSemestreModerate() |
{ |
MyCalendar mc = new MyCalendar(); |
int month = mc.getMonth(); |
if(month > 8 && month <=12) |
{ |
return SemestreModerate.S1; |
} |
else if(month >= 1 && month <=3) |
{ |
return SemestreModerate.S1S2; |
} |
else |
{ |
return SemestreModerate.S2; |
} |
} |
public static String getImportYearIntranet() |
{ |
MyCalendar mc = new MyCalendar(); |
/impl/src/java/pt/estgp/estgweb/utils/AreasBelongUtils.java |
---|
New file |
0,0 → 1,126 |
package pt.estgp.estgweb.utils; |
import pt.estgp.estgweb.domain.SigesUser; |
import pt.estgp.estgweb.Globals; |
import javax.servlet.http.HttpServletRequest; |
import java.util.List; |
import jomm.utils.MessageResources; |
/** |
* @author Jorge |
* @date 16/Jan/2009 |
* @time 15:45:25 |
*/ |
public class AreasBelongUtils |
{ |
private static String AREA_MESSAGE_RESOURCES_PREFIX = "area."; |
public static String AREAS_SEPARATOR = ","; |
private static List<String> areas = null; |
public static boolean hasArea(SigesUser u, List requiredAreas) |
{ |
if(u == null) |
return false; |
for(Object area: requiredAreas) |
{ |
if(hasArea(u,(String) area)) |
return true; |
} |
return false; |
} |
public static boolean hasArea(SigesUser u, String requiredArea) |
{ |
if(u == null) |
return false; |
if(u.getAreasBelong() == null || u.getAreasBelong().length() == 0) |
return false; |
String[] areas = u.getAreasBelong().split(AREAS_SEPARATOR); |
for(String area: areas) |
{ |
if(area.equals(requiredArea)) |
return true; |
} |
return false; |
} |
public static boolean hasArea(List<String> areas, String requiredAreas) |
{ |
if(areas == null || areas.size() == 0) |
return false; |
for(String area: areas) |
{ |
if(area.equals(requiredAreas)) |
return true; |
} |
return false; |
} |
public static List readAreas() |
{ |
if(areas == null) |
{ |
areas = Globals.AREAS; |
} |
return areas; |
} |
public static String getAreaDescription(HttpServletRequest request, String area) |
{ |
return MessageResources.getMessage(request, AREA_MESSAGE_RESOURCES_PREFIX + area); |
} |
public static String getSerialAreas(List<String> targetRoles) |
{ |
return StringsUtils.getSerialStrings(targetRoles,AREAS_SEPARATOR); |
} |
public static List<String> getAreasFromSerial(String areasStr) |
{ |
return StringsUtils.getStringsFromSerial(areasStr,AREAS_SEPARATOR); |
} |
public static String addArea(String old, String newArea) |
{ |
if(old == null || old.length() == 0) |
return newArea; |
else |
{ |
List<String> oldArea = getAreasFromSerial(old); |
if(!oldArea.contains(newArea)) |
oldArea.add(newArea); |
else |
return old; |
return getSerialAreas(oldArea); |
} |
} |
public static String removeArea(String old, String toRemoveArea) |
{ |
if(old == null || old.length() == 0) |
return ""; |
else |
{ |
List<String> oldAreas = getAreasFromSerial(old); |
while(oldAreas.contains(toRemoveArea)) |
oldAreas.remove(toRemoveArea); |
return getSerialAreas(oldAreas); |
} |
} |
public static String catArea(String old, String newArea) |
{ |
if(old == null || old.length() == 0) |
return newArea; |
else |
return old + AREAS_SEPARATOR + newArea; |
} |
} |
/impl/src/java/pt/estgp/estgweb/utils/StringsUtils.java |
---|
New file |
0,0 → 1,41 |
package pt.estgp.estgweb.utils; |
import java.util.List; |
import java.util.ArrayList; |
/** |
* @author Jorge |
* @date 16/Jan/2009 |
* @time 15:40:42 |
*/ |
public class StringsUtils |
{ |
public static String getSerialStrings(List<String> strings, String separator) |
{ |
if (strings == null) |
return null; |
String roles = null; |
for (String role : strings) |
{ |
if (roles == null) |
roles = role; |
else |
roles += separator + role; |
} |
return roles; |
} |
public static List<String> getStringsFromSerial(String stringsSerial, String separator) |
{ |
if (stringsSerial == null) |
return null; |
String[] roles = stringsSerial.split(separator); |
List<String> l = new ArrayList<String>(); |
for (String role : roles) |
{ |
l.add(role); |
} |
return l; |
} |
} |
/impl/src/java/pt/estgp/estgweb/utils/Dom4jUtil.java |
---|
13,6 → 13,7 |
import java.net.URL; |
import java.util.Hashtable; |
import java.util.Map; |
import java.util.HashMap; |
import pt.estgp.estgweb.Globals; |
import javax.xml.transform.TransformerFactory; |
65,9 → 66,51 |
}); |
} |
private static Map<String,byte[]> sourceXmls = new HashMap<String,byte[]>(); |
/** |
* Search for Source Document in cache |
* |
* @param file in src tree |
* @return bytes |
* @throws java.io.IOException on read error |
*/ |
public static byte[] getSourceFile(String file) throws IOException |
{ |
byte[] bytes; |
if((bytes = sourceXmls.get(file)) != null) |
{ |
return bytes; |
} |
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(file); |
ByteArrayOutputStream output = new ByteArrayOutputStream(); |
int read; |
byte[] buffer = new byte[1024]; |
while((read = stream.read(buffer)) > 0) |
{ |
output.write(buffer,0,read); |
} |
output.close(); |
stream.close(); |
bytes = output.toByteArray(); |
sourceXmls.put(file, bytes); |
return bytes; |
} |
public static Document parseSourceFileFromCache(String file) throws DocumentException, IOException |
{ |
byte[] bytes = getSourceFile(file); |
SAXReader reader = new SAXReader(); |
reader.setValidation(false); |
createIgnoreErrorHandler(reader); |
return reader.read(new ByteArrayInputStream(bytes)); |
} |
public static Document parseSourceFile(String file) throws DocumentException, IOException |
{ |
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(file); |
SAXReader reader = new SAXReader(); |
reader.setValidation(false); |
createIgnoreErrorHandler(reader); |
/impl/src/java/pt/estgp/estgweb/utils/RoleManager.java |
---|
82,30 → 82,12 |
public static String getSerialRoles(List<String> targetRoles) |
{ |
if(targetRoles == null) |
return null; |
String roles = null; |
for(String role: targetRoles) |
{ |
if(roles == null) |
roles = role; |
else |
roles += ROLE_SEPARATOR + role; |
} |
return roles; |
return StringsUtils.getSerialStrings(targetRoles,ROLE_SEPARATOR); |
} |
public static List<String> getRolesFromSerial(String rolesStr) |
{ |
if(rolesStr == null) |
return null; |
String[] roles = rolesStr.split(ROLE_SEPARATOR); |
List<String> l = new ArrayList<String>(); |
for(String role: roles) |
{ |
l.add(role); |
} |
return l; |
return StringsUtils.getStringsFromSerial(rolesStr,ROLE_SEPARATOR); |
} |
public static String addRole(String old, String newRole) |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
5,6 → 5,8 |
import pt.estgp.estgweb.domain.DirectoryImpl; |
import java.util.List; |
import java.util.Map; |
import java.util.HashMap; |
import java.math.BigDecimal; |
/** |
27,12 → 29,24 |
CLASSES_ABSOLUTE_PATH = CLASSES_ABSOLUTE_PATH.substring(0,CLASSES_ABSOLUTE_PATH.length()-1); |
} |
public static List<DirectoryImpl> DIRECTORIES = null; |
//place, List |
public static Map<String,List<DirectoryImpl>> DIRECTORIES = new HashMap<String,List<DirectoryImpl>>(); |
static |
public static List<DirectoryImpl> getDirectories(String place) |
{ |
DirectoryService directoryService = new DirectoryService(); |
DIRECTORIES = directoryService.loadDirectories(CLASSES_ABSOLUTE_PATH); |
List<DirectoryImpl> directories = DIRECTORIES.get(place); |
if(directories != null) |
return directories; |
else |
{ |
DirectoryService directoryService = new DirectoryService(); |
directories = directoryService.loadDirectories(CLASSES_ABSOLUTE_PATH,place); |
DIRECTORIES.put(place,directories); |
return directories; |
} |
} |
82,6 → 96,9 |
public static final String BLOG_TYPE_COURSE_UNIT = ConfigProperties.getProperty("blog.type.courseunit"); |
public static final List<String> AREAS = ConfigProperties.getListValues("area"); |
/*SIGES WEB SERVICES*/ |
public static final BigDecimal NATIONAL_INSTITUTION_CODE = new BigDecimal(ConfigProperties.getIntProperty("national.institution.code")); |
public static final BigDecimal SIGES_INSTITUTION_CODE = new BigDecimal(ConfigProperties.getIntProperty("siges.institution.code")); |
/impl/src/java/pt/estgp/estgweb/services/courses/CoursesCommonServices.java |
---|
107,7 → 107,7 |
int missing = DaoFactory.getCourseUnitDaoImpl().countMissingProgramGivenCourse(course.getId()); |
if(missing > 0) |
{ |
DefaultToDo defaultToDo = new DefaultToDo(course.getName(),null,null, "course.courseunit.program.objectives.todo",""+missing,"/user/startLoadDirectedCoordinatedCoursesFromHome.do#" + course.getId()); |
DefaultToDo defaultToDo = new DefaultToDo(course.getName(),null,null, "course.courseunit.program.objectives.todo",""+missing,"/user/startLoadCoursesProgramsFromHome.do?area=" + course.getArea() +"#" + course.getId()); |
todos.add(defaultToDo); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courses/SetUserArea.java |
---|
New file |
0,0 → 1,76 |
package pt.estgp.estgweb.services.courses; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.estgp.estgweb.utils.StringsUtils; |
import pt.estgp.estgweb.utils.AreasBelongUtils; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.*; |
import jomm.dao.impl.AbstractDao; |
import static org.hibernate.criterion.Restrictions.*; |
import java.util.List; |
import org.hibernate.Query; |
import org.hibernate.Criteria; |
import org.apache.log4j.Logger; |
/** |
* @author Jorge |
* @date 16/Jan/2009 |
* @time 15:17:12 |
*/ |
public class SetUserArea |
{ |
private static final Logger logger = Logger.getLogger(SetUserArea.class); |
public void run() |
{ |
List<Student> students = DaoFactory.getStudentDaoImpl().findAll(); |
for (Student student : students) |
{ |
Query q = AbstractDao.getCurrentSession().createQuery("select distinct c.area from c in class " + Course.class.getName() + " inner join c.courseUnits as cu inner join cu.students as s where s.id = " + student.getId()); |
List<String> areas = q.list(); |
if (areas != null && areas.size() > 0) |
{ |
for(String area: areas) |
{ |
student.removeRole("teacher." + area); |
student.addRole("student." + area); |
} |
String areasStr = AreasBelongUtils.getSerialAreas(areas); |
student.setAreasBelong(areasStr); |
logger.info("Setting student: " + student.getId() + " areas:" + areasStr); |
} |
else |
logger.warn("Student ID=" + student.getId() + ": SIGES(" + student.getSigesCode() + ")" + student.getName() + " has no subscribed units"); |
} |
List<Teacher> teachers = DaoFactory.getTeacherDaoImpl().findAll(); |
for (Teacher teacher : teachers) |
{ |
Query q = AbstractDao.getCurrentSession().createQuery("select distinct c.area from c in class " + Course.class.getName() + " inner join c.courseUnits as cu inner join cu.teachers as s where s.id = " + teacher.getId()); |
List<String> areas = q.list(); |
if (areas != null && areas.size() > 0) |
{ |
for(String area: areas) |
{ |
teacher.addRole("teacher." + area); |
} |
String areasStr = AreasBelongUtils.getSerialAreas(areas); |
teacher.setAreasBelong(areasStr); |
logger.info("Setting Teacher: " + teacher.getId() + " areas:" + areasStr); |
} |
else |
logger.warn("Student ID=" + teacher.getId() + ": SIGES(" + teacher.getSigesCode() + ")" + teacher.getName() + " has no teached units"); |
} |
} |
public static void main(String[] args) throws ServiceException |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
new SetUserArea().run(); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java |
---|
168,6 → 168,18 |
return courseViews; |
} |
public List<CourseView> loadCoursesImportYearArea(String importYear, String area) throws ServiceException |
{ |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllOrderByName(importYear,area); |
List<CourseView> courseViews = new ArrayList<CourseView>(); |
for(Course c: courses) |
{ |
CourseView courseView = new CourseView(c); |
courseViews.add(courseView); |
} |
return courseViews; |
} |
public List<CourseView> loadCoursesImportYear() throws ServiceException |
{ |
String importYearIntranet = DatesUtils.getImportYear(); |
/impl/src/java/pt/estgp/estgweb/services/courseunits/DirectedCoordinatedCourses.java |
---|
17,10 → 17,12 |
private List<CourseView> merge; |
private int updated; |
private int missing; |
private String area; |
private long courseId; |
public DirectedCoordinatedCourses() |
{ |
System.out.println(""); |
} |
public List<CourseView> getDirectedCourses() |
78,5 → 80,24 |
} |
public String getArea() |
{ |
return area; |
} |
public void setArea(String area) |
{ |
this.area = area; |
} |
public long getCourseId() |
{ |
return courseId; |
} |
public void setCourseId(long courseId) |
{ |
this.courseId = courseId; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/DirectedCoordinatedUnitsService.java |
---|
1,13 → 1,12 |
package pt.estgp.estgweb.services.courseunits; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.utils.CourseViewComparator; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.utils.AreasBelongUtils; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.ArrayList; |
64,21 → 63,76 |
return directedCoordinatedCourses; |
} |
public DirectedCoordinatedCourses loadForServices(String importYear, UserSession userSession) |
// public DirectedCoordinatedCourses loadForServices(String importYear, UserSession userSession) |
// { |
// if(importYear == null) |
// importYear = DatesUtils.getImportYear(); |
// List<Course> courses = DaoFactory.getCourseDaoImpl().findAllOrderByName(importYear); |
// |
// List<CourseView> courseViews = new ArrayList<CourseView>(); |
// for(Course c : courses) |
// { |
// CourseView cV = new CourseView(c, true); |
// courseViews.add(cV); |
// } |
// fill(courseViews); |
// DirectedCoordinatedCourses directedCoordinatedCourses = new DirectedCoordinatedCourses(); |
// directedCoordinatedCourses.setMerge(courseViews); |
// return directedCoordinatedCourses; |
// } |
public DirectedCoordinatedCourses loadForServices(String importYear, long courseId, String semestre, String area, TeachersSituationEnum teachersSituationEnum, UserSession userSession) |
{ |
if(importYear == null) |
importYear = DatesUtils.getImportYear(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllOrderByName(importYear); |
/** |
* Area and Course Initialization |
*/ |
if (area == null && userSession.getUser() != null && userSession.getUser() instanceof Teacher) |
{ |
SigesUser sigesUser = (SigesUser) userSession.getUser(); |
if (sigesUser.getAreasBelong() != null && sigesUser.getAreasBelong().length() > 0) |
{ |
area = AreasBelongUtils.getAreasFromSerial(sigesUser.getAreasBelong()).get(0); |
} |
} |
/** |
* If is a student can see only his course |
*/ |
if (userSession.getUser() != null && userSession.getUser() instanceof Student) |
{ |
StudentImpl sigesUser = (StudentImpl) userSession.getUser(); |
if (sigesUser.getSubscribedUnits() != null && sigesUser.getSubscribedUnits().size() > 0) |
{ |
Course course = sigesUser.getSubscribedUnits().iterator().next().getCourse(); |
courseId = course.getId(); |
} |
} |
List<Course> courses; |
if(courseId > 0) |
{ |
courses = new ArrayList<Course>(); |
courses.add(DaoFactory.getCourseDaoImpl().get(courseId)); |
} |
else |
{ |
courses = DaoFactory.getCourseDaoImpl().findAllOrderByName(importYear,area); |
} |
List<CourseView> courseViews = new ArrayList<CourseView>(); |
for(Course c : courses) |
{ |
CourseView cV = new CourseView(c, true); |
CourseView cV = new CourseView(c, false); |
courseViews.add(cV); |
} |
fill(courseViews); |
fill(courseViews, semestre, importYear, teachersSituationEnum); |
DirectedCoordinatedCourses directedCoordinatedCourses = new DirectedCoordinatedCourses(); |
directedCoordinatedCourses.setMerge(courseViews); |
directedCoordinatedCourses.setArea(area); |
directedCoordinatedCourses.setCourseId(courseId); |
return directedCoordinatedCourses; |
} |
112,6 → 166,48 |
} |
} |
private void fill(List<CourseView> courseViews, String semestre, String importYear, TeachersSituationEnum teachersSituationEnum) |
{ |
boolean withTeacher = true; |
boolean withNoTeacher = true; |
if(teachersSituationEnum == TeachersSituationEnum.withNoTeachers) |
withTeacher = false; |
else if(teachersSituationEnum == TeachersSituationEnum.withTeachers) |
withNoTeacher = false; |
for (CourseView cV : courseViews) |
{ |
cV.setCourseUnitsWithNoProgramS1(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithNoProgramS2(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithProgramCheckedS1(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithProgramCheckedS2(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithProgramNotCheckedS1(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithProgramNotCheckedS2(new ArrayList<CourseUnitView>()); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadCourseUnits(cV.getId(),semestre,importYear,withTeacher,withNoTeacher); |
for (CourseUnit cU : courseUnits) |
{ |
CourseUnitView cUV = new CourseUnitView(cU,true,false,false,false); |
if (cUV.getProgramStreamId() == null) |
if (cUV.getSemestre().equals("S1")) |
cV.getCourseUnitsWithNoProgramS1().add(cUV); |
else |
cV.getCourseUnitsWithNoProgramS2().add(cUV); |
else if (cUV.isValidProgram()) |
if (cUV.getSemestre().equals("S1")) |
cV.getCourseUnitsWithProgramCheckedS1().add(cUV); |
else |
cV.getCourseUnitsWithProgramCheckedS2().add(cUV); |
else if (cUV.getSemestre().equals("S1")) |
cV.getCourseUnitsWithProgramNotCheckedS1().add(cUV); |
else |
cV.getCourseUnitsWithProgramNotCheckedS2().add(cUV); |
} |
} |
} |
public DirectedCoordinatedCourses update(DirectedCoordinatedCourses directedCoordinatedCourses, UserSession userSession) |
{ |
int counter = 0; |
153,4 → 249,23 |
} |
return counter; |
} |
public static enum TeachersSituationEnum |
{ |
withTeachers, |
withNoTeachers, |
all; |
public static TeachersSituationEnum parse(String situation) |
{ |
if(situation == null) |
return all; |
else if(situation.equals("withTeachers")) |
return withTeachers; |
else if(situation.equals("withNoTeachers")) |
return withNoTeachers; |
else |
return all; |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultResult.java |
---|
11,6 → 11,7 |
public class DefaultResult implements IResult |
{ |
private String title; |
private String subTitle; |
21,8 → 22,10 |
private boolean subTitleKey = false; |
private boolean textKey = false; |
private LabelGroup subTitlesGroup = null; |
public DefaultResult() { |
} |
90,4 → 93,15 |
public void setSubTitleKey(boolean subTitleKey) { |
this.subTitleKey = subTitleKey; |
} |
public LabelGroup getSubTitlesGroup() |
{ |
return subTitlesGroup; |
} |
public void setSubTitlesGroup(LabelGroup subTitlesGroup) |
{ |
this.subTitlesGroup = subTitlesGroup; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/common/CommonServicesManager.java |
---|
157,7 → 157,7 |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
logger.error(moduleKey.getMessageKey() + " - query:" + query + ": " + e, e); |
throw e; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/common/IResult.java |
---|
1,5 → 1,8 |
package pt.estgp.estgweb.services.common; |
import java.util.List; |
import java.util.ArrayList; |
/** |
* @author Jorge Machado |
* @date 24/Abr/2008 |
16,4 → 19,85 |
public String getText(); |
public boolean isTextKey(); |
public String getUrl(); |
public LabelGroup getSubTitlesGroup(); |
/** |
* Class to support groups of labels |
* usefull to add groups of message keys |
*/ |
public static class LabelGroup |
{ |
private String title; |
private boolean key; |
private List<Label> labels; |
public LabelGroup() |
{ |
labels = new ArrayList<Label>(); |
} |
public List<Label> getLabels() |
{ |
return labels; |
} |
public void setLabels(List<Label> labels) |
{ |
this.labels = labels; |
} |
public String getTitle() |
{ |
return title; |
} |
public void setTitle(String title) |
{ |
this.title = title; |
} |
public boolean isKey() |
{ |
return key; |
} |
public void setKey(boolean key) |
{ |
this.key = key; |
} |
} |
public static class Label |
{ |
private String label; |
private boolean key; |
public Label(String label, boolean key) |
{ |
this.label = label; |
this.key = key; |
} |
public String getLabel() |
{ |
return label; |
} |
public void setLabel(String label) |
{ |
this.label = label; |
} |
public boolean isKey() |
{ |
return key; |
} |
public void setKey(boolean key) |
{ |
this.key = key; |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/utils/TransformXmlService.java |
---|
32,7 → 32,6 |
String xmlFile = args[0]; |
String xslTemplate = args[1]; |
String fileDest = args[2]; |
System.out.println(""); |
try |
{ |
new TransformXmlService().transform(xmlFile,xslTemplate,fileDest); |
/impl/src/java/pt/estgp/estgweb/services/profile/SetUserAreaOfficeExtFromCSV.java |
---|
New file |
0,0 → 1,88 |
package pt.estgp.estgweb.services.profile; |
import org.apache.log4j.Logger; |
import org.hibernate.Query; |
import pt.estgp.estgweb.services.courses.SetUserArea; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.domain.Student; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.utils.AreasBelongUtils; |
import pt.estgp.estgweb.Globals; |
import java.util.List; |
import java.io.*; |
import jomm.dao.impl.AbstractDao; |
/** |
* @author Jorge |
* @date 16/Jan/2009 |
* @time 15:17:12 |
*/ |
public class SetUserAreaOfficeExtFromCSV |
{ |
private static final Logger logger = Logger.getLogger(SetUserAreaOfficeExtFromCSV.class); |
public void run() throws IOException |
{ |
InputStream s = Thread.currentThread().getContextClassLoader().getResourceAsStream("pt/estgp/estgweb/services/profile/docentes.csv"); |
BufferedReader reader = new BufferedReader(new InputStreamReader(s)); |
String line; |
while((line = reader.readLine())!= null) |
{ |
String[] fields = line.split(";"); |
String area = fields[0]; |
String office = fields[1]; |
String ext = fields[2]; |
String mail = fields[3]; |
List<Teacher> teachers = DaoFactory.getTeacherDaoImpl().findByEmail(mail); |
if(teachers == null || teachers.size() == 0) |
{ |
logger.error("Teacher Not Found for email: "+mail); |
} |
else if(teachers.size()>1) |
{ |
logger.error("Multiple Teachers Found for email: "+mail); |
} |
else |
{ |
Teacher t = teachers.get(0); |
logger.info("Teacher " + t.getName() + " found"); |
t.setOffice(office); |
t.setExt(ext); |
if(area.equals("C. Empresariais")) |
{ |
t.setMainArea("ce"); |
} |
else if(area.equals("Design")) |
{ |
t.setMainArea("dg"); |
} |
else if(area.equals("Engenharia")) |
{ |
t.setMainArea("eg"); |
} |
else if(area.equals("C. Humanas")) |
{ |
t.setMainArea("ch"); |
} |
else |
{ |
logger.error("Area not found: " + mail + "->" + area); |
} |
} |
} |
reader.close(); |
s.close(); |
} |
public static void main(String[] args) throws ServiceException, IOException |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
new SetUserAreaOfficeExtFromCSV().run(); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/profile/ProfileCommonServices.java |
---|
8,6 → 8,7 |
import pt.estgp.estgweb.services.courseunits.CourseUnitsCommonServices; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.Globals; |
import org.apache.log4j.Logger; |
import java.util.List; |
57,6 → 58,25 |
{ |
DefaultResult defaultResult = new DefaultResult(); |
defaultResult.setTitle(u.getName()); |
defaultResult.setSubTitleKey(true); |
if(u.hasRole(Globals.TEACHER_ROLE)) |
{ |
defaultResult.setSubTitle("user.role." + Globals.TEACHER_ROLE); |
} |
else if(u.hasRole(Globals.STUDENT_ROLE)) |
{ |
defaultResult.setSubTitle("user.role." + Globals.STUDENT_ROLE); |
}else if(u.isSuperuser()) |
{ |
defaultResult.setSubTitle("superuser"); |
} |
else if(u.isAdmin()) |
{ |
defaultResult.setSubTitle("user.role." + Globals.ADMIN_ROLE); |
} |
if (from == null) |
defaultResult.setUrl("/startProfile.do?userView.id=" + u.getId()); |
else |
/impl/src/java/pt/estgp/estgweb/services/profile/docentes.csv |
---|
New file |
0,0 → 1,95 |
+Design;3.17;159;verab@estgp.pt |
/impl/src/java/pt/estgp/estgweb/services/directories/DirectoryService.java |
---|
20,45 → 20,49 |
private static final Logger logger = Logger.getLogger(DirectoryService.class); |
public List<DirectoryImpl> loadDirectories(String classesPath) |
public List<DirectoryImpl> loadDirectories(String classesPath, String place) |
{ |
List<DirectoryImpl> directories = new ArrayList<DirectoryImpl>(); |
String directoryResources = classesPath + "/pt/estgp/estgweb/directories"; |
if(directoryResources.startsWith("file:")) |
if (directoryResources.startsWith("file:")) |
{ |
directoryResources = directoryResources.substring("file:".length()); |
} |
System.out.println("Using directory resources from:" + directoryResources); |
File f = new File(directoryResources); |
for(File dir: f.listFiles()) |
for (File dir : f.listFiles()) |
{ |
if(dir.getName().endsWith("xml")) |
if (dir.getName().endsWith("xml")) |
{ |
logger.info("Possible directory: " + dir.getName()); |
try |
{ |
Document directoryDocument = Dom4jUtil.parse(dir); |
String targetRole = directoryDocument.getRootElement().attribute("targetRole").getValue(); |
String id = directoryDocument.getRootElement().attribute("id").getValue(); |
String menuKey = directoryDocument.getRootElement().attribute("menuKey").getValue(); |
DirectoryImpl directory = new DirectoryImpl(); |
directory.setId(id); |
directory.setKey(menuKey); |
directory.setRole(targetRole); |
directories.add(directory); |
String targetPlace = directoryDocument.getRootElement().attribute("place").getValue(); |
if (targetPlace.equals(place)) |
{ |
String targetRole = directoryDocument.getRootElement().attribute("targetRole").getValue(); |
String id = directoryDocument.getRootElement().attribute("id").getValue(); |
String menuKey = directoryDocument.getRootElement().attribute("menuKey").getValue(); |
DirectoryImpl directory = new DirectoryImpl(); |
directory.setId(id); |
directory.setKey(menuKey); |
directory.setRole(targetRole); |
directories.add(directory); |
} |
} |
catch (DocumentException e) |
{ |
logger.error("Error parsing directory " + dir.getAbsolutePath(),e); |
logger.error("Error parsing directory " + dir.getAbsolutePath(), e); |
} |
catch (MalformedURLException e) |
{ |
logger.error("Error parsing directory " + dir.getAbsolutePath(),e); |
logger.error("Error parsing directory " + dir.getAbsolutePath(), e); |
} |
catch (Exception e) |
{ |
logger.error("Error parsing directory " + dir.getAbsolutePath(),e); |
logger.error("Error parsing directory " + dir.getAbsolutePath(), e); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java |
---|
63,6 → 63,21 |
.list(); |
} |
public List<Course> findAllImportYearOrderByName(String importYear, String area) |
{ |
Criteria c = createCriteria(); |
if (importYear != null && importYear.length() > 0) |
{ |
c.add(eq("importYear", importYear)); |
} |
if (area != null && area.length() > 0) |
{ |
c.add(eq("area", area)); |
} |
return c.addOrder(Order.asc("name")) |
.list(); |
} |
public List<Course> findAllOrderByName(String importYear) |
{ |
return createCriteria() |
71,6 → 86,17 |
.list(); |
} |
public List<Course> findAllOrderByName(String importYear, String area) |
{ |
Criteria c = createCriteria(); |
if (importYear != null && importYear.length() > 0) |
c.add(eq("importYear", importYear)); |
if (area != null && area.length() > 0) |
c.add(eq("area", area)); |
return c.addOrder(Order.asc("name")) |
.list(); |
} |
public List<String> loadImportYears() |
{ |
Query q = createQuery("select distinct c.importYear from c in class " + Course.class.getName() + " order by c.importYear desc"); |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/TeacherDaoImpl.java |
---|
1,10 → 1,8 |
package pt.estgp.estgweb.domain.dao.impl; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.CourseUnitImpl; |
import pt.estgp.estgweb.domain.TeacherImpl; |
import pt.estgp.estgweb.domain.*; |
import static org.hibernate.criterion.Restrictions.*; |
import org.hibernate.criterion.Order; |
import org.hibernate.exception.GenericJDBCException; |
import java.util.List; |
48,6 → 46,8 |
} |
public List<Teacher> findByEmail(String email) |
{ |
return createCriteria().add(or(or(or(eq("email",email),eq("outEmail",email)),eq("gmail",email)),eq("msn",email))).addOrder(Order.asc("name")).list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/UserDaoImpl.java |
---|
150,8 → 150,8 |
} |
else |
criteria = createCriteria(); |
Criterion textSearch = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.parse(typeToSearch), "name", "username"); |
Criterion text2Search = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.parse(typeToSearch), "email"); |
Criterion textSearch = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.AllWords, "name", "username"); |
Criterion text2Search = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.AllWords, "email"); |
Criterion fields = or(textSearch, text2Search); |
return criteria.add(fields) |
.addOrder(Order.desc("name")) |
192,4 → 192,9 |
.setFirstResult(page * maxResults); |
return criteria.list(); |
} |
public List<User> findByEmail(String email) |
{ |
return createCriteria().add(or(or(or(eq("email",email),eq("outEmail",email)),eq("gmail",email)),eq("msn",email))).list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java |
---|
205,6 → 205,10 |
Criterion c = createSearchQuery(query, searchTypeEnum); |
Criteria criteria = createRolesTypeCriteria(roles, null, null, internal); |
criteria.add(c); |
for(String notSearchable : Globals.ANNOUNCEMENT_NOT_STANDARD) |
{ |
criteria.add(not(eq("type",notSearchable))); |
} |
return criteria.list().size(); |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
13,6 → 13,7 |
import org.hibernate.criterion.Order; |
import org.hibernate.Criteria; |
import org.hibernate.Query; |
import org.hibernate.sql.JoinFragment; |
import org.apache.log4j.Logger; |
import java.util.List; |
47,40 → 48,40 |
public List<CourseUnit> loadByCourse(long course, String importYear) |
{ |
return createCriteria().add(eq("importYear",importYear)).add(eq("course.id", course)).list(); |
return createCriteria().add(eq("importYear", importYear)).add(eq("course.id", course)).list(); |
} |
public List<CourseUnit> load( String importYear, String semestre) |
public List<CourseUnit> load(String importYear, String semestre) |
{ |
return createCriteria().add(eq("importYear",importYear)).add(eq("semestre", semestre)).list(); |
return createCriteria().add(eq("importYear", importYear)).add(eq("semestre", semestre)).list(); |
} |
public List<Long> loadIds( String importYear, String semestre) |
public List<Long> loadIds(String importYear, String semestre) |
{ |
Query q= createQuery("select c.id from c in class " + CourseUnit.class.getName() + " where c.importYear = ? and c.semestre = ?"); |
q.setString(0,importYear); |
q.setString(1,semestre); |
Query q = createQuery("select c.id from c in class " + CourseUnit.class.getName() + " where c.importYear = ? and c.semestre = ?"); |
q.setString(0, importYear); |
q.setString(1, semestre); |
return q.list(); |
} |
public List<CourseUnit> loadSubscribedImportYearUnits(long studentId, String importYear) |
{ |
return createCriteria().add(eq("importYear",importYear)) |
.createAlias("students","st") |
return createCriteria().add(eq("importYear", importYear)) |
.createAlias("students", "st") |
.add(eq("st.id", studentId)).addOrder(Order.asc("name")).list(); |
} |
public List<CourseUnit> loadSubscribedOtherImportYearUnits(long studentId, String importYear) |
{ |
return createCriteria().add(not(eq("importYear",importYear))) |
.createAlias("students","st") |
return createCriteria().add(not(eq("importYear", importYear))) |
.createAlias("students", "st") |
.add(eq("st.id", studentId)).addOrder(Order.asc("name")).list(); |
} |
public List<CourseUnitImpl> loadTeachedImportYearUnits(long teacherId, String importYear) |
{ |
return createCriteria().add(eq("importYear",importYear)) |
.createAlias("teachers","st") |
return createCriteria().add(eq("importYear", importYear)) |
.createAlias("teachers", "st") |
.add(eq("st.id", teacherId)).addOrder(Order.asc("importYear")).addOrder(Order.asc("name")).list(); |
} |
96,27 → 97,27 |
public CourseUnit loadBySigesCodeUniqueSubscribed(String sigesCode, String year, String courseCode, long studentId, String semestre) |
{ |
List<CourseUnit> cus = createCriteria() |
List<CourseUnit> cus = createCriteria() |
.add(eq("code", sigesCode)) |
.add(eq("importYear", year)) |
.add(eq("courseCode", courseCode)) |
.add(eq("semestre", semestre)) |
.createAlias("students","st") |
.add(eq("st.id",studentId)) |
.createAlias("students", "st") |
.add(eq("st.id", studentId)) |
.list(); |
if(cus.size() > 1) |
if (cus.size() > 1) |
{ |
CourseUnit cu1 = cus.get(0); |
CourseUnit cu2 = cus.get(1); |
if(cus.size() > 2) |
if (cus.size() > 2) |
{ |
logger.error("CourseUnit in more than two places in a course:" + cu1.getCode()); |
} |
else |
{ |
if(cu1.getSemestre().equals("S1")) |
if (cu1.getSemestre().equals("S1")) |
{ |
if(cu2.getSemestre().equals("S1")) |
if (cu2.getSemestre().equals("S1")) |
logger.error("CourseUnit in more than two places in a semestre:" + cu1.getCode()); |
else |
{ |
125,7 → 126,7 |
} |
else |
{ |
if(cu2.getSemestre().equals("S2")) |
if (cu2.getSemestre().equals("S2")) |
logger.error("CourseUnit in more than two places in a semestre:" + cu1.getCode()); |
else |
{ |
134,7 → 135,7 |
} |
} |
} |
else if(cus.size() == 1) |
else if (cus.size() == 1) |
return cus.get(0); |
return null; |
151,10 → 152,32 |
.uniqueResult(); |
} |
public List<CourseUnit> loadCourseUnits(long courseId, String semestre, String year, boolean withTeacher, boolean withNoTeacher) |
{ |
Criteria c = createCriteria(); |
if(courseId > 0) |
c.add(eq("course.id", courseId)); |
if(semestre != null && semestre.length() > 0) |
c.add(eq("semestre", semestre)); |
if(year != null && year.length() > 0) |
c.add(eq("importYear", year)); |
if(withTeacher && !withNoTeacher) |
{ |
c.createAlias("teachers", "th"); |
c.add(isNotNull("th.id")); |
} |
else if(!withTeacher && withNoTeacher) |
{ |
c.createAlias("teachers", "th", JoinFragment.LEFT_OUTER_JOIN); |
c.add(isNull("th.id")); |
} |
return c.list(); |
} |
public int countCourseUnits(String query, SearchTypeEnum searchType) |
{ |
Criterion c = DaoUtils.createSearchQuery(query,searchType,"objectives","name"); |
Criterion c = DaoUtils.createSearchQuery(query, searchType, "objectives", "name"); |
return createCriteria().add(c).list().size(); |
} |
171,7 → 194,7 |
public int countCourseUnitsActualYear(String query, SearchTypeEnum searchType) |
{ |
Criterion c = DaoUtils.createSearchQuery(query,searchType,"objectives","name"); |
Criterion c = DaoUtils.createSearchQuery(query, searchType, "objectives", "name"); |
return createCriteria() |
.add(c) |
.add(eq("importYear", DatesUtils.getImportYear())) |
195,10 → 218,10 |
//todo falta a projeccao do teacher id |
return createCriteria() |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add((or(isNull("objectives"),eq("objectives","")))) |
.add((or(isNull("objectives"), eq("objectives", "")))) |
.createAlias("teachers", "th") |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add(eq("th.id",teacherId)) |
.add(eq("semestre", DatesUtils.getSemestre())) |
.add(eq("th.id", teacherId)) |
.list(); |
} |
207,22 → 230,30 |
//todo falta a projeccao do teacher id |
return createCriteria() |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add((or(isNull("programStreamId"),eq("programStreamId","")))) |
.add((or(isNull("programStreamId"), eq("programStreamId", "")))) |
.createAlias("teachers", "th") |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add(eq("th.id",teacherId)) |
.add(eq("semestre", DatesUtils.getSemestre())) |
.add(eq("th.id", teacherId)) |
.list(); |
} |
public List<CourseUnit> loadMissingObjectivesOrPrograms(long teacherId) |
{ |
//todo falta a projeccao do teacher id |
return createCriteria() |
Criteria c = createCriteria() |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add(or(or(isNull("objectives"),eq("objectives","")),or(isNull("programStreamId"),eq("programStreamId","")))) |
.add(eq("semestre",DatesUtils.getSemestre())) |
.createAlias("teachers", "th") |
.add(eq("th.id",teacherId)) |
.add(or(or(isNull("objectives"), eq("objectives", "")), or(isNull("programStreamId"), eq("programStreamId", "")))); |
DatesUtils.SemestreModerate semestreModerate = DatesUtils.getSemestreModerate(); |
if (semestreModerate == DatesUtils.SemestreModerate.S1) |
c.add(eq("semestre", "S1")); |
else if (semestreModerate == DatesUtils.SemestreModerate.S2) |
c.add(eq("semestre", "S2")); |
else |
c.add(or(eq("semestre", "S1"), eq("semestre", "S2"))); |
return c.createAlias("teachers", "th") |
.add(eq("th.id", teacherId)) |
.list(); |
} |
231,10 → 262,10 |
{ |
return createCriteria() |
.createAlias("course", "c") |
.add(eq("c.id",courseId)) |
.add(eq("c.id", courseId)) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add((or(isNull("objectives"),eq("objectives","")))) |
.add(eq("semestre", DatesUtils.getSemestre())) |
.add((or(isNull("objectives"), eq("objectives", "")))) |
.list(); |
} |
242,10 → 273,10 |
{ |
return createCriteria() |
.createAlias("course", "c") |
.add(eq("c.id",courseId)) |
.add(eq("c.id", courseId)) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add((or(isNull("programStreamId"),eq("programStreamId","")))) |
.add(eq("semestre", DatesUtils.getSemestre())) |
.add((or(isNull("programStreamId"), eq("programStreamId", "")))) |
.list(); |
} |
253,10 → 284,10 |
{ |
return createCriteria() |
.createAlias("course", "c") |
.add(eq("c.id",courseId)) |
.add(eq("c.id", courseId)) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add((or(or(isNull("objectives"),eq("objectives","")),or(isNull("programStreamId"),eq("programStreamId",""))))) |
.add(eq("semestre", DatesUtils.getSemestre())) |
.add((or(or(isNull("objectives"), eq("objectives", "")), or(isNull("programStreamId"), eq("programStreamId", ""))))) |
.list(); |
} |
266,11 → 297,4 |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/SigesUserImpl.java |
---|
New file |
0,0 → 1,10 |
package pt.estgp.estgweb.domain; |
/** |
* @author Jorge |
* @date 16/Jan/2009 |
* @time 15:34:38 |
*/ |
public abstract class SigesUserImpl extends SigesUser |
{ |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/UserView.java |
---|
29,9 → 29,12 |
private int code; |
private String name; |
private List<String> userRoles; |
private String mainArea; |
private String address; |
private String zip; |
private String country; |
private String office; |
private String ext; |
private String email; |
private String outEmail; |
private String phonenumber; |
87,13 → 90,18 |
this.gmail=user.getGmail(); |
this.msn=user.getMsn(); |
this.scholarDegree = user.getScholarDegree(); |
this.office = user.getOffice(); |
this.ext = user.getExt(); |
if(user instanceof Teacher) |
{ |
mainArea = ((Teacher)user).getMainArea(); |
code = ((Teacher)user).getSigesCode(); |
this.academicDegree = ((Teacher)user).getAcademicDegree(); |
} |
else if(user instanceof Student) |
{ |
mainArea = ((Student)user).getMainArea(); |
code = ((Student)user).getSigesCode(); |
} |
} |
121,21 → 129,36 |
user.setGmail(gmail); |
user.setMsn(msn); |
user.setScholarDegree(scholarDegree); |
user.setOffice(office); |
user.setExt(ext); |
if(password != null && password.length() > 0) |
{ |
user.setPassword(BytesUtils.getDigestMD5Hex(password)); |
} |
if(user instanceof Teacher) |
{ |
((Teacher)user).setMainArea(mainArea); |
((Teacher)user).setSigesCode(code); |
((Teacher)user).setAcademicDegree(academicDegree); |
} |
else if(user instanceof Student) |
{ |
((Student)user).setMainArea(mainArea); |
((Student)user).setSigesCode(code); |
} |
} |
public String getMainArea() |
{ |
return mainArea; |
} |
public void setMainArea(String mainArea) |
{ |
this.mainArea = mainArea; |
} |
public String getScholarDegree() |
{ |
return scholarDegree; |
581,6 → 604,26 |
this.courseUnits = courseUnits; |
} |
public String getOffice() |
{ |
return office; |
} |
public void setOffice(String office) |
{ |
this.office = office; |
} |
public String getExt() |
{ |
return ext; |
} |
public void setExt(String ext) |
{ |
this.ext = ext; |
} |
// public List<Course> getCourses() |
// { |
// if(courses == null) |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java |
---|
469,19 → 469,23 |
public String getTeachersSnipet() |
{ |
String sep = ""; |
StringBuilder strBuilder = new StringBuilder(); |
if(teachers != null && teachers.size() > 0) |
{ |
for(UserView userView: teachers) |
{ |
strBuilder |
.append(sep) |
.append(" ") |
.append(" <a href=\"mailto:") |
.append(userView.getEmail()) |
.append("\">") |
.append(userView.getName()) |
.append("</a>") |
.append(" "); |
; |
sep = ","; |
} |
} |
return strBuilder.toString(); |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseView.java |
---|
24,7 → 24,9 |
private long id; |
private String code; |
private String area; |
private String name; |
private String degree; |
private String importYear; |
84,6 → 86,7 |
this.course = course; |
this.id = course.getId(); |
this.code = course.getCode(); |
this.area = course.getArea(); |
this.name = course.getName(); |
this.degree = course.getDegree(); |
this.description = course.getDescription(); |
116,6 → 119,7 |
public void persistViewInObject(Course c) |
{ |
c.setCode(code); |
c.setArea(area); |
c.setDegree(degree); |
c.setDescription(description); |
c.setImportYear(importYear); |
182,6 → 186,16 |
this.code = code; |
} |
public String getArea() |
{ |
return area; |
} |
public void setArea(String area) |
{ |
this.area = area; |
} |
public String getName() |
{ |
return name; |
/impl/src/java/pt/estgp/estgweb/domain/GenericUserImpl.java |
---|
9,6 → 9,10 |
import org.apache.log4j.Logger; |
import javax.servlet.http.HttpServletRequest; |
import jomm.utils.MessageResources; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
97,4 → 101,19 |
{ |
return isSuperuser() || isAdmin(); |
} |
public String getRolesDescription(HttpServletRequest request,String separator) |
{ |
String sep = ""; |
StringBuilder strBuilder = new StringBuilder(); |
for (String role : getRolesList()) |
{ |
if (!role.equals(Globals.SUPER_USER_ROLE)) |
{ |
strBuilder.append(sep + MessageResources.getMessage(request, "user.role." + role)); |
sep = separator; |
} |
} |
return strBuilder.toString(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/DirWebProxy.java |
---|
2,8 → 2,9 |
import org.apache.log4j.Logger; |
import org.apache.commons.httpclient.util.URIUtil; |
import org.dom4j.Document; |
import org.dom4j.DocumentException; |
import org.apache.commons.net.ftp.FTPClient; |
import org.apache.commons.net.ftp.FTPFile; |
import org.dom4j.*; |
import org.dom4j.io.OutputFormat; |
import javax.servlet.http.HttpServlet; |
13,9 → 14,7 |
import javax.servlet.jsp.JspWriter; |
import java.io.*; |
import java.net.*; |
import java.util.Date; |
import java.util.Map; |
import java.util.HashMap; |
import java.util.*; |
import java.util.zip.ZipInputStream; |
import java.util.zip.GZIPInputStream; |
import java.util.zip.InflaterInputStream; |
25,6 → 24,10 |
import pt.estgp.estgweb.domain.UserSession; |
import freemarker.template.utility.HtmlEscape; |
import com.lowagie.text.html.HtmlEncoder; |
import jomm.web.ftp.IFile; |
import jomm.web.ftp.FileType; |
import jomm.web.ftp.impl.FtpFile; |
import jomm.web.utils.NavPlace; |
/** |
* @author Jorge Machado |
50,19 → 53,18 |
{ |
String element = (String) request.getAttribute("element"); |
if(element.equals("node")) |
if (element.equals("node")) |
{ |
processNode(request,response); |
processNode(request, response); |
} |
else |
{ |
processLeaf(request,response); |
processLeaf(request, response); |
} |
} |
/** |
* |
* @param request |
* @param response |
* @throws ServletException |
72,16 → 74,19 |
protected static void processNode(HttpServletRequest request, HttpServletResponse response) |
throws ServletException, IOException |
{ |
styleDirectory(request,response); |
styleDirectory(request, response); |
} |
protected static void processLeaf(HttpServletRequest request, HttpServletResponse response) |
throws ServletException, IOException |
{ |
String path = (String) request.getAttribute("path"); |
String startPath = (String) request.getAttribute("startPath"); |
String leafUrl = (String) request.getAttribute("leaf.url"); |
String server = (String) request.getAttribute("server"); |
String useOutputStream = (String) request.getAttribute("useOutputStream"); |
String encoding = (String) request.getAttribute("encoding"); |
String proxyKey = (String) request.getAttribute("proxyKey"); |
String proxyHost = (String) request.getAttribute("proxy.host"); |
String proxyPort = (String) request.getAttribute("proxy.port"); |
boolean style = Boolean.parseBoolean((String) request.getAttribute("style")); |
90,6 → 95,7 |
logger.info("server:" + server); |
logger.info("path:" + path); |
logger.info("proxyKey:" + proxyKey); |
logger.info("proxyHost:" + proxyHost); |
logger.info("proxyPort:" + proxyPort); |
logger.info("xml:" + xml); |
108,34 → 114,53 |
String finalURL = server + URIUtil.encodePath(path, "ISO-8859-1"); |
URL url = new URL(finalURL); |
if (!finalURL.startsWith("ftp://")) |
{ |
URL url = new URL(finalURL); |
if (useOutputStream != null && useOutputStream.equals("true")) |
{ |
InputStream stream = openStream(finalURL,proxy); |
URLConnection con = url.openConnection(); |
response.setContentType(con.getContentType()); |
if(xml == null || xml.equals("false")) |
response.setCharacterEncoding(encoding); |
response.setContentLength(con.getContentLength()); |
writeDirectStream(response,stream); |
if (useOutputStream != null && useOutputStream.equals("true")) |
{ |
InputStream stream = openStream(finalURL, proxy); |
URLConnection con = url.openConnection(); |
response.setContentType(con.getContentType()); |
if (xml == null || xml.equals("false")) |
response.setCharacterEncoding(encoding); |
response.setContentLength(con.getContentLength()); |
writeDirectStream(response, stream); |
} |
else if (xml == null || xml.equals("false")) |
{ |
InputStream stream = openStream(finalURL, proxy); |
String content = readContent2String(stream, encoding); |
generateOutputLeaf(response, request, content, style); |
} |
else |
{ |
URLConnection con = new URL(finalURL).openConnection(); |
con.connect(); |
if (con.getContentLength() > 0) |
{ |
// Document dom = Dom4jUtil.parse(stream); |
generateOutputLeafXml(response, request, finalURL, proxy, style); |
} |
} |
} |
else if(xml == null || xml.equals("false")) |
else |
{ |
InputStream stream = openStream(finalURL,proxy); |
String content = readContent2String(stream,encoding); |
generateOutputLeaf(response,request,content,style); |
} |
else |
{ |
URLConnection con = new URL(finalURL).openConnection(); |
con.connect(); |
if(con.getContentLength()>0) |
Document directoryDocument = (Document) request.getAttribute("directoryDocument"); |
if(leafUrl != null && leafUrl.length() > 0) |
{ |
// Document dom = Dom4jUtil.parse(stream); |
generateOutputLeafXml(response,request,finalURL,proxy,style); |
String endPath = ""; |
if(startPath != null) |
{ |
endPath = path.substring(startPath.length()); |
} |
path = startPath + leafUrl + endPath; |
} |
extendDiretoryDocument(request, path, proxyKey, server, startPath + leafUrl, directoryDocument); |
Dom4jUtil.write(directoryDocument,"d:/out.xml"); |
styleDirectory(request, response); |
} |
} |
catch (FileNotFoundException e) |
153,15 → 178,178 |
logger.warn("url not found for server:" + server + " and path:" + path); |
response.sendError(404); |
} |
} |
public static String FTP_FILE_PREFIX = "FTP_"; |
public static void addAttribute(Element element, String name, String value) |
{ |
element.addAttribute(name, value); |
} |
private static void generateOutputLeafXml(HttpServletResponse response,HttpServletRequest request, String finalURL,Proxy proxy, boolean style) throws IOException, DocumentException |
protected static void extendDiretoryDocument(HttpServletRequest request, String path, String serverStr, String server, String startPath, Document directoryDocument) |
throws ServletException, IOException |
{ |
if(style) |
try |
{ |
Map<String,Object> parameters = new HashMap<String,Object>(); |
String user = ConfigProperties.getProperty(serverStr + ".user"); |
String pass = ConfigProperties.getProperty(serverStr + ".pass"); |
if (path != null) |
{ |
FtpServer ftpServer = FtpServer.getServer(server, user, pass); |
FTPClient client = ftpServer.getClient(); |
Element actualNode = (Element) request.getAttribute("actualNode"); |
if(startPath.equals("/")) |
startPath = ""; |
if (path.equals(startPath)) |
{ |
client.changeWorkingDirectory(path); |
FTPFile[] files = client.listFiles(); |
List<IFile> iFiles = FtpFile.init(files, server, path); |
//root |
for (IFile iFile : iFiles) |
{ |
Element iFileElem = actualNode.addElement("leaf"); |
addAttribute(iFileElem, "id", FTP_FILE_PREFIX + "0_" + iFile.getName()); |
addAttribute(iFileElem, "idPrefixSize","" + (FTP_FILE_PREFIX + "0_").length()); |
addAttribute(iFileElem, "label", iFile.getName()); |
addAttribute(iFileElem, "visualization", "filesystem"); |
addAttribute(iFileElem, "size", "" + iFile.getSize()); |
addAttribute(iFileElem, "lastModification", "" + iFile.getLastUpdate().toString()); |
if (iFile.getType() == FileType.DIRECTORY) |
{ |
addAttribute(iFileElem, "ftpDirectory", "true"); |
} |
else |
{ |
addAttribute(iFileElem, "ftpDirectory", "false"); |
addAttribute(iFileElem, "absolute", "true"); |
addAttribute(iFileElem, "url", iFile.getCompleteUrl()); |
} |
} |
} |
else |
{ |
String pathAux = path.substring(startPath.length()); |
String[] pathFragments; |
if(path.startsWith("/")) |
pathFragments = pathAux.substring(1).split("/"); |
else |
pathFragments = pathAux.split("/"); |
client.changeWorkingDirectory(startPath); |
FTPFile[] files = client.listFiles(); |
List<IFile> iFiles = FtpFile.init(files, server, path); |
Element goDeepElement = null; |
String actualId = null; |
for (IFile iFile : iFiles) |
{ |
Element iFileElem = actualNode.addElement("node"); |
addAttribute(iFileElem, "id", FTP_FILE_PREFIX + "0_" + iFile.getName()); |
addAttribute(iFileElem, "idPrefixSize","" + (FTP_FILE_PREFIX + "0_").length()); |
addAttribute(iFileElem, "label", iFile.getName()); |
addAttribute(iFileElem, "visualization", "filesystem"); |
addAttribute(iFileElem, "size", "" + iFile.getSize()); |
addAttribute(iFileElem, "lastModification", "" + iFile.getLastUpdate().toString()); |
if (iFile.getType() == FileType.DIRECTORY) |
{ |
addAttribute(iFileElem, "ftpDirectory", "true"); |
} |
else |
{ |
addAttribute(iFileElem, "ftpDirectory", "false"); |
addAttribute(iFileElem, "absolute", "true"); |
addAttribute(iFileElem, "url", iFile.getCompleteUrl()); |
} |
if (iFile.getName().equals(pathFragments[0])) |
{ |
actualId = FTP_FILE_PREFIX + "0_" + iFile.getName(); |
goDeepElement = iFileElem; |
} |
} |
String startPathAux = startPath; |
for (int i = 0; i < pathFragments.length; i++) |
{ |
Element nextGoDeepElement = null; |
String d = pathFragments[i]; |
startPathAux = startPathAux + "/" + d; |
client.changeWorkingDirectory(startPathAux); |
files = client.listFiles(); |
iFiles = FtpFile.init(files, server, path); |
for (IFile iFile : iFiles) |
{ |
Element iFileElem; |
if(i == pathFragments.length - 1) |
iFileElem = goDeepElement.addElement("leaf"); |
else |
iFileElem = goDeepElement.addElement("node"); |
addAttribute(iFileElem, "id", FTP_FILE_PREFIX + (i+1) + "_" + iFile.getName()); |
addAttribute(iFileElem, "idPrefixSize","" + (FTP_FILE_PREFIX + (i+1) + "_").length()); |
addAttribute(iFileElem, "label", iFile.getName()); |
addAttribute(iFileElem, "visualization", "filesystem"); |
addAttribute(iFileElem, "size", "" + iFile.getSize()); |
addAttribute(iFileElem, "lastModification", "" + iFile.getLastUpdate().toString()); |
if (iFile.getType() == FileType.DIRECTORY) |
{ |
addAttribute(iFileElem, "ftpDirectory", "true"); |
} |
else |
{ |
addAttribute(iFileElem, "extension", iFile.getExtension()); |
addAttribute(iFileElem, "ftpDirectory", "false"); |
addAttribute(iFileElem, "absolute", "true"); |
addAttribute(iFileElem, "url", iFile.getCompleteUrl()); |
} |
if (i < pathFragments.length - 1 && iFile.getName().equals(pathFragments[i + 1])) |
{ |
nextGoDeepElement = iFileElem; |
actualId = FTP_FILE_PREFIX + (i+1) + "_" + iFile.getName(); |
} |
} |
goDeepElement = nextGoDeepElement; |
} |
request.setAttribute("ACTUAL_REMOTE_CHILD",actualId); |
} |
client.quit(); |
client.disconnect(); |
} |
else |
{ |
throw new FileNotFoundException("url not found for server:" + server + " and path:" + path); |
} |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
} |
} |
private static void generateOutputLeafXml(HttpServletResponse response, HttpServletRequest request, String finalURL, Proxy proxy, boolean style) throws IOException, DocumentException |
{ |
if (style) |
{ |
Map<String, Object> parameters = new HashMap<String, Object>(); |
// OutputFormat outputFormat = new OutputFormat(); |
// outputFormat.setSuppressDeclaration(true); |
// outputFormat.setEncoding("UTF-8"); |
169,24 → 357,24 |
// Dom4jUtil.write(dom,writer, outputFormat); |
// org.w3c.dom.Document d = new org.dom4j.io.DOMWriter().write(dom); |
// parameters.put("body",dom.selectSingleNode("/")); |
parameters.put("includeXML",finalURL); |
styleDirectory(request,response,parameters,null); |
parameters.put("includeXML", finalURL); |
styleDirectory(request, response, parameters, null); |
} |
else |
{ |
InputStream stream = openStream(finalURL,proxy); |
InputStream stream = openStream(finalURL, proxy); |
Document dom = Dom4jUtil.parse(stream); |
Dom4jUtil.write(dom,response.getWriter()); |
Dom4jUtil.write(dom, response.getWriter()); |
} |
} |
private static void generateOutputLeaf(HttpServletResponse response,HttpServletRequest request, String content, boolean style) throws IOException |
private static void generateOutputLeaf(HttpServletResponse response, HttpServletRequest request, String content, boolean style) throws IOException |
{ |
if(style) |
if (style) |
{ |
// Map<String,Object> parameters = new HashMap<String,Object>(); |
// parameters.put("body",content); |
styleDirectory(request,response,new HashMap<String,Object>(),content); |
styleDirectory(request, response, new HashMap<String, Object>(), content); |
} |
else |
{ |
196,35 → 384,56 |
private static void styleDirectory(HttpServletRequest request, HttpServletResponse response) throws IOException |
{ |
styleDirectory(request,response,new HashMap<String,Object>(),null); |
styleDirectory(request, response, new HashMap<String, Object>(), null); |
} |
private static void styleDirectory(HttpServletRequest request, HttpServletResponse response, Map<String,Object> parameters, String bodyContent) throws IOException |
// private static String normalizeXmlId(String id) |
// { |
// StringBuilder strBuilder = new StringBuilder(); |
// strBuilder.append('_'); |
// for(int i = 0; i < id.length();i++) |
// { |
// char c = id.charAt(i); |
// if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) |
// { |
// strBuilder.append(c); |
// } |
// else |
// { |
// strBuilder.append('.'); |
// } |
// } |
// return strBuilder.toString(); |
// } |
private static void styleDirectory(HttpServletRequest request, HttpServletResponse response, Map<String, Object> parameters, String bodyContent) throws IOException |
{ |
String stylesheet = (String) request.getAttribute("stylesheet"); |
Document directoryDocument = (Document) request.getAttribute("directoryDocument"); |
String actualNodeId = (String) request.getAttribute("actualNodeId"); |
String actualRemoteNodeId = (String) request.getAttribute("ACTUAL_REMOTE_CHILD"); |
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request); |
parameters.put("contextPath",request.getContextPath()); |
if(userSession.getUsername() != null) |
parameters.put("username",userSession.getUsername()); |
if(userSession.getName() != null) |
parameters.put("name",userSession.getName()); |
if(userSession.getUser() != null) |
parameters.put("roles",userSession.getUser().getRoles()); |
parameters.put("ACTUAL",actualNodeId); |
parameters.put("contextPath", request.getContextPath()); |
if (userSession.getUsername() != null) |
parameters.put("username", userSession.getUsername()); |
if (userSession.getName() != null) |
parameters.put("name", userSession.getName()); |
if (userSession.getUser() != null) |
parameters.put("roles", userSession.getUser().getRoles()); |
parameters.put("ACTUAL", actualNodeId); |
parameters.put("ACTUAL_REMOTE_CHILD", actualRemoteNodeId); |
try |
{ |
String html = Dom4jUtil.styleDocument(directoryDocument,stylesheet,parameters); |
if(bodyContent != null) |
html = html.replace("@@BODY_CONTENT@@",bodyContent); |
String html = Dom4jUtil.styleDocument(directoryDocument, stylesheet, parameters); |
if (bodyContent != null) |
html = html.replace("@@BODY_CONTENT@@", bodyContent); |
response.getWriter().write(html); |
} |
catch (Exception e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
response.sendError(500); |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/DirLayoutController.java |
---|
13,8 → 13,7 |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import javax.servlet.ServletException; |
import java.io.IOException; |
import java.io.FileNotFoundException; |
import java.io.*; |
import java.util.List; |
import java.util.ArrayList; |
import java.util.HashMap; |
41,7 → 40,13 |
private static final Logger logger = Logger.getLogger(DirLayoutController.class); |
public static Map<String, String> namespaces = new HashMap<String, String>(); |
static |
{ |
namespaces.put("d", "http://www.estgp.pt/baco/directory/"); |
} |
private static enum DirectoryNodeType |
{ |
node, |
104,15 → 109,14 |
String directory = request.getParameter("directory"); |
String path = request.getParameter("path"); |
try |
{ |
Document directoryDocument = Dom4jUtil.parseSourceFile("/pt/estgp/estgweb/directories/" + directory + ".xml"); |
Document directoryDocument = Dom4jUtil.parseSourceFileFromCache("/pt/estgp/estgweb/directories/" + directory + ".xml"); |
if (path.startsWith("/")) |
path = path.substring(1); |
String[] ids = path.split("/"); |
Map<String, String> namespaces = new HashMap<String, String>(); |
DirectoryNodeType directoryNodeType = null; |
String actualNodeId = null; |
Element actualNode = null; |
121,7 → 125,7 |
for (String id : ids) |
{ |
XPath idXpath = directoryDocument.createXPath("//*[@id='" + id + "']"); |
namespaces.put("d", "http://www.estgp.pt/baco/directory/"); |
idXpath.setNamespaceURIs(namespaces); |
Element idElem = (Element) idXpath.selectSingleNode(directoryDocument); |
if (idElem == null) |
173,7 → 177,7 |
} |
String externalFile = buildExternalFile(stopName, ids); |
putInRequestCommonAttributes(request, actualNodeId, directoryDocument); |
putInRequestCommonAttributes(request,actualNode, actualNodeId, directoryDocument); |
Attribute layoutStrAtt = directoryDocument.getRootElement().attribute("layout"); |
Attribute layoutRootStrAtt = directoryDocument.getRootElement().attribute("layoutRoot"); |
213,7 → 217,7 |
boolean layoutDo = true; |
if (layout != null && layout.length() > 0) layoutDo = Boolean.parseBoolean(layout); |
if (!layoutDo) layoutChoosed = "layoutEmpty"; |
putProxyAttributes(request, proxy, externalFile,xml); |
putProxyAttributes(request, proxy, externalFile,xml,url); |
request.setAttribute("label", label); |
request.setAttribute("style", style); |
request.setAttribute("xml", xml); |
249,19 → 253,23 |
return (actualNode.attribute(name) != null ? actualNode.attribute(name).getValue() : null); |
} |
private void putProxyAttributes(HttpServletRequest request, String proxy, String externalFile, String xml) |
private void putProxyAttributes(HttpServletRequest request, String proxy, String externalFile, String xml, String url) |
{ |
String server = ConfigProperties.getProperty("server." + proxy); |
String proxyHost = ConfigProperties.getProperty(proxy + ".proxy.host"); |
String proxyPort = ConfigProperties.getProperty(proxy + ".proxy.port"); |
String confStartPath = ConfigProperties.getProperty("server." + proxy + ".start.path"); |
request.setAttribute("leaf.url", url); |
request.setAttribute("server", server); |
request.setAttribute("proxyKey", proxy); |
request.setAttribute("proxy.host", proxyHost); |
request.setAttribute("proxy.port", proxyPort); |
if (confStartPath != null) |
externalFile = confStartPath + externalFile; |
request.setAttribute("path", externalFile); |
request.setAttribute("startPath", confStartPath); |
if(xml != null && xml.equals("true")) |
{ |
280,10 → 288,11 |
return; |
} |
} |
request.setAttribute("useOutputStream", "true"); |
if(!server.startsWith("ftp://")) |
request.setAttribute("useOutputStream", "true"); |
} |
private void putInRequestCommonAttributes(HttpServletRequest request, String actualNameId, Document directoryDocument) |
private void putInRequestCommonAttributes(HttpServletRequest request,Element actualNode, String actualNameId, Document directoryDocument) |
{ |
/** |
* Attributes used in Nodes and Leafs |
301,6 → 310,7 |
request.setAttribute("stylesheet", "/pt/estgp/estgweb/directories/" + styleChoosed); |
request.setAttribute("directoryDocument", directoryDocument); |
request.setAttribute("actualNodeId", actualNameId); |
request.setAttribute("actualNode", actualNode); |
request.setAttribute("targetRole", targetRoleChoosed); |
} |
335,9 → 345,9 |
return null; |
} |
Namespace dirNamespace = new Namespace("d", "http://www.estgp.pt/baco/directory/"); |
QName nodeDir = new QName("node", dirNamespace); |
QName leafDir = new QName("leaf", dirNamespace); |
public static Namespace dirNamespace = new Namespace("d", "http://www.estgp.pt/baco/directory/"); |
public static QName nodeDir = new QName("node", dirNamespace); |
public static QName leafDir = new QName("leaf", dirNamespace); |
private boolean pruneDocument(Element startElem, Map namespaces, UserSession userSession) |
{ |
503,165 → 513,6 |
} |
protected void processRequestFtp(HttpServletRequest request, String path, String serverStr, String server, String startPath) |
throws ServletException, IOException |
{ |
try |
{ |
String user = ConfigProperties.getProperty(serverStr + ".user"); |
String pass = ConfigProperties.getProperty(serverStr + ".pass"); |
if (path != null) |
{ |
DirLayoutController.FtpServer ftpServer = getServer(server, user, pass); |
FTPClient client = ftpServer.getClient(); |
client.changeWorkingDirectory(path); |
FTPFile[] files = client.listFiles(); |
List<IFile> iFiles = new ArrayList<IFile>(); |
for (FTPFile ftpFile : files) |
{ |
IFile iFile; |
if (path.endsWith("/")) |
iFile = new FtpFile(ftpFile, server + URIUtil.encodePath(path + ftpFile.getName(), "ISO-8859-1"), path); |
else |
iFile = new FtpFile(ftpFile, server + URIUtil.encodePath(path + "/" + ftpFile.getName(), "ISO-8859-1"), path); |
iFiles.add(iFile); |
} |
List<NavPlace> navPlaces = FtpFile.getNavPlaces(path, startPath); |
request.setAttribute("NavPlaces", navPlaces); |
request.setAttribute("files", iFiles); |
client.quit(); |
client.disconnect(); |
} |
else |
{ |
throw new FileNotFoundException("url not found for server:" + server + " and path:" + path); |
} |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
} |
} |
private static HashMap<String, FtpServer> servers = new HashMap<String, DirLayoutController.FtpServer>(); |
/** |
* Add a ftpServer to Cache |
* |
* @param urlStr to parse |
* @param user username |
* @param pass password |
* @return ftpServer |
*/ |
private static synchronized DirLayoutController.FtpServer addServer(String urlStr, String user, String pass) |
{ |
try |
{ |
URL url = new URL(urlStr); |
String host = url.getHost(); |
int port = url.getPort(); |
if (port <= 0) |
port = 21; |
logger.info("Connecting to " + host + "in port:" + port); |
DirLayoutController.FtpServer ftpServer = new DirLayoutController.FtpServer(host, port, user, pass); |
servers.put(urlStr, ftpServer); |
return ftpServer; |
} |
catch (MalformedURLException e) |
{ |
logger.error(e, e); |
} |
catch (IOException e) |
{ |
logger.error(e, e); |
} |
return null; |
} |
private static DirLayoutController.FtpServer getServer(String urlStr, String user, String pass) |
{ |
DirLayoutController.FtpServer ftpServer = servers.get(urlStr); |
if (ftpServer == null) |
ftpServer = addServer(urlStr, user, pass); |
return ftpServer; |
} |
public static class FtpServer |
{ |
String host = null; |
int port = 21; |
String username = null; |
String password = null; |
public FtpServer(String host, int port) |
{ |
this.host = host; |
if (port > 0) |
this.port = port; |
} |
public FtpServer(String host, int port, String username, String password) |
{ |
this.host = host; |
this.port = port; |
this.username = username; |
this.password = password; |
} |
public FTPClient getClient() throws IOException |
{ |
FTPClient ftp = new FTPClient(); |
ftp.connect(host, port); |
if (username != null) |
ftp.user(username); |
if (password != null) |
ftp.pass(password); |
return ftp; |
} |
public String getHost() |
{ |
return host; |
} |
public void setHost(String host) |
{ |
this.host = host; |
} |
public int getPort() |
{ |
return port; |
} |
public void setPort(int port) |
{ |
this.port = port; |
} |
public String getUsername() |
{ |
return username; |
} |
public void setUsername(String username) |
{ |
this.username = username; |
} |
public String getPassword() |
{ |
return password; |
} |
public void setPassword(String password) |
{ |
this.password = password; |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/FtpServer.java |
---|
New file |
0,0 → 1,138 |
package pt.estgp.estgweb.web; |
import org.apache.commons.net.ftp.FTPClient; |
import org.apache.log4j.Logger; |
import java.util.HashMap; |
import java.net.URL; |
import java.net.MalformedURLException; |
import java.io.IOException; |
/** |
* @author Jorge |
* @date 18/Jan/2009 |
* @time 18:35:11 |
*/ |
public class FtpServer |
{ |
private static final Logger logger = Logger.getLogger(FtpServer.class); |
private static HashMap<String, FtpServer> servers = new HashMap<String, FtpServer>(); |
String host = null; |
int port = 21; |
String username = null; |
String password = null; |
public FtpServer(String host, int port) |
{ |
this.host = host; |
if (port > 0) |
this.port = port; |
} |
public FtpServer(String host, int port, String username, String password) |
{ |
this.host = host; |
this.port = port; |
this.username = username; |
this.password = password; |
} |
public FTPClient getClient() throws IOException |
{ |
FTPClient ftp = new FTPClient(); |
ftp.connect(host, port); |
if (username != null) |
ftp.user(username); |
if (password != null) |
ftp.pass(password); |
return ftp; |
} |
public String getHost() |
{ |
return host; |
} |
public void setHost(String host) |
{ |
this.host = host; |
} |
public int getPort() |
{ |
return port; |
} |
public void setPort(int port) |
{ |
this.port = port; |
} |
public String getUsername() |
{ |
return username; |
} |
public void setUsername(String username) |
{ |
this.username = username; |
} |
public String getPassword() |
{ |
return password; |
} |
public void setPassword(String password) |
{ |
this.password = password; |
} |
public static FtpServer getServer(String urlStr, String user, String pass) |
{ |
FtpServer ftpServer = servers.get(urlStr); |
if (ftpServer == null) |
ftpServer = addServer(urlStr, user, pass); |
return ftpServer; |
} |
/** |
* Add a ftpServer to Cache |
* |
* @param urlStr to parse |
* @param user username |
* @param pass password |
* @return ftpServer |
*/ |
private static synchronized FtpServer addServer(String urlStr, String user, String pass) |
{ |
try |
{ |
URL url = new URL(urlStr); |
String host = url.getHost(); |
int port = url.getPort(); |
if (port <= 0) |
port = 21; |
logger.info("Connecting to " + host + "in port:" + port); |
FtpServer ftpServer = new FtpServer(host, port, user, pass); |
servers.put(urlStr, ftpServer); |
return ftpServer; |
} |
catch (MalformedURLException e) |
{ |
logger.error(e, e); |
} |
catch (IOException e) |
{ |
logger.error(e, e); |
} |
return null; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/LayoutController.java |
---|
122,7 → 122,7 |
if (path != null) |
{ |
FtpServer ftpServer = getServer(server, user, pass); |
FtpServer ftpServer = FtpServer.getServer(server, user, pass); |
FTPClient client = ftpServer.getClient(); |
client.changeWorkingDirectory(path); |
FTPFile[] files = client.listFiles(); |
151,124 → 151,4 |
logger.error(e, e); |
} |
} |
private static HashMap<String, FtpServer> servers = new HashMap<String, FtpServer>(); |
/** |
* Add a ftpServer to Cache |
* |
* @param urlStr to parse |
* @param user username |
* @param pass password |
* @return ftpServer |
*/ |
private static synchronized FtpServer addServer(String urlStr, String user, String pass) |
{ |
try |
{ |
URL url = new URL(urlStr); |
String host = url.getHost(); |
int port = url.getPort(); |
if (port <= 0) |
port = 21; |
logger.info("Connecting to " + host + "in port:" + port); |
FtpServer ftpServer = new FtpServer(host, port, user, pass); |
servers.put(urlStr, ftpServer); |
return ftpServer; |
} |
catch (MalformedURLException e) |
{ |
logger.error(e, e); |
} |
catch (IOException e) |
{ |
logger.error(e, e); |
} |
return null; |
} |
private static FtpServer getServer(String urlStr, String user, String pass) |
{ |
FtpServer ftpServer = servers.get(urlStr); |
if (ftpServer == null) |
ftpServer = addServer(urlStr, user, pass); |
return ftpServer; |
} |
public static class FtpServer |
{ |
String host = null; |
int port = 21; |
String username = null; |
String password = null; |
public FtpServer(String host, int port) |
{ |
this.host = host; |
if (port > 0) |
this.port = port; |
} |
public FtpServer(String host, int port, String username, String password) |
{ |
this.host = host; |
this.port = port; |
this.username = username; |
this.password = password; |
} |
public FTPClient getClient() throws IOException |
{ |
FTPClient ftp = new FTPClient(); |
ftp.connect(host, port); |
if (username != null) |
ftp.user(username); |
if (password != null) |
ftp.pass(password); |
return ftp; |
} |
public String getHost() |
{ |
return host; |
} |
public void setHost(String host) |
{ |
this.host = host; |
} |
public int getPort() |
{ |
return port; |
} |
public void setPort(int port) |
{ |
this.port = port; |
} |
public String getUsername() |
{ |
return username; |
} |
public void setUsername(String username) |
{ |
this.username = username; |
} |
public String getPassword() |
{ |
return password; |
} |
public void setPassword(String password) |
{ |
this.password = password; |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/form/profile/ProfileForm.java |
---|
1,20 → 1,14 |
package pt.estgp.estgweb.web.form.profile; |
import pt.estgp.estgweb.domain.User; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.views.UserView; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.upload.FormFile; |
import pt.estgp.estgweb.domain.views.RecordView; |
import pt.estgp.estgweb.web.form.ApplicationForm; |
import pt.estgp.estgweb.domain.views.UserView; |
import pt.estgp.estgweb.web.form.AddRolesForm; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import java.util.List; |
import java.util.ArrayList; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.upload.FormFile; |
/** |
* @author Fabio |
* @date 30/Abr/2008 |
31,7 → 25,7 |
private UserView userView; |
private String textToSearch; |
private static List<UserView> usersFind; |
private List<UserView> usersFind; |
private long userIDToChange; |
private String birthDayDate; |
private String typeClass; |
116,7 → 110,7 |
public void setUsersFind(List<UserView> usersFind) |
{ |
ProfileForm.usersFind = usersFind; |
this.usersFind = usersFind; |
} |
public long getUserIDToChange() |
/impl/src/java/pt/estgp/estgweb/web/form/courses/CourseForm.java |
---|
4,6 → 4,8 |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedCourses; |
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedUnitsService; |
import pt.estgp.estgweb.Globals; |
import java.util.List; |
19,9 → 21,15 |
private CourseView courseView; |
private FormFile studiesPlan; |
private DirectedCoordinatedCourses directedCoordinatedCourses = new DirectedCoordinatedCourses(); |
private String importYear; |
private String importYear = DatesUtils.getImportYear(); |
private String area; |
private List<String> areas = Globals.AREAS; |
public CourseForm() |
{ |
courseView = new CourseView(); |
72,4 → 80,73 |
{ |
this.studiesPlan = studiesPlan; |
} |
public List<String> getAreas() |
{ |
return areas; |
} |
public String getArea() |
{ |
return area; |
} |
public void setArea(String area) |
{ |
this.area = area; |
} |
/************************************ |
* |
* For Programas Selection |
* |
*/ |
private String semestre; |
private long courseId = -1; |
/** |
* possibleValues withTeachers, withNoTeachers, all |
* @see pt.estgp.estgweb.services.courseunits.DirectedCoordinatedUnitsService.TeachersSituationEnum |
*/ |
private String teachersSituation; |
public String getSemestre() |
{ |
return semestre; |
} |
public void setSemestre(String semestre) |
{ |
this.semestre = semestre; |
} |
public long getCourseId() |
{ |
return courseId; |
} |
public void setCourseId(long courseId) |
{ |
this.courseId = courseId; |
} |
public String getTeachersSituation() |
{ |
return teachersSituation; |
} |
public DirectedCoordinatedUnitsService.TeachersSituationEnum getTeacherSituationEnum() |
{ |
return DirectedCoordinatedUnitsService.TeachersSituationEnum.parse(teachersSituation); |
} |
public void setTeachersSituation(String teachersSituation) |
{ |
this.teachersSituation = teachersSituation; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/form/blogs/BlogForm.java |
---|
72,7 → 72,7 |
{ |
if (httpServletRequest.getParameter("dispatch").equals("save")) |
{ |
UserSessionImpl userSession = null; |
UserSessionImpl userSession; |
try |
{ |
userSession = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest(httpServletRequest); |
/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesController.java |
---|
1,30 → 1,32 |
package pt.estgp.estgweb.web.controllers.courses; |
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.views.CourseView; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.filters.exceptions.NotFoundException; |
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedCourses; |
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedUnitsService; |
import pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController; |
import pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsAdminController; |
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.estgp.estgweb.web.form.courses.CourseForm; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.filters.exceptions.NotFoundException; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.services.common.ISearchResults; |
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedCourses; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.utils.AreasBelongUtils; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterExpressionException; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.*; |
import org.apache.log4j.Logger; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import org.apache.struts.action.ActionForm; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import javax.servlet.ServletException; |
/** |
* @author Jorge Machado |
57,7 → 59,7 |
{ |
String code = cF.getCourseView().getCode(); |
long id = cF.getCourseView().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args; |
152,7 → 154,7 |
request.setAttribute("CourseView",cV); |
if(cV.getHtmlResult() != null) |
{ |
return mapping.findForward("submit"); |
return mapping.findForward("submit"); |
} |
cF.setCourseView(cV); |
179,20 → 181,28 |
public ActionForward loadCoursesPrograms(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseForm cF = (CourseForm) form; |
String importYear = cF.getImportYear(); |
long courseId = cF.getCourseId(); |
String semestre = cF.getSemestre(); |
String area = cF.getArea(); |
DirectedCoordinatedUnitsService.TeachersSituationEnum teachersSituationEnum = cF.getTeacherSituationEnum(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"importYear"}; |
Object[] args = new String[]{importYear}; |
String[] names = new String[]{"importYear","courseId","semestre","area","teachersSituationEnum"}; |
Object[] args = new Object[]{importYear,courseId,semestre,area,teachersSituationEnum}; |
DirectedCoordinatedCourses directedCoordinatedCourses = (DirectedCoordinatedCourses) sm.execute(RequestUtils.getRequester(request, response), "LoadCoursesProgramsForServices", args, names); |
cF.setDirectedCoordinatedCourses(directedCoordinatedCourses); |
cF.setArea(directedCoordinatedCourses.getArea()); |
cF.setCourseId(directedCoordinatedCourses.getCourseId()); |
return mapping.findForward("load.courses.programs"); |
} |
catch (FilterChainFailedException e) |
211,9 → 221,9 |
} |
public ActionForward loadDirectedCoordininatedCourses(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
244,9 → 254,9 |
} |
public ActionForward updateDirectedCoordininatedCourses(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
/impl/src/java/pt/estgp/estgweb/web/controllers/profile/ProfileController.java |
---|
356,13 → 356,13 |
try |
{ |
ProfileForm fromRequest = (ProfileForm) form; |
ProfileForm profileForm = new ProfileForm(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{fromRequest.getTextToSearch(), fromRequest.getTypeToSearch()}; |
List<UserView> uVs = (List<UserView>) sm.execute(RequestUtils.getRequester(request, response), "SearchUser", args, names); |
profileForm.setUsersFind(uVs); |
request.setAttribute("ProfileForm", profileForm); |
fromRequest.setUsersFind(uVs); |
request.setAttribute("ProfileForm", fromRequest); |
if (uVs.size() != 0) |
addMessage(request, "profile.search.user.find", "" + uVs.size()); |
else |
/impl/src/java/pt/estgp/estgweb/web/controllers/contacts/ContactsController.java |
---|
New file |
0,0 → 1,49 |
package pt.estgp.estgweb.web.controllers.contacts; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import pt.estgp.estgweb.web.controllers.utils.UtilsController; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.views.UserView; |
import pt.estgp.estgweb.Globals; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import org.apache.log4j.Logger; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import org.apache.struts.action.ActionForm; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import javax.servlet.ServletException; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @author Fabio Velez |
* @date 26/Fev/2008 |
* @time 18:01:54 |
* @see pt.estgp.estgweb.web |
*/ |
public class ContactsController extends ApplicationDispatchController |
{ |
private static final Logger logger = Logger.getLogger(ContactsController.class); |
public ActionForward listTeachersAZ( |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"role"}; |
Object[] args = new Object[]{Globals.TEACHER_ROLE}; |
List<UserView> teachers = (List<UserView>) sm.execute(RequestUtils.getRequester(request, response), "LoadRoleUsers", args, names); |
request.setAttribute("teachers",teachers); |
return mapping.findForward("contactTeachers"); |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/filters/UserSessionFilter.java |
---|
76,8 → 76,6 |
} |
} |
String path =((HttpServletRequest)request).getServletPath(); |
if(((HttpServletRequest)request).getServletPath().indexOf("errorNoCookies.do")>=0 || !hrequest.isRequestedSessionIdFromCookie()) |
chain.doFilter(request,response); |
try |
/impl/src/doc/Programas0809.doc |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/hbm/pt/estgp/estgweb/domain/GenericUser.hbm.xml |
---|
34,6 → 34,8 |
<property name="address" type="text"/> |
<property name="zip" type="string"/> |
<property name="country" type="string"/> |
<property name="office" type="string"/> |
<property name="ext" type="string"/> |
<property name="outEmail" type="string"/> |
<property name="phonenumber" type="string"/> |
<property name="sex" type="string"/> |
72,46 → 74,52 |
</set> |
<subclass name="pt.estgp.estgweb.domain.UserImpl" discriminator-value="UserImpl"> |
<subclass name="pt.estgp.estgweb.domain.UserManagedRoleImpl"> |
<subclass name="pt.estgp.estgweb.domain.Student"> |
<subclass name="pt.estgp.estgweb.domain.SigesUser"> |
<meta attribute="extends">pt.estgp.estgweb.domain.UserManagedRoleImpl</meta> |
<meta attribute="scope-class">public abstract</meta> |
<property name="sigesCode" type="int"/> |
<property name="areasBelong" type="string" index="areasBelongIndex"/> |
<property name="mainArea" type="string" index="mainAreaIndex"/> |
<property name="userNameNetpa" type="string"/> |
<property name="localRemovedSubscribedUnits" type="string"/> |
<set name="subscribedUnits" lazy="true" order-by="courseUnitId" table="subscribedunits"> |
<key column="studentId"/> |
<many-to-many class="pt.estgp.estgweb.domain.CourseUnit" column="courseUnitId"/> |
</set> |
<set name="courseUnitGrades" order-by="courseUnit asc" lazy="true"> |
<key column="student"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitGrade"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.StudentImpl" discriminator-value="StudentImpl"/> |
<subclass name="pt.estgp.estgweb.domain.SigesUserImpl"> |
<subclass name="pt.estgp.estgweb.domain.Student"> |
<meta attribute="extends">pt.estgp.estgweb.domain.SigesUserImpl</meta> |
<meta attribute="scope-class">public abstract</meta> |
<property name="localRemovedSubscribedUnits" type="string"/> |
<set name="subscribedUnits" lazy="true" order-by="courseUnitId" table="subscribedunits"> |
<key column="studentId"/> |
<many-to-many class="pt.estgp.estgweb.domain.CourseUnit" column="courseUnitId"/> |
</set> |
<set name="courseUnitGrades" order-by="courseUnit asc" lazy="true"> |
<key column="student"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitGrade"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.StudentImpl" discriminator-value="StudentImpl"/> |
</subclass> |
<subclass name="pt.estgp.estgweb.domain.Teacher"> |
<meta attribute="extends">pt.estgp.estgweb.domain.SigesUserImpl</meta> |
<meta attribute="scope-class">public abstract</meta> |
<property name="academicName" type="string"/> |
<property name="employerName" type="string"/> |
<property name="unitCheck" type="boolean"/> |
<property name="academicDegree" type="string"/> |
<property name="localRemovedTeachedUnits" type="string"/> |
<set name="teachedUnits" lazy="true" order-by="courseUnitId" table="teachedunits"> |
<key column="teacherId"/> |
<many-to-many class="pt.estgp.estgweb.domain.CourseUnit" column="courseUnitId"/> |
</set> |
<set name="coordinatorCourses" order-by="name asc" lazy="true"> |
<key column="coordinator"/> |
<one-to-many class="pt.estgp.estgweb.domain.Course"/> |
</set> |
<set name="directorCourses" order-by="name asc" lazy="true"> |
<key column="director"/> |
<one-to-many class="pt.estgp.estgweb.domain.Course"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.TeacherImpl" discriminator-value="TeacherImpl"/> |
</subclass> |
</subclass> |
</subclass> |
<subclass name="pt.estgp.estgweb.domain.Teacher"> |
<meta attribute="extends">pt.estgp.estgweb.domain.UserManagedRoleImpl</meta> |
<meta attribute="scope-class">public abstract</meta> |
<property name="sigesCode" type="int"/> |
<property name="userNameNetpa" type="string"/> |
<property name="academicName" type="string"/> |
<property name="employerName" type="string"/> |
<property name="unitCheck" type="boolean"/> |
<property name="academicDegree" type="string"/> |
<property name="localRemovedTeachedUnits" type="string"/> |
<set name="teachedUnits" lazy="true" order-by="courseUnitId" table="teachedunits"> |
<key column="teacherId"/> |
<many-to-many class="pt.estgp.estgweb.domain.CourseUnit" column="courseUnitId"/> |
</set> |
<set name="coordinatorCourses" order-by="name asc" lazy="true"> |
<key column="coordinator"/> |
<one-to-many class="pt.estgp.estgweb.domain.Course"/> |
</set> |
<set name="directorCourses" order-by="name asc" lazy="true"> |
<key column="director"/> |
<one-to-many class="pt.estgp.estgweb.domain.Course"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.TeacherImpl" discriminator-value="TeacherImpl"/> |
</subclass> |
</subclass> |
</subclass> |
</subclass> |
/impl/src/hbm/pt/estgp/estgweb/domain/Course.hbm.xml |
---|
25,6 → 25,7 |
<column name="cacheWebDocument" sql-type="TEXT"/> |
</property> |
<property name="studiesPlan" type="string" index="studiesPlanIndex"/> |
<property name="area" type="string" index="areaIndex"/> |
<many-to-one name="director" class="pt.estgp.estgweb.domain.Teacher" outer-join="false" lazy="proxy"/> |
<many-to-one name="coordinator" class="pt.estgp.estgweb.domain.Teacher" outer-join="false" lazy="proxy"/> |
<set name="users" order-by="user.name asc" lazy="true"> |
/impl/src/web/admin/profile/profilePersonalData.jsp |
---|
130,6 → 130,20 |
</logic:present> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="area"/> |
</th> |
<td> |
<html:select property="userView.mainArea"> |
<option value=""></option> |
<html:option value="ce" key="area.ce"/> |
<html:option value="ch" key="area.ch"/> |
<html:option value="dg" key="area.dg"/> |
<html:option value="eg" key="area.eg"/> |
</html:select> |
</td> |
</tr> |
</baco:isAdmin> |
<baco:hasNotRole role="teacher"> |
<tr> |
202,6 → 216,26 |
<html:text styleClass="text" property="userView.zip" maxlength="8"/> |
</td> |
</tr> |
<baco:hasNotRole role="student"> |
<baco:isAdmin> |
<tr> |
<th> |
<bean:message key="office"/> |
</th> |
<td> |
<html:text styleClass="text" property="userView.office" maxlength="10"/> |
</td> |
</tr> |
<tr> |
<th> |
EXT. (<bean:message key="phone.number"/>) |
</th> |
<td> |
<html:text styleClass="text" property="userView.ext" maxlength="10"/> |
</td> |
</tr> |
</baco:isAdmin> |
</baco:hasNotRole> |
<%--<tr>--%> |
<%--<th>--%> |
<%--<bean:message key="country"/>--%> |
/impl/src/web/admin/courses/course.jsp |
---|
27,6 → 27,19 |
</tr> |
<tr> |
<th> |
<bean:message key="course.area"/> |
</th> |
<td> |
<html:select property="courseView.area"> |
<logic:iterate id="area" name="CourseForm" property="areas"> |
<html:option value="${area}" key="area.${area}"/> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="name"/> |
</th> |
<td> |
/impl/src/web/css/style.css |
---|
209,13 → 209,13 |
text-align:left; |
} |
#content a |
#content a, .files a |
/*, .content a:visited*/ |
{ |
color: #4d4d4d; |
} |
#content a:hover { |
#content a:hover, .files a:hover { |
color: #8EC73F |
} |
236,12 → 236,21 |
padding:10px; |
} |
#contentPane .seccao |
#contentPane .seccao, .blocked |
{ |
border: #8EC73F solid 1px; |
padding:10px; |
} |
.contentPane |
{ |
border: #8EC73F solid 1px; |
} |
ul li.contentPane |
{ |
list-style-type:none; |
} |
.contentPortal { |
border: #8EC73F solid 1px; |
padding:5px; |
/impl/src/web/js/ajax.js |
---|
198,24 → 198,28 |
var xmlHttpTopFlashNews; |
var getFlashNewsTimeout; |
var getFlashNewsJsp; |
var semaphoreFlashNews = 0; |
function getFlashNews(jsp,timeout) |
{ |
getFlashNewsJsp = jsp; |
getFlashNewsTimeout = timeout; |
semaphoreFlashNews = 1; |
getFlashNewsTimeoutCall(); |
} |
function getFlashNewsTimeoutCall() |
{ |
xmlHttpTopFlashNews=GetXmlHttpObject(stateChangedGetFlashNews); |
semaphoreFlashNews = 1; |
startRequest(xmlHttpTopFlashNews,"","flashTopNews",stateChangedGetFlashNews,"",getFlashNewsJsp) |
} |
function stateChangedGetFlashNews() |
{ |
if (xmlHttpTopFlashNews.readyState==4 || xmlHttpTopFlashNews.readyState=="complete") |
if (semaphoreFlashNews == 1 && (xmlHttpTopFlashNews.readyState==4 || xmlHttpTopFlashNews.readyState=="complete")) |
{ |
getObjectById("flashTopNews").innerHTML=xmlHttpTopFlashNews.responseText; |
setTimeout(getFlashNewsTimeoutCall,getFlashNewsTimeout); |
semaphoreFlashNews = 0; |
} |
} |
267,6 → 271,7 |
var activeRemindersCounter = 0; |
var expiredRemindersCounter = 0; |
var semaphoreReminder = 0; |
function setActiveReminders(active) |
{ |
286,16 → 291,24 |
function putReminder(startDate,expireDate,text,newReminderDiv,msgDiv,reminderFormDiv,action,waitMsg,okMsg,failMsg) |
{ |
newReminderId = newReminderDiv; |
reminderFormId = reminderFormDiv; |
putMsgId = msgDiv; |
putOkMsg = okMsg; |
putFailMsg = failMsg; |
getObjectById(putMsgId).innerHTML = waitMsg; |
xmlHttpReminder=GetXmlHttpObject(stateChangedPutReminderCall); |
startRequest(xmlHttpReminder,"dispatch=save&startDate="+startDate+"&expireDate="+expireDate+"&reminderView.text="+ text,"",stateChangedPutReminderCall,"",action); |
if(semaphoreReminder == 1) |
{ |
getObjectById(putMsgId).innerHTML = "<div class=\"messages\">busy...</div>"; |
} |
else |
{ |
semaphoreReminder = 1; |
newReminderId = newReminderDiv; |
reminderFormId = reminderFormDiv; |
putMsgId = msgDiv; |
putOkMsg = okMsg; |
putFailMsg = failMsg; |
getObjectById(putMsgId).innerHTML = waitMsg; |
xmlHttpReminder=GetXmlHttpObject(stateChangedPutReminderCall); |
startRequest(xmlHttpReminder,"dispatch=save&startDate="+startDate+"&expireDate="+expireDate+"&reminderView.text="+ text,"",stateChangedPutReminderCall,"",action); |
// hideOne(reminderFormId); |
showOne(putMsgId); |
showOne(putMsgId); |
} |
} |
function stateChangedPutReminderCall() |
{ |
305,8 → 318,9 |
{ |
getObjectById(putMsgId).innerHTML = xmlHttpReminder.responseText; |
} |
else |
else if(semaphoreReminder == 1) |
{ |
semaphoreReminder = 0; |
getObjectById(putMsgId).innerHTML = '<div class="statusOK">' + putOkMsg + '</div>'; |
activeRemindersCounter = activeRemindersCounter + 1; |
showOne('activeReminders'); |
/impl/src/web/layout/navigationLeftMenu.jsp |
---|
36,7 → 36,7 |
<div class="listClean"> |
<ul> |
<% |
for (DirectoryImpl directory: Globals.DIRECTORIES) |
for (DirectoryImpl directory: Globals.getDirectories("home")) |
{ |
request.setAttribute("dir",directory); |
%> |
/impl/src/web/layout/navigationTop.jsp |
---|
21,15 → 21,16 |
<li class="submenu"><a href="#">Apresentação</a> |
<div class="shadow "> |
<ul class="menu"> |
<li><a href="#">Mensagem do Presidente</a></li> |
<li><a href="<%=request.getContextPath()%>/proxy/layout4/estgp/public/portal/estgMensagemPresidente.html">Mensagem do Presidente</a></li> |
<li><a href="#">A ESTG e a sua missão</a></li> |
<li><a href="#">História</a></li> |
<li><a href="#">Localização</a></li> |
<li><a href="#">Factos e números</a></li> |
<li><a href="<%=request.getContextPath()%>/proxy/layout4/estgp/public/portal/estgComoChegarEstg.html">Localização</a></li> |
<li><a href="<%=request.getContextPath()%>/proxy/estgFuturosAlunosPortalMenu/estgp/public/portal/estgNumeros.html">Factos e números</a></li> |
<li><a href="#">A ESTG em Fotografias</a></li> |
</ul> |
</div> |
</li> |
<li class="submenu"><a href="<%=request.getContextPath()%>/proxy/layout4/estgp/public/portal/contactosContactosGeraisEstg.html">Contactos</a></li> |
<li class="submenu"><a href="#"><bean:message key="organization"/> </a> |
<div class="shadow"> |
/impl/src/web/layout/separators.jsp |
---|
26,6 → 26,7 |
String sep4 = ""; |
String sep5 = ""; |
String sep6 = ""; |
String sep7 = ""; |
String link0 = "href=\"" + request.getContextPath() + "/Welcome.do\""; |
String link1 = "href=\"" + request.getContextPath() + "/user/startHome.do\""; |
34,6 → 35,7 |
String link4 = "href=\"" + request.getContextPath() + "/user/startServiceZone.do\""; |
String link5 = "href=\"" + request.getContextPath() + "/proxy/layoutIOnline/ionline/\""; |
String link6 = "href=\"" + request.getContextPath() + "/proxy/layoutIntranetUtils/estgp/intranet/escola/utils.html\""; |
String link7 = "href=\"" + request.getContextPath() + "/proxy/layoutIntranetContacts/estgp/intranet/contactos/servicos.html\""; |
if(sep == 0) |
{ |
70,6 → 72,11 |
link6 = ""; |
sep6 ="class=\"selected\""; |
} |
else if(sep == 7) |
{ |
link7 = ""; |
sep7 ="class=\"selected\""; |
} |
81,6 → 88,7 |
<li <%=sep3%>><a <%=link3%>><span><bean:message key="intranet.separator.profile"/></span></a></li> |
<li <%=sep4%>><a <%=link4%>><span><bean:message key="intranet.separator.service.zone"/></span></a></li> |
<li <%=sep5%>><a <%=link5%>><span><bean:message key="intranet.separator.ionline"/></span></a></li> |
<li <%=sep7%>><a <%=link7%>><span><bean:message key="intranet.separator.contacts"/></span></a></li> |
<li <%=sep6%>><a <%=link6%>><span><bean:message key="intranet.separator.utils"/></span></a></li> |
</ul> |
</div> |
/impl/src/web/public/search/searchResults.jsp |
---|
1,6 → 1,4 |
<%@ page import="pt.estgp.estgweb.services.common.*" %> |
<%@ page import="pt.estgp.estgweb.web.Globals" %> |
<%@ page import="jomm.utils.ConfigProperties" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
181,6 → 179,26 |
</logic:notEqual> |
) |
</logic:notEmpty> |
<logic:notEmpty name="result" property="subTitlesGroup"> |
( |
<% |
String subTitleSeparator = ""; |
%> |
<logic:iterate id="subTitleLabel" name="result" property="subTitlesGroup.labels"> |
<%=subTitleSeparator%> |
<logic:equal value="true" name="subTitleLabel" property="key"> |
<bean:message key="${subTitleLabel.label}"/> |
</logic:equal> |
<logic:notEqual value="true" name="subTitleLabel" property="key"> |
${subTitleLabel.label} |
</logic:notEqual> |
<% |
subTitleSeparator = ", "; |
%> |
</logic:iterate> |
) |
</logic:notEmpty> |
</h2> |
<p>${result.bestFragments} ...</p> |
/impl/src/web/templates/intranet/contactos/servicos.html |
---|
New file |
0,0 → 1,185 |
<div id="contentIntranet"> |
<h1>Serviços</h1> |
<div class="seccao blocked"> |
<h2>Recepção e Telefonista</h2> |
<table class="dataTable"> |
<tr> |
<th></th><th>Extensão</th> |
</tr> |
<tr> |
<th>Telefonista</th><td>100</td> |
</tr> |
<tr> |
<th>Recepção</th><td>108</td> |
</tr> |
</table> |
</div> |
<div class="seccao blocked"> |
<h2>Conselho Directivo</h2> |
<table class="dataTable"> |
<tr> |
<th></th><th>Extensão</th><th>Email</th> |
</tr> |
<tr> |
<th>Geral</th><td></td><td>info.cd@estgp.pt</td> |
</tr> |
<tr> |
<th>Artur Romão</th><td>120</td><td>romao@estgp.pt</td> |
</tr> |
<tr> |
<th>Paulo Sérgio Brito</th><td>123</td><td>pbrito@estgp.pt</td> |
</tr> |
<tr> |
<th>Helena Freire Cameron</th><td>125</td><td>helenac@estgp.pt</td> |
</tr> |
</table> |
<h2>Secretário</h2> |
<table class="dataTable"> |
<tr> |
<th></th><th>Extensão</th><th>Email</th> |
</tr> |
<tr> |
<th>Francisco António Morais</th><td>127</td><td>fmorais@estgp.pt</td> |
</tr> |
</table> |
</div> |
<div class="seccao blocked"> |
<h2>Serviços Administrativos</h2> |
<table class="dataTable"> |
<tr> |
<th></th><th>Extensão</th><th>Email</th> |
</tr> |
<tr> |
<th>Secretaria - Geral</th><td></td><td>info.secretaria@estgp.pt</td> |
</tr> |
<tr> |
<th>Ana Maria Andrade Reia Borralho Ventura</th><td>129</td><td>anaventura@estgp.pt</td> |
</tr> |
<tr> |
<th>Celeste Maria Bugia Pinheiro Filipe</th><td>135</td><td>pfilipe@estgp.pt</td> |
</tr> |
<tr> |
<th>Cristina Maria Baptista Ribeiro</th><td>136</td><td>crnabais@estgp.pt</td> |
</tr> |
<tr> |
<th>Dinis Manuel Polainas Martins</th><td>131</td><td>dinismar@estgp.pt</td> |
</tr> |
<tr> |
<th>João José Romão</th><td>137</td><td>jromao@estgp.pt</td> |
</tr> |
<tr> |
<th>José Luís Diabinho Baptista</th><td>138</td><td>joseluis@estgp.pt</td> |
</tr> |
<tr> |
<th>Maria da Conceição Real Laranjo</th><td>128</td><td>claranjo@estgp.pt</td> |
</tr> |
<tr> |
<th>Maria José Alegria Martins</th><td>122</td><td>mjm@estgp.pt</td> |
</tr> |
<tr> |
<th>Olívia Rovisco Mourato</th><td>122</td><td>olivia@estgp.pt</td> |
</tr> |
<tr> |
<th>Orlanda dos Anjos Ceia Trindade Moreira</th><td>128</td><td>orlanda@estgp.pt</td> |
</tr> |
<tr> |
<th>Paula Alexandra Borba Roque</th><td>132</td><td>paula@estgp.pt</td> |
</tr> |
</table> |
</div> |
<div class="seccao blocked"> |
<h2>Biblioteca</h2> |
<table class="dataTable"> |
<tr> |
<th></th><th>Extensão</th><th>Email</th> |
</tr> |
<tr> |
<th>Biblioteca</th><td>192</td><td>biblioteca@estgp.pt</td> |
</tr> |
<tr> |
<th>Serviço de Informação</th><td></td><td>info.bib@estgp.pt</td> |
</tr> |
<tr> |
<th>Serviço de Empréstimo</th><td>192</td><td>bibemprestimo@estgp.pttd> |
</tr> |
<tr> |
<th>Carla Maria Moura Serra Maças da Silva</th><td>192</td><td>carlasil@estgp.pt</td> |
</tr> |
<tr> |
<th>Maria Alice Aurélio Vaz de Carvalho Alves</th><td>192</td><td>alice@estgp.pt</td> |
</tr> |
<tr> |
<th>Maria Catarina Barradas Martins</th><td>192</td><td>catarina@estgp.pt</td> |
</tr> |
<tr> |
<th>Maria José Antunes Carrilho Basso Pereira</th><td>192</td><td>zezinhap@estgp.pt</td> |
</tr> |
</table> |
</div> |
<div class="seccao blocked"> |
<h2>Centro Informático</h2> |
<table class="dataTable"> |
<tr> |
<th></th><th>Extensão</th><th>Email</th> |
</tr> |
<tr> |
<th>Geral</th><td>103</td><td>ci@estgp.pt</td> |
</tr> |
<tr> |
<th>Hugo Filipe Azeitona Mão de Ferro</th><td></td><td>hugoferro@estgp.pt</td> |
</tr> |
<tr> |
<th>Jaime João Caldeira dos Santos</th><td>192</td><td>jjsantos@estgp.pt</td> |
</tr> |
<tr> |
<th>Luis Miguel Barbas Rosado</th><td>192</td><td>lrosado@estgp.pt</td> |
</tr> |
</table> |
</div> |
<div class="seccao blocked"> |
<h2>Reprografia</h2> |
<table class="dataTable"> |
<tr> |
<th></th><th>Extensão</th> |
</tr> |
<tr> |
<th>Graciela Rosalina Ventura Pires</th><td>195</td> |
</tr> |
</table> |
</div> |
<div class="seccao blocked"> |
<h2>Gabinete de Comunicação</h2> |
<table class="dataTable"> |
<tr> |
<th></th><th>Extensão</th><th>Email</th> |
</tr> |
<tr> |
<th>Pedro Miguel Ribeiro Ranheta</th><td>203</td><td>pedro.ranheta@estgp.pt</td> |
</tr> |
<tr> |
<th>Maria Catarina Pereira de Matos</th><td>203</td><td>catarinap.matos@estgp.pt</td> |
</tr> |
</table> |
</div> |
</div> |
/impl/src/web/templates/intranet/contactos/mail.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/templates/intranet/contactos/laboratorios.html |
---|
New file |
0,0 → 1,82 |
<div id="contentIntranet"> |
<h1>Laboratórios</h1> |
<div class="seccao blocked"> |
<h2>Piso 0</h2> |
<table class="dataTable"> |
<tr> |
<th>Nome do Laboratório</th><th>Responsável do Laboratório</th><th>Extensão</th> |
</tr> |
<tr> |
<th>Laboratório de Tecnologia Industrial</th><td>Eliomar Camerom</td><td>---</td> |
</tr> |
<tr> |
<th>Oficinas</th><td>José Sousa</td><td>101</td> |
</tr> |
<tr> |
<th>Laboratório de Engenharia Civil</th><td>Pedro Lopes</td><td>202</td> |
</tr> |
</table> |
</div> |
<div class="seccao blocked"> |
<h2>Piso 1</h2> |
<table class="dataTable"> |
<tr> |
<th>Nome do Laboratório</th><th>Responsável do Laboratório</th><th>Extensão</th> |
</tr> |
<tr> |
<th>Laboratório Química</th><td>Rute Pires</td><td>111</td> |
</tr> |
<tr> |
<th>Laboratório Física</th><td>Mário Santos</td><td>---</td> |
</tr> |
<tr> |
<th>Laboratórios de Serigrafia</th><td>Luís Oliveira</td><td>103</td> |
</tr> |
<tr> |
<th>Laboratório Edição Electrónica</th><td>Moisés Coelho</td><td>115</td> |
</tr> |
<tr> |
<th>Laboratório de Informática 1.08</th><td>Secundino Lopes</td><td>117</td> |
</tr> |
<tr> |
<th>Laboratório de Informática E1.2</th><td>Luís Baptista</td><td>222</td> |
</tr> |
<tr> |
<th>Laboratório de Informática E1.3</th><td>Valentim Realinho</td><td>223</td> |
</tr> |
<tr> |
<th>Laboratório de Multimédia</th><td>Luís Baptista</td><td>119</td> |
</tr> |
<tr> |
<th>Laboratório de Fotografia</th><td>Luís Vintém</td><td>---</td> |
</tr> |
<tr> |
<th>Régie/ Gabinete de Comunicação</th><td>Pedro Ranheta</td><td>207</td> |
</tr> |
<tr> |
<th>Laboratório de Electricidade</th><td>Sérgio Correia</td><td>205</td> |
</tr> |
</table> |
</div> |
<div class="seccao blocked"> |
<h2>Piso 2</h2> |
<table class="dataTable"> |
<tr> |
<th>Nome do Laboratório</th><th>Responsável do Laboratório</th><th>Extensão</th> |
</tr> |
<tr> |
<th>Laboratório de Línguas</th><td>Margarida Coelho</td><td>---</td> |
</tr> |
</table> |
</div> |
</div> |
/impl/src/web/templates/intranet/contactos/distLists.html |
---|
New file |
0,0 → 1,324 |
<div id="contentIntranet"> |
<h1>Listas de Distribuição</h1> |
<div class="seccao"> |
<font color="#000080" face="Verdana" size="2"> </font><font color="#000080" face="Verdana" size="1">Listas |
de distribuição para os utilizadores do webmail da Escola</font> |
<table border="0" width="100%" cellspacing="1" cellpadding="0"> |
<tr> |
<td width="100%"><img border="0" alt="emails" src="mail.jpg" width="600" height="54"></td> |
</tr> |
</table> |
<table class="dataTable"> |
<tr> |
<td> |
<table> |
<tr> |
<th>Endereço</th> |
<th>Descrição</th> |
<th>Docentes</th> |
<th>Alunos</th> |
<th>Serviços</th> |
</tr> |
<tr> |
<td width="633" bgcolor="#FFFFFF" colspan="5" height="18"><b><font face="Verdana" size="1">Listas de distribuição de |
Docentes</font></b><font face="Verdana" size="1"><b>. |
Permissões |
de acesso/utilização</b></font></td> |
</tr> |
<tr> |
<td width="164" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">docentes.estg@estgp.pt</font></td> |
<td width="242" align="justify" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os Docentes que utilizam o WebMail da |
Escola</font></td> |
<td width="82" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim**</font></td> |
<td width="66" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
</tr> |
<tr> |
<td width="164" height="36" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">docentes.ce@estgp.pt</font></td> |
<td width="242" align="justify" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os docentes da Área de Ciências |
Empresariais.</font></td> |
<td width="82" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim**</font></td> |
<td width="66" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">docentes.eng@estgp.pt</font></td> |
<td width="242" align="justify" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os docentes da Área de Engenharia.</font></td> |
<td width="82" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim**</font></td> |
<td width="66" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">docentes.civil@estgp.pt</font></td> |
<td width="242" align="justify" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os docentes do Grupo Disciplinar de |
Civil.</font></td> |
<td width="82" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim**</font></td> |
<td width="66" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="36" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">docentes.elect@estgp.pt</font></td> |
<td width="242" align="justify" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os docentes do Grupo Disciplinar de |
Electricidade/Electrónica.</font></td> |
<td width="82" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim**</font></td> |
<td width="66" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">docentes.fisica@estgp.pt</font></td> |
<td width="242" align="justify" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os docentes do Grupo Disciplinar de |
Física.</font></td> |
<td width="82" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim**</font></td> |
<td width="66" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">docentes.quimica@estgp.pt</font></td> |
<td width="242" align="justify" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os docentes do Grupo Disciplinar de |
Química.</font></td> |
<td width="82" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim**</font></td> |
<td width="66" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="36" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">docentes.mat@estgp.pt</font></td> |
<td width="242" align="justify" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os docentes do Grupo Disciplinar de |
Matemática.</font></td> |
<td width="82" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim**</font></td> |
<td width="66" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">docentes.gestao@estgp.pt</font></td> |
<td width="242" align="justify" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os docentes do Grupo Disciplinar de |
Gestão.</font></td> |
<td width="82" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim**</font></td> |
<td width="66" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="633" colspan="5" height="21" style="border-bottom: 1 solid #C0C0C0"> |
<p><b><font face="Verdana" size="1">Listas de distribuição de Alunos</font></b></p> |
</td> |
</tr> |
<tr> |
<td width="164" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunos.estg@estgp.pt</font></td> |
<td width="242" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os Alunos que utilizam o WebMail da |
Escola</font></td> |
<td width="82" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="66" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="24" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosAA1@estgp.pt<br> |
alunosAA2@estgp.pt<br> |
alunosAA3@estgp.pt<br> |
alunosAA4@estgp.pt<br> |
alunosAAF@estgp.pt</font></td> |
<td width="242" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Assessoria de Administração. </font></td> |
<td width="82" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosCT1@estgp.pt<br> |
alunosCT2@estgp.pt<br> |
alunosCT3@estgp.pt<br> |
alunosCT4@estgp.pt<br> |
alunosCTF@estgp.pt</font></td> |
<td width="242" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Contabilidade. </font></td> |
<td width="82" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosGE1@estgp.pt<br> |
alunosGE2@estgp.pt<br> |
alunosGE3@estgp.pt<br> |
alunosGE4@estgp.pt<br> |
alunosGEF@estgp.pt</font></td> |
<td width="242" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Gestão Empresarial. </font></td> |
<td width="82" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosDC1@estgp.pt<br> |
alunosDC2@estgp.pt<br> |
alunosDC3@estgp.pt<br> |
alunosDC4@estgp.pt<br> |
alunosDC5@estgp.pt<br> |
alunosDCF@estgp.pt</font></td> |
<td width="242" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Design da Comunicação. </font></td> |
<td width="82" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosDCTG1@estgp.pt<br> |
alunosDCTG2@estgp.pt<br> |
alunosDCTG3@estgp.pt<br> |
alunosDCTG4@estgp.pt<br> |
alunosDCTG5@estgp.pt<br> |
alunosDCTGF@estgp.pt</font></td> |
<td width="242" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Design da Comunicação e Técnicas Gráficas. </font></td> |
<td width="82" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosMKT1@estgp.pt<br> |
alunosMKT2@estgp.pt<br> |
alunosMKT3@estgp.pt<br> |
alunosMKT4@estgp.pt<br> |
alunosMKTF@estgp.pt</font></td> |
<td width="242" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Marketing. </font></td> |
<td width="82" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="60" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosEC1@estgp.pt<br> |
alunosEC2@estgp.pt<br> |
alunosEC3@estgp.pt<br> |
alunosEC4@estgp.pt<br> |
alunosEC5@estgp.pt<br> |
alunosECF@estgp.pt</font></td> |
<td width="242" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Engenharia Civil. </font></td> |
<td width="82" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosEEM1@estgp.pt<br> |
alunosEEM2@estgp.pt<br> |
alunosEEM3@estgp.pt<br> |
alunosEEM4@estgp.pt<br> |
alunosEEM5@estgp.pt<br> |
alunosEEMF@estgp.pt</font></td> |
<td width="242" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Engenharia Electromecânica. </font></td> |
<td width="82" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosEIQ1@estgp.pt<br> |
alunosEIQ2@estgp.pt<br> |
alunosEIQ3@estgp.pt<br> |
alunosEIQ4@estgp.pt<br> |
alunosEIQ5@estgp.pt<br> |
alunosEIQF@estgp.pt</font></td> |
<td width="242" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Engenharia Industrial e da Qualidade. </font></td> |
<td width="82" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">alunosEI1@estgp.pt<br> |
alunosEI2@estgp.pt<br> |
alunosEI3@estgp.pt<br> |
alunosEI4@estgp.pt<br> |
alunosEI5@estgp.pt<br> |
alunosEIF@estgp.pt</font></td> |
<td width="242" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para cada um dos anos que constituem o curso de |
Engenharia Informática. </font></td> |
<td width="82" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não*</font></td> |
<td width="79" align="center" height="72" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="633" bgcolor="#FFFFFF" colspan="5" height="21" style="border-bottom: 1 solid #C0C0C0"> |
<p><b> |
<font face="Verdana" size="1">:: Listas de distribuição de |
Funcionários</font></b></p> |
</td> |
</tr> |
<tr> |
<td width="164" height="36" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">funcionarios.estg@estgp.pt</font></td> |
<td width="242" align="justify" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Permite |
enviar um mail para todos os funcionários.</font></td> |
<td width="82" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"> |
<font face="Verdana" size="1">Sim</font></td> |
<td width="66" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Não</font></td> |
<td width="79" align="center" height="36" style="border-bottom: 1 solid #C0C0C0"><font face="Verdana" size="1">Sim</font></td> |
</tr> |
<tr> |
<td width="164" bgcolor="#FFFFFF" height="36" style="border-bottom: 1 solid #C0C0C0"> </td> |
<td width="242" bgcolor="#FFFFFF" align="justify" height="36" style="border-bottom: 1 solid #C0C0C0"> </td> |
<td width="82" align="center" bgcolor="#FFFFFF" height="36" style="border-bottom: 1 solid #C0C0C0"> </td> |
<td width="66" align="center" bgcolor="#FFFFFF" height="36" style="border-bottom: 1 solid #C0C0C0"> </td> |
<td width="79" align="center" bgcolor="#FFFFFF" height="36" style="border-bottom: 1 solid #C0C0C0"> </td> |
</tr> |
<tr> |
<td width="633" bgcolor="#FFFFFF" colspan="5" height="12"> |
<font face="Verdana" size="1">* Só através do email da Associação |
de Estudantes</font></td> |
</tr> |
<tr> |
<td width="633" bgcolor="#FFFFFF" colspan="5" height="12"> |
<font face="Verdana" size="1">** Só os docentes que pertencem à |
área ou grupo disciplinar.</font></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</div> |
</div> |
/impl/src/web/user/courses/directedCoordinatedCourses.jsp |
---|
3,6 → 3,8 |
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="pt.estgp.estgweb.utils.AreasBelongUtils" %> |
<%@ page import="pt.estgp.estgweb.domain.*" %> |
<%@ 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" %> |
16,175 → 18,312 |
<jomm:messages/> |
<html:errors/> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
List<String> importYears = (List<String>) sm.execute(RequestUtils.getRequester(request, response), "LoadCoursesImportYears", args, names); |
request.setAttribute("importYears", importYears); |
args = new Object[]{CourseForm.getImportYear(), CourseForm.getArea()}; |
List<CourseView> courses = (List<CourseView>) sm.execute(RequestUtils.getRequester(request, response), "LoadCoursesImportYearArea", args, names); |
request.setAttribute("courses", courses); |
request.setAttribute("fromDispatch",request.getParameter("fromDispatch")); |
request.setAttribute("fromDispatch", request.getParameter("fromDispatch")); |
String fromAction = ""; |
String from = "?fromDispatch="+request.getParameter("fromDispatch");; |
String from = "?fromDispatch=" + request.getParameter("fromDispatch"); |
String user = ""; |
if (request.getParameter("from") != null) |
{ |
user = "/user"; |
fromAction = "From" + request.getParameter("from"); |
from = "?from=" + request.getParameter("from") + "&fromDispatch="+request.getParameter("fromDispatch"); |
from = "?from=" + request.getParameter("from") + "&fromDispatch=" + request.getParameter("fromDispatch"); |
} |
request.setAttribute("from", from); |
request.setAttribute("user", user); |
request.setAttribute("fromAction", fromAction); |
boolean canChange=false; |
boolean canChange = false; |
%> |
<html:form action="${user}/courseController${fromAction}${from}" enctype="multipart/form-data"> |
<input type="hidden" name="dispatch" value="updateDirectedCoordininatedCourses"> |
<input type="hidden" name="fromDispatch" value="${fromDispatch}"/> |
<div class="seccao"> |
<h2><bean:message key="course.directed.coordinated"/> </h2> |
<p> |
<bean:message key="course.program.courses.choose.year"/> |
<html:select property="importYear" onchange="set(this.form,'${fromDispatch}');this.form.submit()"> |
<logic:iterate id="importYear" name="importYears"> |
<html:option value="${importYear}"/> |
</logic:iterate> |
</html:select> |
</p> |
<div class="seccao"> |
<ul> |
<nested:iterate id="courseView" property="directedCoordinatedCourses.merge" type="pt.estgp.estgweb.domain.views.CourseView"> |
<li> |
<a name="${courseView.id}"></a> |
<nested:hidden property="id"/> |
<h3>(${courseView.code}) ${courseView.name}</h3> |
<ul> |
<li><h3><bean:message key="courseunit.semestre"/> 1</h3> |
<h1><bean:message key="courseunit.programs"/></h1> |
<div class="form blockForm"> |
<table> |
<tr> |
<th><bean:message key="course.program.courses.choose.year"/></th> |
<td> |
<html:select property="importYear" onchange="set(this.form,'${fromDispatch}');this.form.submit()"> |
<logic:iterate id="importYear" name="importYears"> |
<html:option value="${importYear}"/> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
<tr> |
<th><bean:message key="courseunit.semestre"/></th> |
<td> |
<html:select property="semestre" onchange="set(this.form,'${fromDispatch}');this.form.submit()"> |
<option value=""><bean:message key="courseunit.ALL"/></option> |
<html:option value="S1" key="courseunit.S1"/> |
<html:option value="S2" key="courseunit.S2"/> |
</html:select> |
</td> |
</tr> |
<baco:hasRole role="admin,all,services,teacher,servicesPrograms,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil"> |
<tr> |
<th><bean:message key="area"/></th> |
<td> |
<html:select property="area" onchange="set(this.form,'${fromDispatch}');this.form.submit()"> |
<option value=""><bean:message key="areas.all"/></option> |
<logic:iterate id="area" name="CourseForm" property="areas"> |
<html:option value="${area}" key="area.${area}"/> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
<tr> |
<th><bean:message key="courseunit.course"/></th> |
<td> |
<html:select property="courseId" onchange="set(this.form,'${fromDispatch}');this.form.submit()"> |
<html:option value="" key="courses.all"/> |
<logic:iterate id="courseView" name="courses" type="pt.estgp.estgweb.domain.views.CourseView"> |
<html:option value="${courseView.id}">(${courseView.code}) ${courseView.name}</html:option> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
<tr> |
<th><bean:message key="courseunit.teacher.situation"/></th> |
<td> |
<html:select property="teachersSituation" onchange="set(this.form,'${fromDispatch}');this.form.submit()"> |
<html:option value="all" key="courseunit.teacher.situation.all"/> |
<html:option value="withTeachers" key="courseunit.teacher.situation.withTeachers"/> |
<html:option value="withNoTeachers" key="courseunit.teacher.situation.withNoTeachers"/> |
</html:select> |
</td> |
</tr> |
</baco:hasRole> |
</table> |
</div> |
<table cellspacing="0" cellpadding="0" border="0" width="100%"> |
<tr> |
<td id="leftPage" valign="top"> |
<% |
if(CourseForm.getDirectedCoordinatedCourses().getMerge().size()>1) |
{ |
%> |
<div class="linkMenuBlock"> |
<div class="linkMenuBlockTitle"><bean:message key="courses"/></div> |
<div class="linkLeftMenu"> |
<div class="listClean"> |
<ul> |
<logic:notEmpty name="courseView" property="courseUnitsWithNoProgramS1"> |
<li><h3 class="statusERROR"><bean:message key="course.units.no.program"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithNoProgramS1" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
(${courseUnitView.code}) ${courseUnitView.name} - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
<nested:iterate id="courseView" property="directedCoordinatedCourses.merge" type="pt.estgp.estgweb.domain.views.CourseView"> |
<li> |
<a href="#${courseView.id}">(${courseView.code}) ${courseView.name}</a> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramNotCheckedS1"> |
<%--<html:hidden property="courseUnitsWithProgramNotCheckedS1size"/>--%> |
<li><h3 class="statusWARNING"><bean:message key="course.units.with.program.not.checked"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramNotCheckedS1" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<% |
canChange=true; |
%> |
<nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/> |
</logic:equal> |
(${courseUnitView.code}) <a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.programStreamId}">${courseUnitView.name}</a> - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramCheckedS1"> |
<%--<html:hidden property="courseUnitsWithProgramCheckedS1size"/>--%> |
<li><h3 class="statusOK"><bean:message key="course.units.with.program.checked"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramCheckedS1" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/> |
</logic:equal> |
(${courseUnitView.code}) <a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.programStreamId}">${courseUnitView.name}</a> - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
</nested:iterate> |
</ul> |
</li> |
</div> |
</div> |
</div> |
<% |
} |
%> |
</td> |
<td id="rightPage" valign="top"> |
<div class="contentPane"> |
<div > |
<ul> |
<nested:iterate id="courseView" property="directedCoordinatedCourses.merge" type="pt.estgp.estgweb.domain.views.CourseView"> |
<li class="contentPane"> |
<a name="${courseView.id}"></a> |
<nested:hidden property="id"/> |
<h1>(${courseView.code}) ${courseView.name}</h1> |
<ul> |
<logic:notEqual value="S2" name="CourseForm" property="semestre"> |
<li><h3><bean:message key="courseunit.semestre"/> 1</h3> |
<ul> |
<logic:notEmpty name="courseView" property="courseUnitsWithNoProgramS1"> |
<li><h3 class="statusERROR"><bean:message key="course.units.no.program"/></h3> |
<table class="dataTable"> |
<nested:iterate id="courseUnitView" property="courseUnitsWithNoProgramS1" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<tr> |
<td>${courseUnitView.code}</td> |
<td>${courseUnitView.name}</td> |
<td>${courseUnitView.teachersSnipet}</td> |
</tr> |
</nested:iterate> |
</table> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramNotCheckedS1"> |
<%--<html:hidden property="courseUnitsWithProgramNotCheckedS1size"/>--%> |
<li><h3 class="statusWARNING"><bean:message key="course.units.with.program.not.checked"/></h3> |
<table class="dataTable"> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramNotCheckedS1" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<tr> |
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<td></td> |
</logic:notEqual> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<% |
canChange=true; |
%> |
<td><nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/></td> |
</logic:equal> |
<td>${courseUnitView.code}</td> |
<td> |
<baco:hasRole role="teacher"> |
<a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.programStreamId}">${courseUnitView.name}</a> |
</baco:hasRole> |
<li><h3><bean:message key="courseunit.semestre"/> 2</h3> |
<ul> |
<logic:notEmpty name="courseView" property="courseUnitsWithNoProgramS2"> |
<baco:hasNotRole role="teacher"> |
<logic:equal value="true" name="courseUnitView" property="validProgram"> |
<a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.programStreamId}">${courseUnitView.name}</a> |
</logic:equal> |
<logic:equal value="false" name="courseUnitView" property="validProgram"> |
${courseUnitView.name} |
</logic:equal> |
</baco:hasNotRole> |
</td> |
<td>${courseUnitView.teachersSnipet}</td> |
</tr> |
</nested:iterate> |
</table> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramCheckedS1"> |
<%--<html:hidden property="courseUnitsWithProgramCheckedS1size"/>--%> |
<li><h3 class="statusOK"><bean:message key="course.units.with.program.checked"/></h3> |
<table class="dataTable"> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramCheckedS1" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<tr> |
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<td></td> |
</logic:notEqual> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<% |
canChange=true; |
%> |
<td><nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/></td> |
</logic:equal> |
<td>${courseUnitView.code}</td> |
<td><a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.programStreamId}">${courseUnitView.name}</a></td> |
<td>${courseUnitView.teachersSnipet}</td> |
</tr> |
</nested:iterate> |
</table> |
</li> |
</logic:notEmpty> |
</ul> |
</li> |
</logic:notEqual> |
<li><h3 class="statusERROR"><bean:message key="course.units.no.program"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithNoProgramS2" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
(${courseUnitView.code}) ${courseUnitView.name} - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramNotCheckedS2"> |
<%--<html:hidden property="courseUnitsWithProgramNotCheckedS2size"/>--%> |
<li><h3 class="statusWARNING"><bean:message key="course.units.with.program.not.checked"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramNotCheckedS2" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/> |
</logic:equal> |
(${courseUnitView.code}) ${courseUnitView.name} - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramCheckedS2"> |
<%--<html:hidden property="courseUnitsWithProgramCheckedS2size"/>--%> |
<li><h3 class="statusOK"><bean:message key="course.units.with.program.checked"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramCheckedS2" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/> |
</logic:equal> |
(${courseUnitView.code}) ${courseUnitView.name} - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
</ul> |
</li> |
<logic:notEqual value="S1" name="CourseForm" property="semestre"> |
<li><h3><bean:message key="courseunit.semestre"/> 2</h3> |
<ul> |
<logic:notEmpty name="courseView" property="courseUnitsWithNoProgramS2"> |
</ul> |
</li> |
</nested:iterate> |
</ul> |
</div> |
</div> |
<% |
if(canChange) |
{ |
%> |
<table> |
<tr class="buttons"> |
<td colspan="2"> |
<input type="submit" value="<bean:message key="confirm"/>"/> |
</td> |
</tr> |
</table> |
<% |
} |
%> |
<li><h3 class="statusERROR"><bean:message key="course.units.no.program"/></h3> |
<table class="dataTable"> |
<nested:iterate id="courseUnitView" property="courseUnitsWithNoProgramS2" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<tr> |
<td>${courseUnitView.code}</td> |
<td>${courseUnitView.name}</td> |
<td>${courseUnitView.teachersSnipet}</td> |
</tr> |
</nested:iterate> |
</table> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramNotCheckedS2"> |
<%--<html:hidden property="courseUnitsWithProgramNotCheckedS2size"/>--%> |
<li><h3 class="statusWARNING"><bean:message key="course.units.with.program.not.checked"/></h3> |
<table class="dataTable"> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramNotCheckedS2" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<tr> |
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<td></td> |
</logic:notEqual> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<td><nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/></td> |
</logic:equal> |
<td>${courseUnitView.code}</td> |
<td>${courseUnitView.name}</td> |
<td>${courseUnitView.teachersSnipet}</td> |
</tr> |
</nested:iterate> |
</table> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramCheckedS2"> |
<%--<html:hidden property="courseUnitsWithProgramCheckedS2size"/>--%> |
<li><h3 class="statusOK"><bean:message key="course.units.with.program.checked"/></h3> |
<table class="dataTable"> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramCheckedS2" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<tr> |
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<td></td> |
</logic:notEqual> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<td><nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/></td> |
</logic:equal> |
<td>${courseUnitView.code}</td> |
<td>${courseUnitView.name}</td> |
<td>${courseUnitView.teachersSnipet}</td> |
</tr> |
</nested:iterate> |
</table> |
</li> |
</logic:notEmpty> |
</ul> |
</li> |
</logic:notEqual> |
</ul> |
</li> |
</nested:iterate> |
</ul> |
</div> |
<% |
if(canChange) |
{ |
%> |
<table> |
<tr class="buttons"> |
<td colspan="2"> |
<input type="submit" value="<bean:message key="confirm"/>"> |
</td> |
</tr> |
</table> |
<% |
} |
%> |
</div> |
</td> |
</tr> |
</table> |
</html:form> |
/impl/src/web/user/courseunits/courseunit.jsp |
---|
54,16 → 54,26 |
<logic:equal value="false" name="CourseUnitView" property="validProgram"> |
<html:file property="programFile"/> |
</logic:equal> |
<logic:present name="CourseUnitView" property="programStreamId"> |
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.programStreamId}"><bean:message key="courseunit.programfilepath"/></a> (${CourseUnitView.programSize} Kb) |
<logic:equal value="true" name="CourseUnitView" property="validProgram"> |
(<bean:message key="courseunit.programfile.valid"/>) |
</logic:equal> |
</logic:present> |
</baco:canManage> |
<logic:present name="CourseUnitView" property="programStreamId"> |
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.programStreamId}"><bean:message key="courseunit.programfilepath"/></a> (${CourseUnitView.programSize} Kb) |
</logic:present> |
(<logic:equal value="true" name="CourseUnitView" property="validProgram"> |
<bean:message key="courseunit.programfile.valid"/> |
</logic:equal>) |
<baco:cantManage name="CourseUnitView"> |
<logic:present name="CourseUnitView" property="programStreamId"> |
<logic:equal value="true" name="CourseUnitView" property="validProgram"> |
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.programStreamId}"><bean:message key="courseunit.programfilepath"/></a> (${CourseUnitView.programSize} Kb) (<bean:message key="courseunit.programfile.valid"/>) |
</logic:equal> |
</logic:present> |
</baco:cantManage> |
<logic:notPresent name="CourseUnitView" property="programStreamId"> |
<bean:message key="courseunit.programfilepath.not.available"/> |
</logic:notPresent> |
</p> |
<baco:canManage name="CourseUnitView"> |
/impl/src/web/user/home/student.jsp |
---|
65,6 → 65,14 |
</ul> |
<!--Can put year all other units in the future calling service user.subscribedUnitsOldYearsView--> |
</div> |
<div class="block"> |
<p><bean:message key="intranet.home.curricular"/></p> |
<ul> |
<li> |
<html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.programs"/></html:link> |
</li> |
</ul> |
</div> |
</td> |
</baco:isModuleOn> |
<td class="column"> |
/impl/src/web/user/home/teacher.jsp |
---|
63,6 → 63,14 |
</li> |
</ul> |
</div> |
<div class="block"> |
<p><bean:message key="intranet.home.curricular"/></p> |
<ul> |
<li> |
<html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.programs"/></html:link> |
</li> |
</ul> |
</div> |
</td> |
</baco:isModuleOn> |
<td class="column"> |
/impl/src/web/user/contacts/menu.jsp |
---|
New file |
0,0 → 1,28 |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<div class="linkMenuBlock"> |
<div class="linkMenuBlockTitle"><bean:message key="intranet.separator.contacts"/></div> |
<div class="linkLeftMenu"> |
<div class="listClean"> |
<ul> |
<li> |
<a href="<%=request.getContextPath()%>/proxy/layoutIntranetContacts/estgp/intranet/contactos/servicos.html"><bean:message key="services"/></a> |
</li> |
<li> |
<html:link action="/user/listTeachers?dispatch=listTeachersAZ"><bean:message key="menu.docentes"/></html:link> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/proxy/layoutIntranetContacts/estgp/intranet/contactos/laboratorios.html"><bean:message key="intranet.contacts.labs"/></a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/proxy/layoutIntranetContacts/estgp/intranet/contactos/distLists.html"><bean:message key="intranet.contacts.lists"/></a> |
</li> |
</ul> |
</div> |
</div> |
</div> |
/impl/src/web/user/contacts/listTeachers.jsp |
---|
New file |
0,0 → 1,43 |
<%@ page import="pt.estgp.estgweb.Globals" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<div id="contentIntranet"> |
<div class="seccao"> |
<table class="dataTable"> |
<tr> |
<th><bean:message key="name"/></th> |
<th><bean:message key="area"/></th> |
<th><bean:message key="office"/></th> |
<th>EXT.</th> |
<th><bean:message key="email"/></th> |
</tr> |
<logic:iterate id="userView" name="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<td> |
${userView.name} |
</td> |
<td> |
<logic:present name="userView" property="mainArea"> |
<bean:message key="area.${userView.mainArea}"/> |
</logic:present> |
</td> |
<td> |
${userView.office} |
</td> |
<td> |
${userView.ext} |
</td> |
<td> |
${userView.username}@<%=Globals.EMAIL_LOCAL_SUFFIX%> |
</td> |
</tr> |
</logic:iterate> |
</table> |
</div> |
</div> |
/impl/etc/todo/todo.txt |
---|
9,12 → 9,6 |
No dia da Instalação: |
Pasta de Deliberações CC copy paste. |
Configuracoes de Teste |
Server ESTGP esta definido para o localhost |
Start Path do IOnline esta para a raiz mas para testar unidades tem de apontar para /Erasmus/baco |
(PEDRO) Todos os documentos da Secção escola devem ser transferidos para a mesma pasta na nova web |
Reestruturação das pastas da intranet: |
As pastas enumeradas adiante tem de possuir permissões de intranet |
29,18 → 23,11 |
Pasta Bolonha ZIP Pack deploy |
Pasta Horarios Criar hierarquia. > Intranet/horarios |
Jorge Meu |
Tirar o getSerializable de noovo do domainObject e ver de onde devem herdar |
### |
Listagem de Docentes a fazer por jorge |
Listagem de Alunos a fazer por jorge |
Avisos Disciplina a fazer Susana |
Disciplinas com Duvidas a fazer por jorge |
Disciplinas com Blog a fazer por jorge |
RSS disciplina incluido os três pontos anteriores Susana |
RSS aluno incluindo o RSS anterior e os avisos gerais e os avisos para alunos Susana |
RSS geral para anuncios dado o Tipo de anuncio (Destaques, SubDestaques e Noticias) Susana |
48,8 → 35,40 |
TAB da disciplina definido por Jorge implementadar pela Susana (Objectivos, Programa, listagem da Intranet, Lista de Docentes, Lista de Alunos) |
Pagina da disciplina a listar conteudos da intranet Jorge |
#Material da Regie |
#### |
FABIO |
Imagens de Origem das noticias, parece-me que estão mal na pasta imgs |
criar por defeito no DBInit um user com o role de cada uma das imagens (Secretaria, CI, CD, CC, CP, etc) |
Serviços |
1 - Actualizar material -> Procurar XML |
2 - Registar Emprestimo -> Procurar utilizador -> Inserir Material da Combo (Filtra por entregar) -> Data De, Data Até -> confirmar |
3 - Entregar Emprestimo -> Listar Emprestimos Pendentes -> Combo Devolvido |
4 - Consultar Historico de Emprestimos -> (Entre Datas) |
Extras |
1 - Afazeres do Aluno Equipamentos por entregar |
2 - Material da Regie na página oficial navegavel pelos Directorios |
#Programas |
Curto Prazo |
- Listar apenas unidades com professor |
- Filtrar por semestre |
- adicionar campos consultar o Batista |
- Descrição da Unidade |
- bibliografia |
Serviços Extra |
1 - Consultar bibliografia por Curso / Semestre / Ano |
2 - Pesquisar |
#Questionários |
- Semi-Projectado no EA |
#Eventos |
- Projecto por formalizar |
/impl/build.xml |
---|
315,6 → 315,9 |
<fileset dir="${src.dir}" includes="**/*.xsl"/> |
</copy> |
<copy overwrite="true" todir="${build.dir.classes}"> |
<fileset dir="${src.dir}" includes="**/*.csv"/> |
</copy> |
<copy overwrite="true" todir="${build.dir.classes}"> |
<fileset dir="${conf.dir}/berserk" includes="*.*"/> |
</copy> |
<mkdir dir="${email.templates.dir.build}"/> |