/impl/conf/language/MessageResourcesIntranet.properties |
---|
3,6 → 3,7 |
# INTRANET MESSAGE RESOURCES |
# |
################################################################################ |
intranet=Intranet |
intranet.services=Os Meus Serviços |
intranet.todo=Os Meus Afazeres |
intranet.editable.blogs=Os Blogs Onde Posso Publicar |
22,7 → 23,7 |
intranet.my.blog.posts=Os Meus Posts |
intranet.course.unit.announcements=Os anúncios das minhas Unidades |
intranet.course.unit.announcements=Últimos anúncios das minhas Unidades |
course.unit.announcements.zero.announcements=Zero anúncios |
courseunit.works.zero=Não existem trabalhos |
30,3 → 31,6 |
courseunit.title=Titulo |
courseunit.description=Descrição |
courseunit.status=Estado |
intranet.create.folders=Criar Pastas Para a Intranet |
/impl/conf/language/MessageResourcesCourse.properties |
---|
New file |
0,0 → 1,35 |
################################################################################ |
# |
# COURSE UNITS MESSAGE RESOURCES |
# |
################################################################################ |
module.Courses=Cursos |
course.new=Criar Curso |
course.submit.edit=Editar Curso {0} |
course.submit.new=Novo Curso |
course.updated.success=Curso {0} actualizado com sucesso |
course.created.success=Curso {0} criado com sucesso |
course.select=Escolha Curso |
course.select.message=Por favor selecione o curso que deseja editar |
course.code=Código |
course.degree=Grau académico |
course.importYear=Ano de Importação |
course.institutionalCode=Código de Instituição |
course.description=Descrição |
course.coordinator=Coordenador de Curso |
course.director=Director de Curso |
course.studies.plan=Plano de Estudos (XML válido no planoEstudos.xsd) |
course.studies.plan.not.available=Não disponivel |
course.courseunit.program.objectives.todo=Unidade em Falta (programa ou objectivos) |
/impl/conf/language/MessageResourcesAnnouncements.properties |
---|
6,7 → 6,10 |
announcement.expire.date.date=A data em que o anúncio expira obrigatória |
module.Announcements=Anúncios |
module.TodoAnnouncements=Urgentes |
announcement.exceed.bigmage.max.size=Excedeu o tamanho maximo da imagem grande |
announcement.exceed.smallmage.max.size=Excedeu o tamanho maximo da imagem pequena |
announcement.image.max=Tamanho Maximo: |
33,12 → 36,13 |
announcement.internal=Dominio |
announcement.internal.yes=Interno |
announcement.internal.no=Público |
announcement.courseunit.internal=Interno aos alunos e docentes da unidade |
announcements.type.news=Notícias |
announcements.type.top.flash.news=Destaques |
announcements.type.bottom.flash.news=Destaques Secundarios |
announcements.type.todo=Trabalho a fazer |
announcements.type.courseUnitAnnouncement=Anúncio de Unidade Curricular |
announcement.protocol.error.http=http |
announcement.protocol.error.https=https |
announcement.protocol.error.ftp=ftp |
/impl/conf/language/MessageResources.properties |
---|
80,13 → 80,14 |
user.role.scientificCouncil=Concelho Científico |
user.role.erasmusCouncil=Concelho Erasmus |
user.role.pedagogicCouncil=Concelho Pedagógico |
user.role.courseCoordinator=Coordenador |
user.role.courseCoordinator=Coordenadores |
user.role.futureStudent=Futuros Alunos |
user.role.oldStudent=Antigos Alunos |
user.role.sudentAssociation=Associação de Estudantes |
user.role.studentAssociation=Associação de Estudantes |
user.role.computerCenter=Centro Informático |
user.role.courseCoordinator=Coordenador |
user.role.courseDirector=Directores de Curso |
#Filter Errors |
fail.role=Lamentamos o incómodo, mas necessita de permissões especiais para aceder a esta área. |
fail.owner=Lamentamos o incómodo, mas não tem permissões sobre o objecto ao qual tentou aceder. |
94,6 → 95,8 |
fail.authenticate=Falhou a autênticação |
#palavras comuns |
none=Nenhum |
number=Número |
at=a |
from=de |
to=para |
109,6 → 112,8 |
authenticate=Entrar |
logout=Sair |
submit.announcement=Colocar Anúncio |
submit.todo.announcement=Colocar a fazer |
todo.announcement=A fazer |
edit.profile=Editar Meu Perfil |
edit.user.profile=Editar Utilizador |
services=Serviços |
122,7 → 127,15 |
status.invalid=Inválido |
status.active=Activo |
status.inactive=Inactivo |
validate=Validar |
invalidate=Invalidar |
activate=Activar |
deactivate=Desactivar |
manage=Gerir |
replace=Substituir |
work=Trabalho |
#Menus Portais |
portal.orgaos=Orgãos |
portal.conselho.pedagogico=Conselho Pedagógico |
261,6 → 274,7 |
email.institucion2=E-mail Institucional |
email.secundary=E-mail Secundário |
phone.number=Telefone |
new=Novo |
#Profile |
profile.created.sucess=Utilizador criado com sucesso |
/impl/conf/language/MessageResourcesBlog.properties |
---|
50,6 → 50,7 |
blog.intro.message=O Serviço de criação de Blogs requer validação por parte da administração. Depois de criar o seu blog aguarde que este seja validado pelo Administrador. Só assim os outros utilizadores terão acesso ao mesmo. |
blog.courseunit.internal=Interno à Unidade Curricular |
blog.courseunit=Blog da Unidade Curricular {0} |
/impl/conf/language/MessageResourcesCourseUnits.properties |
---|
4,9 → 4,10 |
# |
################################################################################ |
module.CourseUnits=Unidades Curriculares |
course=Curso ({0}) |
courseunit=Unidade Curricular ({0}) |
course={0} > |
courseunit={0} |
courseunit.teachers=Corpo Docente |
courseunit.objectives=Objectivos da Unidade |
courseunit.programfilepath=Programa Curricular |
courseunit.programfilepath.not.available=O Programa Curricular não está disponivel |
17,7 → 18,8 |
courseunit.objectives.todo=Peenchimento dos objectivos da unidade |
courseunit.program.todo=Upload do programa da unidade |
courseunit.question.todo=Dúvida |
course.unit.works=(Trabalhos) |
courseunit.assignement.todo=Trabalho por entregar |
course.unit.works=Trabalhos |
courseunit.works=Trabalhos |
courseunit.new=Criar Unidade Curricular |
courseunit.edit=Editar Unidade Curricular |
34,10 → 36,76 |
courseunit.created.success=Unidade Curricular {0} criada com sucesso |
courseunit.updated.success=Unidade Curricular {0} actualizada com sucesso |
courseunit.assignement.deliver.date=Data de Entrega |
courseunit.assignement=Trabalho: {0} |
courseunit.assignement.delivered.date=Data de Entrega |
courseunit.assignement.deliver.date=Data Limite de Entrega |
courseunit.assignement.deliver.type=Tipo de entrega |
courseunit.assignement.deliver.type.zipfile=Ficheiro Comprimido (ZIP) |
courseunit.assignement.deliver.grade=Nota |
courseunit.assignement.deliver.show.obs=Adicionar observações |
courseunit.assignement.deliver.obs=obs |
courseunit.assignement.deliver.type.nofile=Entrega não controlada pelo sistema |
courseunit.assignement.deliver.late.permission=Permitir entregas atrasadas |
courseunit.assignement.delivers=Número de Entregas |
courseunit.assignement.deliver.version=Versão Entregue |
courseunit.assignement.deliver=Entregar Trabalho |
courseunit.search=Procurar Unidade Curricular |
courseunitwork.confirm.delete=Atenção: Todas as entregas de alunos serão também removidas. Pode Invalidar o trabalho para este não ficar visivel aos alunos e desta forma mantém a informação relativa a entregas. De certeza que pretende apagar o Trabalho selecionado? |
courseunit.assignement.deliver.sucess=Trabalho {0} entregue com sucesso |
errors.courseunit.assignement.deliver.file=O Ficheiro que escolheu não existe ou estão vazio |
errors.courseunit.assignement.deliver.zip=Por favor escolha um ficheiro comprimido em formato ZIP |
errors.courseunit.assignement.file.type=Por favor escolha um ficheiro comprimido em formato ZIP |
courseunit.students=Estudantes |
courseunit.search=Procurar Unidade Curricular |
courseunit.assignement.deliver.time=Entregue |
courseunit.assignement.deliver.time.ok=Entregue a Horas |
courseunit.assignement.deliver.time.late=Entrega atrasada |
courseunit.assignement.deliver.time.no=Por Entregar |
courseunit.menu.home=Inicio |
courseunit.menu.put.question=Colocar dúvida |
courseunit.menu.put.announcement=Colocar Anúncio |
courseunit.menu.assignements=Trabalhos |
courseunit.menu.blog=Blog da Unidade |
courseunit.menu.presences=Presenças |
courseunit.menu.contents=Conteúdos |
courseunit.menu.grades=Avaliação |
replace=Substituir |
courseunit.assignement.file=Enunciado |
error.courseunit.student.not.found=Estudante não encontrado |
error.courseunit.teacher.not.found=Professor não encontrado |
/impl/conf/WEB-INF/struts/struts-blog.xml |
---|
90,5 → 90,29 |
<forward name="from.add.role" path="page.submit.blog.from.serviceZone"/> |
</action> |
<action path="/user/startAddPostFromCourseUnit" forward="/user/blogsControllerFromCourseUnit.do?dispatch=addPost&from=CourseUnit"/> |
<action path="/user/startEditPostFromCourseUnit" forward="/user/blogsControllerFromCourseUnit.do?dispatch=editPost&from=CourseUnit"/> |
<action path="/user/startDeletePostFromCourseUnit" forward="/user/blogsControllerFromCourseUnit.do?dispatch=deletePost&from=CourseUnit"/> |
<action path="/user/startValidatePostFromCourseUnit" forward="/user/blogsControllerFromCourseUnit.do?dispatch=validatePost&from=CourseUnit"/> |
<action path="/user/startSubmitBlogFromCourseUnit" forward="/user/blogsControllerFromCourseUnit.do?dispatch=start&from=CourseUnit"/> |
<action path="/user/startDeleteBlogFromCourseUnit" forward="/user/blogsControllerFromCourseUnit.do?dispatch=delete&from=CourseUnit"/> |
<action path="/user/startEditBlogFromCourseUnit" forward="/user/blogsControllerFromCourseUnit.do?dispatch=edit&from=CourseUnit"/> |
<action path="/user/startLoadBlogFromCourseUnit" forward="/user/blogsControllerFromCourseUnit.do?dispatch=load&from=CourseUnit"/> |
<action path="/user/startLoadBlogMonthFromCourseUnit" forward="/user/blogsControllerFromCourseUnit.do?dispatch=loadMonth&from=CourseUnit"/> |
<action path="/user/blogsControllerFromCourseUnit" |
type="pt.estgp.estgweb.web.controllers.blogs.BlogsController" |
name="BlogForm" |
scope="request" |
parameter="dispatch" |
validate="false" |
input="page.separators.home"> |
<forward name="load" path="page.load.blog.from.courseUnit"/> |
<forward name="submit" path="page.submit.blog.from.courseUnit"/> |
<forward name="loadMonth" path="page.load.blog.month.from.courseUnit"/> |
<forward name="from.add.role" path="page.submit.blog.from.courseUnit"/> |
</action> |
</action-mappings> |
</struts-config> |
/impl/conf/WEB-INF/struts/struts-courses.xml |
---|
New file |
0,0 → 1,53 |
<?xml version="1.0" encoding="UTF-8"?> |
<!--<!DOCTYPE struts-config PUBLIC--> |
<!--"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"--> |
<!--"http://struts.apache.org/dtds/struts-config_1_3.dtd">--> |
<struts-config> |
<form-beans> |
<form-bean type="pt.estgp.estgweb.web.form.courses.CourseForm" name="CourseForm"/> |
</form-beans> |
<global-exceptions> |
</global-exceptions> |
<global-forwards> |
</global-forwards> |
<action-mappings> |
<action path="/startLoadCourse" forward="/courseController.do?dispatch=load"/> |
<action path="/courseController" |
type="pt.estgp.estgweb.web.controllers.courses.CoursesController" |
name="CourseForm" |
scope="request" |
parameter="dispatch" |
validate="false" |
input="page.welcome"> |
<forward name="load" path="page.load.course"/> |
</action> |
<action path="/user/startSelectCourseFromServiceZone" forward="page.select.course.from.service.zone"/> |
<action path="/user/startEditCourseFromServiceZone" forward="/user/courseControllerFromServiceZone.do?dispatch=edit&from=ServiceZone"/> |
<action path="/user/startNewCourseFromServiceZone" forward="/user/courseControllerFromServiceZone.do?dispatch=startNew&from=ServiceZone"/> |
<action path="/user/startSubmitCourseFromServiceZone" forward="/user/courseControllerFromServiceZone.do?dispatch=submit&from=ServiceZone"/> |
<action path="/user/courseControllerFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.courses.CoursesController" |
name="CourseForm" |
scope="request" |
parameter="dispatch" |
validate="false" |
input="page.separators.serviceZone"> |
<forward name="submit" path="page.submit.course.from.service.zone"/> |
</action> |
</action-mappings> |
</struts-config> |
/impl/conf/WEB-INF/struts/struts-courseunits.xml |
---|
24,6 → 24,8 |
<action path="/startTeste2" forward="page.separators.home"/> |
<action path="/startLoadCourseUnitStudents" forward="/courseUnitController.do?dispatch=loadStudents"/> |
<action path="/startCourseUnitBlog" forward="/courseUnitController.do?dispatch=startBlog"/> |
<action path="/startLoadCourseUnitWorks" forward="/courseUnitController.do?dispatch=loadWorks"/> |
<action path="/startLoadCourseUnit" forward="/courseUnitController.do?dispatch=load"/> |
<action path="/courseUnitController" |
35,10 → 37,19 |
input="page.welcome"> |
<forward name="load" path="page.load.courseunit"/> |
<forward name="load.works" path="page.load.courseunit.works"/> |
<forward name="load.blog" path="page.load.courseunit.blog"/> |
<forward name="load.students" path="page.load.courseunit.students"/> |
</action> |
<!--<action path="/user/startLoadCourseUnitFromHome" forward="page.load.courseunit.from.home"/>--> |
<action path="/user/startCourseUnitBlogFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=startBlog&from=CourseUnit"/> |
<action path="/user/startLoadCourseUnitAssignementFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadAssignement&from=Home"/> |
<action path="/user/startValidateInvalidateCourseUnitWorksFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=validateInvalidateAssignement&from=Home"/> |
<action path="/user/startDeleteCourseUnitWorksFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=deleteAssignement&from=Home"/> |
<action path="/user/startEditCourseUnitWorksFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=editAssignement&from=Home"/> |
<action path="/user/startLoadCourseUnitWorksFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadWorks&from=Home"/> |
<action path="/user/startLoadCourseUnitStudentsFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadStudents&from=Home"/> |
<action path="/user/startLoadCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=load&from=Home"/> |
<action path="/user/courseUnitControllerFromHome" |
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController" |
49,6 → 60,9 |
input="page.welcome"> |
<forward name="load" path="page.load.courseunit.from.home"/> |
<forward name="load.works" path="page.load.courseunit.works.from.home"/> |
<forward name="load.assignement" path="page.load.courseunit.assignement.from.home"/> |
<forward name="load.blog" path="page.load.blog.from.courseUnit"/> |
<forward name="load.students" path="page.load.courseunit.students.from.home"/> |
<forward name="submit" path="page.submit.courseunit.from.home"/> |
</action> |
/impl/conf/WEB-INF/struts/struts-default.xml |
---|
135,6 → 135,7 |
/WEB-INF/struts/tiles-announcements.xml, |
/WEB-INF/struts/tiles-banners.xml, |
/WEB-INF/struts/tiles-courseunits.xml, |
/WEB-INF/struts/tiles-courses.xml, |
/WEB-INF/struts/tiles-events.xml, |
/WEB-INF/struts/tiles-ftpclient.xml, |
/WEB-INF/struts/tiles-processworkflow.xml, |
/impl/conf/WEB-INF/struts/tiles-announcements.xml |
---|
8,40 → 8,73 |
<tiles-definitions> |
<definition name="page.load.announcement" extends="base.layout1"> |
<put name="title" value="Load Announcement" /> |
<put name="title" value="Anuncio" /> |
<put name="body" value="/public/announcements/loadAnnouncement.jsp" /> |
</definition> |
<definition name="page.submit.announcement" extends="base.layout2"> |
<put name="title" value="Submit Announcement"/> |
<put name="title" value="Anuncio"/> |
<put name="topnav" value="/admin/announcements/topnavCreateAnnouncement.jsp"/> |
<put name="body" value="/admin/announcements/submitAnnouncement.jsp"/> |
</definition> |
<definition name="page.submit.announcement.from.home" extends="base.separators"> |
<put name="title" value="Submit Announcement"/> |
<put name="separator" value="1" type="string" /> |
<definition name="page.submit.announcement.from.home" extends="page.separators.home"> |
<put name="title" value="Anuncio"/> |
<put name="topnav" value="/user/home/topnavCreateAnnouncement.jsp"/> |
<put name="body" value="/admin/announcements/submitAnnouncement.jsp"/> |
</definition> |
<definition name="page.submit.announcement.from.serviceZone" extends="base.separators"> |
<put name="title" value="Submit Announcement"/> |
<put name="separator" value="4" type="string" /> |
<definition name="page.load.announcement.from.home" extends="page.separators.home"> |
<put name="title" value="Anuncio"/> |
<put name="topnav" value="/user/home/topnavLoadAnnouncement.jsp"/> |
<put name="body" value="/public/announcements/loadAnnouncement.jsp"/> |
</definition> |
<definition name="page.submit.announcement.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Anuncio"/> |
<put name="topnav" value="/user/serviceZone/topnavCreateAnnouncement.jsp"/> |
<put name="body" value="/admin/announcements/submitAnnouncement.jsp"/> |
</definition> |
<definition name="page.load.announcement.from.home" extends="base.separators"> |
<put name="title" value="Load Announcement"/> |
<put name="separator" value="1" type="string" /> |
<put name="topnav" value="/user/home/topnavLoadAnnouncement.jsp"/> |
<put name="body" value="/public/announcements/loadAnnouncement.jsp"/> |
</definition> |
<definition name="page.load.announcement.from.serviceZone" extends="base.separators"> |
<put name="title" value="Load Announcement"/> |
<put name="separator" value="4" type="string" /> |
<definition name="page.load.announcement.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Anuncio"/> |
<put name="topnav" value="/user/serviceZone/topnavLoadAnnouncement.jsp"/> |
<put name="body" value="/public/announcements/loadAnnouncement.jsp"/> |
</definition> |
<!--Unidades Curriculares--> |
<definition name="page.submit.announcement.from.courseUnit" extends="page.separators.home"> |
<put name="title" value="Anuncio"/> |
<put name="topnav" value="/user/courseunits/topnavCreateAnnouncement.jsp"/> |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/submitAnnouncement.jsp"/> |
</definition> |
<definition name="page.load.announcement.from.courseUnit" extends="page.separators.home"> |
<put name="title" value="Anuncio"/> |
<put name="topnav" value="/user/courseunits/topnavLoadAnnouncement.jsp"/> |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/loadAnnouncement.jsp"/> |
</definition> |
<!-- Particularizacao para Afazeres --> |
<definition name="page.submit.todo.announcement.from.home" extends="page.separators.home"> |
<put name="title" value="Trabalho a fazer"/> |
<put name="topnav" value="/user/home/topnavCreateTodoAnnouncement.jsp"/> |
<put name="body" value="/admin/announcements/submitTodoAnnouncement.jsp"/> |
</definition> |
<definition name="page.load.todo.announcement.from.home" extends="page.separators.home"> |
<put name="title" value="Trabalho a fazer"/> |
<put name="topnav" value="/user/home/topnavLoadTodoAnnouncement.jsp"/> |
<put name="body" value="/public/announcements/loadTodoAnnouncement.jsp"/> |
</definition> |
<definition name="page.submit.todo.announcement.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Trabalho a fazer"/> |
<put name="topnav" value="/user/serviceZone/topnavCreateTodoAnnouncement.jsp"/> |
<put name="body" value="/admin/announcements/submitTodoAnnouncement.jsp"/> |
</definition> |
<definition name="page.load.todo.announcement.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Trabalho a fazer"/> |
<put name="topnav" value="/user/serviceZone/topnavLoadTodoAnnouncement.jsp"/> |
<put name="body" value="/public/announcements/loadTodoAnnouncement.jsp"/> |
</definition> |
</tiles-definitions> |
/impl/conf/WEB-INF/struts/tiles-blog.xml |
---|
12,13 → 12,11 |
<put name="topnav" value="/admin/blogs/topnavCreateBlog.jsp"/> |
<put name="body" value="/admin/blogs/submitBlog.jsp"/> |
</definition> |
<definition name="page.load.blog" extends="base.layout1"> |
<put name="title" value="Blog"/> |
<put name="topnav" value="/public/blogs/topnavLoadBlog.jsp"/> |
<put name="body" value="/public/blogs/blog.jsp"/> |
</definition> |
<definition name="page.load.blog.month" extends="base.layout1"> |
<put name="title" value="Blog"/> |
<put name="body" value="/public/blogs/blog.jsp"/> |
31,11 → 29,6 |
<put name="topnav" value="/user/home/topnavCreateBlog.jsp"/> |
<put name="body" value="/admin/blogs/submitBlog.jsp"/> |
</definition> |
<definition name="page.submit.blog.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Submit Blog"/> |
<put name="topnav" value="/user/serviceZone/topnavCreateBlog.jsp"/> |
<put name="body" value="/admin/blogs/submitBlog.jsp"/> |
</definition> |
<definition name="page.load.blog.from.home" extends="page.separators.home"> |
<put name="title" value="Load Blog"/> |
<put name="topnav" value="/user/home/topnavLoadBlog.jsp"/> |
46,6 → 39,13 |
<put name="topnav" value="/user/home/topnavLoadBlogMonth.jsp"/> |
<put name="body" value="/public/blogs/blog.jsp"/> |
</definition> |
<definition name="page.submit.blog.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Submit Blog"/> |
<put name="topnav" value="/user/serviceZone/topnavCreateBlog.jsp"/> |
<put name="body" value="/admin/blogs/submitBlog.jsp"/> |
</definition> |
<definition name="page.load.blog.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Load Blog"/> |
<put name="topnav" value="/user/serviceZone/topnavLoadBlog.jsp"/> |
/impl/conf/WEB-INF/struts/tiles-courses.xml |
---|
New file |
0,0 → 1,35 |
<?xml version="1.0" encoding="UTF-8" ?> |
<!--<!DOCTYPE tiles-definitions PUBLIC--> |
<!--"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"--> |
<!--"http://struts.apache.org/dtds/tiles-config_1_1.dtd">--> |
<tiles-definitions> |
<definition name="page.load.course" extends="base.layout1"> |
<put name="title" value="Curso"/> |
<put name="topnav" value="/public/courses/topnavCourse.jsp"/> |
<put name="navigation" value="/public/courses/courses.jsp"/> |
<put name="body" value="/public/courses/course.jsp"/> |
</definition> |
<definition name="page.select.course.from.service.zone" extends="page.separators.serviceZone"> |
<put name="title" value="Selecção de Curso"/> |
<put name="topnav" value="/user/serviceZone/topnavSelectCourse.jsp"/> |
<put name="body" value="/user/courses/selectCourse.jsp"/> |
</definition> |
<definition name="page.submit.course.from.service.zone" extends="page.separators.serviceZone"> |
<put name="title" value="Editar Curso"/> |
<put name="topnav" value="/user/serviceZone/topnavSubmitCourse.jsp"/> |
<put name="body" value="/admin/courses/course.jsp"/> |
</definition> |
</tiles-definitions> |
/impl/conf/WEB-INF/struts/tiles-courseunits.xml |
---|
19,18 → 19,30 |
<put name="navigation" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/courseunitworks.jsp"/> |
</definition> |
<definition name="page.load.courseunit.blog" extends="base.layout1"> |
<put name="title" value="Blog da Unidade Curricular"/> |
<put name="topnav" value="/public/courseunits/topnavCourseUnitBlog.jsp"/> |
<put name="navigation" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/blog.jsp"/> |
</definition> |
<definition name="page.load.courseunit.students" extends="base.layout1"> |
<put name="title" value="Alunos Inscritos da Unidade Curricular"/> |
<put name="topnav" value="/public/courseunits/topnavCourseUnitStudents.jsp"/> |
<put name="navigation" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/students.jsp"/> |
</definition> |
<definition name="page.load.courseunit.from.home" extends="page.separators.home"> |
<put name="title" value="Unidade Curricular"/> |
<put name="topnav" value="/user/home/topnavCourseUnit.jsp"/> |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/courseunit.jsp"/> |
<put name="body" value="/user/courseunits/courseunitIntranet.jsp"/> |
</definition> |
<definition name="page.submit.courseunit.from.home" extends="page.separators.home"> |
<put name="title" value="Unidade Curricular"/> |
<put name="topnav" value="/user/home/topnavSubmitCourseUnit.jsp"/> |
<put name="body" value="/user/courseunits/courseunit.jsp"/> |
<put name="body" value="/user/courseunits/courseunitIntranet.jsp"/> |
</definition> |
<definition name="page.load.courseunit.works.from.home" extends="page.separators.home"> |
<put name="title" value="Trabalhos da Unidade Curricular"/> |
38,12 → 50,47 |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/courseunitworks.jsp"/> |
</definition> |
<definition name="page.load.courseunit.assignement.from.home" extends="page.separators.home"> |
<put name="title" value="Trabalho da Unidade Curricular"/> |
<put name="topnav" value="/user/home/topnavCourseUnitAssignement.jsp"/> |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/courseunitassignement.jsp"/> |
</definition> |
<definition name="page.load.courseunit.students.from.home" extends="page.separators.home"> |
<put name="title" value="Alunos Inscritos da Unidade Curricular"/> |
<put name="topnav" value="/user/home/topnavCourseUnitStudents.jsp"/> |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/students.jsp"/> |
</definition> |
<definition name="page.submit.blog.from.courseUnit" extends="page.separators.home"> |
<put name="title" value="Blog da Unidade Curricular"/> |
<put name="topnav" value="/user/courseunits/topnavCreateBlog.jsp"/> |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/submitBlog.jsp"/> |
</definition> |
<definition name="page.load.blog.from.courseUnit" extends="page.separators.home"> |
<put name="title" value="Blog da Unidade Curricular"/> |
<put name="topnav" value="/user/courseunits/topnavLoadBlog.jsp"/> |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/blogIntranet.jsp"/> |
</definition> |
<definition name="page.load.blog.month.from.courseUnit" extends="page.separators.home"> |
<put name="title" value="Blog da Unidade Curricular"/> |
<put name="topnav" value="/user/courseunits/topnavLoadBlogMonth.jsp"/> |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/blogIntranet.jsp"/> |
</definition> |
<!--Administrative pages--> |
<definition name="page.submit.courseunit.admin.from.service.zone" extends="page.separators.serviceZone"> |
/impl/conf/WEB-INF/struts/struts-announcements.xml |
---|
1,8 → 1,8 |
<?xml version="1.0" encoding="UTF-8"?> |
<!--<!DOCTYPE struts-config PUBLIC--> |
<!--"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"--> |
<!--"http://struts.apache.org/dtds/struts-config_1_3.dtd">--> |
<!--"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"--> |
<!--"http://struts.apache.org/dtds/struts-config_1_3.dtd">--> |
<struts-config> |
50,6 → 50,26 |
<forward name="success" path="page.separators.serviceZone"/> |
<forward name="from.add.role" path="page.submit.announcement.from.serviceZone"/> |
</action> |
<action path="/user/submitAnnouncementFromCourseUnit" |
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsAnnouncementsController" |
name="AnnouncementsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.announcement.from.courseUnit" |
validate="true"> |
<forward name="success" path="page.load.courseunit.from.home"/> |
<forward name="from.add.role" path="page.submit.announcement.from.courseUnit"/> |
</action> |
<action path="/user/submitTodoAnnouncementFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.announcements.AnnouncementsController" |
name="AnnouncementsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.todo.announcement.from.serviceZone" |
validate="true"> |
<forward name="success" path="page.separators.serviceZone"/> |
<forward name="from.add.role" path="page.submit.todo.announcement.from.serviceZone"/> |
</action> |
<action path="/startDeleteAnnouncement" forward="/loadAnnouncement.do?dispatch=delete"/> |
79,6 → 99,8 |
<forward name="submit" path="page.submit.announcement.from.home"/> |
<forward name="from.add.role" path="page.submit.announcement.from.home"/> |
</action> |
<action path="/user/startSubmitAnnouncementFromServiceZone" forward="/user/loadAnnouncementFromServiceZone.do?dispatch=start&from=ServiceZone"/> |
<action path="/user/startLoadAnnouncementFromServiceZone" forward="/user/loadAnnouncementFromServiceZone.do?dispatch=load&from=ServiceZone"/> |
<action path="/user/startEditAnnouncementFromServiceZone" forward="/user/loadAnnouncementFromServiceZone.do?dispatch=edit&from=ServiceZone"/> |
96,7 → 118,59 |
<forward name="from.add.role" path="page.submit.announcement.from.serviceZone"/> |
</action> |
<action path="/user/startSubmitTodoAnnouncementFromServiceZone" forward="/user/loadTodoAnnouncementFromServiceZone.do?dispatch=start&from=ServiceZone"/> |
<action path="/user/startLoadTodoAnnouncementFromServiceZone" forward="/user/loadTodoAnnouncementFromServiceZone.do?dispatch=load&from=ServiceZone"/> |
<action path="/user/startEditTodoAnnouncementFromServiceZone" forward="/user/loadTodoAnnouncementFromServiceZone.do?dispatch=edit&from=ServiceZone"/> |
<action path="/user/startDeleteTodoAnnouncementFromServiceZone" forward="/user/loadTodoAnnouncementFromServiceZone.do?dispatch=delete&from=ServiceZone"/> |
<action path="/user/loadTodoAnnouncementFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.announcements.AnnouncementsController" |
name="AnnouncementsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.todo.announcement.from.serviceZone" |
validate="false"> |
<forward name="load" path="page.load.todo.announcement.from.serviceZone"/> |
<forward name="submit" path="page.submit.todo.announcement.from.serviceZone"/> |
<forward name="success" path="page.separators.serviceZone"/> |
<forward name="from.add.role" path="page.submit.todo.announcement.from.serviceZone"/> |
</action> |
<action path="/user/startSubmitTodoAnnouncementFromHome" forward="/user/loadTodoAnnouncementFromHome.do?dispatch=start&from=Home"/> |
<action path="/user/startLoadTodoAnnouncementFromHome" forward="/user/loadTodoAnnouncementFromHome.do?dispatch=load&from=Home"/> |
<action path="/user/startEditTodoAnnouncementFromHome" forward="/user/loadTodoAnnouncementFromHome.do?dispatch=edit&from=Home"/> |
<action path="/user/startDeleteTodoAnnouncementFromHome" forward="/user/loadTodoAnnouncementFromHome.do?dispatch=delete&from=Home"/> |
<action path="/user/loadTodoAnnouncementFromHome" |
type="pt.estgp.estgweb.web.controllers.announcements.AnnouncementsController" |
name="AnnouncementsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.todo.announcement.from.home" |
validate="false"> |
<forward name="load" path="page.load.todo.announcement.from.home"/> |
<forward name="submit" path="page.submit.todo.announcement.from.home"/> |
<forward name="success" path="page.separators.home"/> |
<forward name="from.add.role" path="page.submit.todo.announcement.from.home"/> |
</action> |
<action path="/user/startSubmitAnnouncementFromCourseUnit" forward="/user/loadAnnouncementFromCourseUnit.do?dispatch=start&from=CourseUnit"/> |
<action path="/user/startLoadAnnouncementFromCourseUnit" forward="/user/loadAnnouncementFromCourseUnit.do?dispatch=load&from=CourseUnit"/> |
<action path="/user/startEditAnnouncementFromCourseUnit" forward="/user/loadAnnouncementFromCourseUnit.do?dispatch=edit&from=CourseUnit"/> |
<action path="/user/startDeleteAnnouncementFromCourseUnit" forward="/user/loadAnnouncementFromCourseUnit.do?dispatch=delete&from=CourseUnit"/> |
<action path="/user/loadAnnouncementFromCourseUnit" |
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsAnnouncementsController" |
name="AnnouncementsForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.announcement.from.courseUnit" |
validate="false"> |
<forward name="load" path="page.load.announcement.from.courseUnit"/> |
<forward name="submit" path="page.submit.announcement.from.courseUnit"/> |
<forward name="success" path="/user/startLoadCourseUnitFromHome.do"/> |
<forward name="from.add.role" path="page.submit.announcement.from.courseUnit"/> |
</action> |
</action-mappings> |
</struts-config> |
/impl/conf/WEB-INF/tlds/baco.tld |
---|
15,6 → 15,24 |
</attribute> |
</tag> |
<tag> |
<name>isTeacherOfCourseUnit</name> |
<tagclass>pt.estgp.estgweb.web.tags.IsTeacherOfCourseUnitTag</tagclass> |
<attribute> |
<name>courseUnitId</name> |
<required>true</required> |
<rtexprvalue>true</rtexprvalue> |
</attribute> |
</tag> |
<tag> |
<name>isStudentOfCourseUnit</name> |
<tagclass>pt.estgp.estgweb.web.tags.IsStudentOfCourseUnitTag</tagclass> |
<attribute> |
<name>courseUnitId</name> |
<required>true</required> |
<rtexprvalue>true</rtexprvalue> |
</attribute> |
</tag> |
<tag> |
<name>hasRole</name> |
<tagclass>pt.estgp.estgweb.web.tags.HasRoleTag</tagclass> |
<attribute> |
/impl/conf/WEB-INF/web.xml |
---|
81,6 → 81,7 |
/WEB-INF/struts/struts-announcements.xml, |
/WEB-INF/struts/struts-banners.xml, |
/WEB-INF/struts/struts-courseunits.xml, |
/WEB-INF/struts/struts-courses.xml, |
/WEB-INF/struts/struts-events.xml, |
/WEB-INF/struts/struts-ftpclient.xml, |
/WEB-INF/struts/struts-processworkflow.xml, |
/impl/conf/log4j.properties |
---|
20,7 → 20,11 |
log4j.appender.hibernate.sessionServiceClass=HibernateHelper |
log4j.appender.hibernate.loggingEventClass=LogEvent |
# suppress warnings from the SessionImpl (like Narrowing proxy to class com.atlassian.confluence.pages.Page - this operation breaks ==) |
log4j.logger.org.hibernate.engine.StatefulPersistenceContext.ProxyWarnLog=ERROR |
log4j.additivity.org.hibernate.engine.StatefulPersistenceContext.ProxyWarnLog=false |
#default category |
log4j.rootLogger = info, defaultLog, stdout |
/impl/conf/app.properties |
---|
7,7 → 7,6 |
site.url=@site.url@ |
email.server=mail.estgp.pt |
email.user= |
email.password= |
33,6 → 32,8 |
user.super=all |
user.student=student |
user.teacher=teacher |
user.courseCoordinator=courseCoordinator |
user.courseDirector=courseDirector |
user.role.00=all |
user.role.01=admin |
53,9 → 54,11 |
user.role.16=pedagogicCouncil |
user.role.17=erasmusCouncil |
user.role.18=courseCoordinator |
user.role.19=sudentAssociation |
user.role.19=studentAssociation |
user.role.20=representativeCouncil |
user.role.21=computerCenter |
user.role.22=courseCoordinator |
user.role.23=courseDirector |
######################################################################### |
69,23 → 72,52 |
# |
announcements.text.summary.size=250 |
announcements.text.summary.size.small=100 |
announcements.max.visible=10 |
announcements.top.flash.news.timeout.miliseconds=7000 |
announcements.type.0=news |
announcements.type.1=top.flash.news |
announcements.type.2=bottom.flash.news |
announcements.type.3=todo |
announcements.type.4=courseUnitAnnouncement |
#separate with , example helpdocs,reunions |
announcements.not.standard.0=todo |
announcements.not.standard.1=courseUnitAnnouncement |
#Roles that can validate invalid announcements |
announcements.validator.role.01=admin |
announcements.validator.role.02=computerCenter |
announcements.automatic.validation.role.1=all |
announcements.automatic.validation.role.2=admin |
announcements.automatic.validation.role.3=ci |
announcements.automatic.validation.role.4=administrativeCouncil |
announcements.automatic.validation.role.5=services |
sudentAssociation.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent |
sudentAssociation.auto.validation.types=news,top.flash.news |
studentAssociation.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent |
studentAssociation.auto.validation.types=news,top.flash.news |
services.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent,teacher,teacher.eg,teacher.dg,teacher.ce |
services.auto.validation.types=news,top.flash.news,bottom.flash.news,todo |
announcements.max.visible=10 |
announcements.top.flash.news.timeout.miliseconds=7000 |
administrativeCouncil.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent,teacher,teacher.eg,teacher.dg,teacher.ce |
administrativeCouncil.auto.validation.types=news,top.flash.news,bottom.flash.news,todo |
announcements.type.0=news |
announcements.type.1=top.flash.news |
announcements.type.2=bottom.flash.news |
courseDirector.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent,teacher,teacher.eg,teacher.dg,teacher.ce |
courseDirector.auto.validation.types=news,top.flash.news,bottom.flash.news,todo |
courseCoordinator.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent,teacher,teacher.eg,teacher.dg,teacher.ce |
courseCoordinator.auto.validation.types=news,top.flash.news,bottom.flash.news,todo |
scientificCouncil.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent,teacher,teacher.eg,teacher.dg,teacher.ce |
scientificCouncil.auto.validation.types=news,top.flash.news,bottom.flash.news,todo |
pedagogicCouncil.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent,teacher,teacher.eg,teacher.dg,teacher.ce |
pedagogicCouncil.auto.validation.types=news,top.flash.news,bottom.flash.news,todo |
#role images for announcements |
announcement.default.img=/imgs/rolesIcons/nd.gif |
role.admin.img=/imgs/rolesIcons/estg.gif |
98,9 → 130,6 |
role.services.img=/imgs/rolesIcons/secretaria.gif |
announcements.validator.role.01=admin |
announcements.validator.role.02=computerCenter |
######################################################################### |
# |
# reminders |
113,7 → 142,7 |
# |
blog.desc.summary.size=250 |
blog.type.courseunit=courseunit |
######################################################################### |
# Link Analysis |
# |
193,7 → 222,18 |
#importSecondYearFormat {1} |
importFinalFormat={0}{1} |
importFirstYearFormatIntranet=yyyy |
importSecondYearFormatIntranet=yyyy |
importFinalFormatIntranet=AnoLectivo.{0}-{1} |
intranet.semestre.S1=Semestre1 |
intranet.semestre.S2=Semestre2 |
intranet.setup.file=@intranet.setup.folders.file@ |
intranet.setup.users.filename=cursos.txt |
intranet.setup.filename=@intranet.setup.folders.filename@ |
######################################################################### |
# |
#PopService |
/impl/conf/berserk/sd.xml |
---|
52,12 → 52,10 |
<service> |
<name>LoadUsers</name> |
<implementationClass>pt.estgp.estgweb.services.users.LoadUsersService</implementationClass> |
<description>Load student units</description> |
<description>Load user of some class</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Admins"/> |
</filterChains> |
</service> |
104,6 → 102,7 |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
<chain name="IsInCourseUnit"/> |
</filterChains> |
</service> |
<service> |
116,6 → 115,7 |
<chain name="Session"/> |
<!--<chain name="Admins"/>--> |
<chain name="OwnersEdit"/> |
<chain name="IsInCourseUnit"/> |
<!--<chain name="OwnersEditOnlyIfNotValid"/>--> |
<!--<chain name="ContextObjectTimer"/>--> |
<!--<chain name="ContextStaticTimerExample"/>--> |
624,25 → 624,111 |
</service> |
<service> |
<name>LoadCourseUnitWorks</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitWorksService</implementationClass> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitWorkService</implementationClass> |
<description>Load course unit works</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadCourseUnitWorks</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCourseUnitWorkAssignement</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitWorkService</implementationClass> |
<description>Load course unit works</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadAssignement</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnerCourseUnitFromWorkAssignement"/> |
</filterChains> |
</service> |
<service> |
<name>CreateCourseUnitWork</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorkService</implementationClass> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitWorkService</implementationClass> |
<description>Load course unit works</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>create</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnerCourseUnit"/> |
</filterChains> |
</service> |
<service> |
<name>EditCourseUnitWork</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitWorkService</implementationClass> |
<description>Load course unit works</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>create</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnerCourseUnitFromWorkAssignementObject"/> |
</filterChains> |
</service> |
<service> |
<name>StartCourseUnitBlog</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitBlogService</implementationClass> |
<description>start course unit blog creating if don't exist</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>startUnitBlog</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
<service> |
<name>DeliverCourseUnitWork</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitWorkService</implementationClass> |
<description>Load course unit works</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>deliverWork</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="IsStudentInCourseUnitFromWorkAssignement"/> |
</filterChains> |
</service> |
<service> |
<name>UpdateCourseUnitDeliverables</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitWorkService</implementationClass> |
<description>update deliverables with grade and observations</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>updateDeliverables</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnerCourseUnit"/> |
</filterChains> |
</service> |
<service> |
<name>ValidateInvalidateCourseUnitWork</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitWorkService</implementationClass> |
<description>Load course unit works</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>validateInvalidate</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnerCourseUnitFromWorkAssignement"/> |
</filterChains> |
</service> |
<service> |
<name>DeleteCourseUnitWork</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CourseUnitWorkService</implementationClass> |
<description>Load course unit works</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>delete</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnerCourseUnitFromWorkAssignement"/> |
</filterChains> |
</service> |
<service> |
<name>SearchCourseUnit</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.SearchCourseUnitService</implementationClass> |
<description>Load course unit works</description> |
739,7 → 825,69 |
</service> |
<service> |
<name>CreateCourseUnitDirPackage</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitDirPackageService</implementationClass> |
<description>Create a zip file with Intranet folders</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Admins"/> |
</filterChains> |
</service> |
<!--COURSES--> |
<service> |
<name>LoadCourseByCode</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass> |
<description>Load course by String code</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadCourseByCode</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCourse</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass> |
<description>Load course by String code</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadCourse</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
</filterChains> |
</service> |
<service> |
<name>SubmitCourse</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass> |
<description>Create or Update a new course</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>submitCourse</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Admins"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCourses</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass> |
<description>Load All Courses</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadCourses</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
</filterChains> |
</service> |
<!--Administratives--> |
<service> |
<name>CreateCourseUnitAdmin</name> |
/impl/conf/berserk/fd.xml |
---|
45,17 → 45,47 |
<name>OwnerUsersClass</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.OwnerUsersClass</implementationClass> |
<description> |
Checks if the requester is owner of the requested bead |
Checks if the requester is owner of the requested bean |
filter parameter: bean serializable id |
filter parameter: bean class |
</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>IsInCourseUnit</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.IsInCourseUnit</implementationClass> |
<description> |
Checks if the requester is in course unit of the requested bean |
filter parameter: bean serializable id |
filter parameter: bean class |
</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>IsStudentInCourseUnitUsersClass</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.IsStudentInCourseUnitUsersClass</implementationClass> |
<description> |
Checks if the requester is student in course unit of the requested bean |
filter parameter: bean serializable id |
filter parameter: bean class |
</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>IsTeacherInCourseUnitUsersClass</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.IsTeacherInCourseUnitUsersClass</implementationClass> |
<description> |
Checks if the requester is teacher in course unit of the requested bean |
filter parameter: bean serializable id |
filter parameter: bean class |
</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>OwnerUsersClassBean</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.OwnerUsersClassBean</implementationClass> |
<description> |
Checks if the requester is owner of the requested bean inside the loaded bean |
Checks if the requester is in course unit of the requested bean inside the loaded bean |
filter parameter: bean serializable id |
filter parameter: bean class |
filter parameter: bean path to owned object from loaded bean |
63,6 → 93,39 |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>IsInCourseUnitUsersClassBean</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.IsInCourseUnitUsersClassBean</implementationClass> |
<description> |
Checks if the requester is in of the requested bean inside the loaded bean |
filter parameter: bean serializable id |
filter parameter: bean class |
filter parameter: bean path to owned object from loaded bean |
</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>IsStudentInCourseUnitUsersClassBean</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.IsStudentInCourseUnitUsersClassBean</implementationClass> |
<description> |
Checks if the requester is student of the requested bean inside the loaded bean |
filter parameter: bean serializable id |
filter parameter: bean class |
filter parameter: bean path to owned object from loaded bean |
</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>IsTeacherInCourseUnitUsersClassBean</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.IsTeacherInCourseUnitUsersClassBean</implementationClass> |
<description> |
Checks if the requester is teacher of the requested bean inside the loaded bean |
filter parameter: bean serializable id |
filter parameter: bean class |
filter parameter: bean path to owned object from loaded bean |
</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>CanAddContentClass</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.CanAddContentClass</implementationClass> |
<description>Checks if the requester can add content to specified object</description> |
104,4 → 167,10 |
<description>Check if a resource can be loaded</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>ResourceAccessControlCourseUnit</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.ResourceAccessControlCourseUnitFilter</implementationClass> |
<description>Check if a resource can be loaded</description> |
<isTransactional>false</isTransactional> |
</filter> |
</filterDefinitions> |
/impl/conf/berserk/fcd.xml |
---|
232,5 → 232,55 |
</filterChain> |
<!--CourseUnits--> |
<filterChain> |
<name>OwnerCourseUnit</name> |
<expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.CourseUnitImpl")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>OwnerCourseUnitFromWorkAssignement</name> |
<expression>OwnerUsersClassBean("serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>OwnerCourseUnitFromWorkAssignementObject</name> |
<expression>OwnerUsersClassBean("object.serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>IsInCourseUnitFromWorkAssignement</name> |
<expression>IsInCourseUnitUsersClassBean("serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>IsStudentInCourseUnitFromWorkAssignement</name> |
<expression>IsStudentInCourseUnitUsersClassBean("serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>IsInCourseUnit</name> |
<expression>IsInCourseUnit("object.courseUnitView.id")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<!--<filterChain>--> |
<!--<name>InternalCourseUnitBlog</name>--> |
<!--<expression>!(BooleanCheck("serializable","pt.estgp.estgweb.domain.CourseUnitImpl","unitBlog.courseUnitInternal")) || ResourceAccessControlCourseUnit</expression>--> |
<!--<description>Check if the the boolean is true</description>--> |
<!--<invocationTiming>1</invocationTiming>--> |
<!--<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>--> |
<!--</filterChain>--> |
</filterChainsDefinitions> |
/impl/src/java/jomm/utils/DiacriticFilter.java |
---|
New file |
0,0 → 1,123 |
package jomm.utils; |
import org.apache.lucene.analysis.TokenFilter; |
import org.apache.lucene.analysis.TokenStream; |
import org.apache.lucene.analysis.Token; |
import java.io.*; |
/** |
* Normalizes token text to lower case. |
* |
* @version $Id: DiacriticFilter.java,v 1.2 2007/12/27 01:45:58 jmachado Exp $ |
*/ |
public final class DiacriticFilter extends TokenFilter |
{ |
public DiacriticFilter(TokenStream in) |
{ |
super(in); |
} |
public final Token next() throws IOException |
{ |
Token t = input.next(); |
if (t == null) |
return null; |
String value = t.termText(); |
return new Token(clean(value),t.startOffset(),t.endOffset()); |
} |
public static String clean(String value) |
{ |
StringBuilder finalTerm = new StringBuilder(); |
for (int j=0 ; j < value.length() ; j++) |
{ |
char c = value.charAt(j); |
switch(c) |
{ |
case 131: c = 'f'; break; |
case 138: c = 'S'; break; |
case 140: c = 'E'; break; |
case 154: c = 'S'; break; |
case 156: c = 'e'; break; |
case 159: c = 'Y'; break; |
case 167: c = 'S'; break; |
case 169: c = 'c'; break; |
case 192: c = 'A'; break; |
case 193: c = 'A'; break; |
case 194: c = 'A'; break; |
case 195: c = 'A'; break; |
case 196: c = 'A'; break; |
case 197: c = 'A'; break; |
case 198: c = 'A'; break; |
case 199: c = 'C'; break; |
case 200: c = 'E'; break; |
case 201: c = 'E'; break; |
case 202: c = 'E'; break; |
case 203: c = 'E'; break; |
case 204: c = 'I'; break; |
case 205: c = 'I'; break; |
case 206: c = 'I'; break; |
case 207: c = 'I'; break; |
case 208: c = 'D'; break; |
case 209: c = 'N'; break; |
case 210: c = 'O'; break; |
case 211: c = 'O'; break; |
case 212: c = 'O'; break; |
case 213: c = 'O'; break; |
case 214: c = 'O'; break; |
case 215: c = 'X'; break; |
case 216: c = 'O'; break; |
case 217: c = 'U'; break; |
case 218: c = 'U'; break; |
case 219: c = 'U'; break; |
case 220: c = 'U'; break; |
case 221: c = 'Y'; break; |
case 222: c = 'P'; break; |
case 223: c = 'B'; break; |
case 224: c = 'a'; break; |
case 225: c = 'a'; break; |
case 226: c = 'a'; break; |
case 227: c = 'a'; break; |
case 228: c = 'a'; break; |
case 229: c = 'a'; break; |
case 230: c = 'a'; break; |
case 231: c = 'c'; break; |
case 232: c = 'e'; break; |
case 233: c = 'e'; break; |
case 234: c = 'e'; break; |
case 235: c = 'e'; break; |
case 236: c = 'i'; break; |
case 237: c = 'i'; break; |
case 238: c = 'i'; break; |
case 239: c = 'i'; break; |
case 240: c = 'o'; break; |
case 241: c = 'n'; break; |
case 242: c = 'o'; break; |
case 243: c = 'o'; break; |
case 244: c = 'o'; break; |
case 245: c = 'o'; break; |
case 246: c = 'o'; break; |
case 247: break; |
case 248: c = 'o'; break; |
case 249: c = 'u'; break; |
case 250: c = 'u'; break; |
case 251: c = 'u'; break; |
case 252: c = 'u'; break; |
case 253: c = 'y'; break; |
case 254: c = 'p'; break; |
} |
finalTerm.append(c); |
} |
return finalTerm.toString(); |
} |
public static void main(String args[]) |
{ |
for(int i = 0; i < 255;i++) |
System.out.println(i + ":" + (char)i); |
} |
} |
/impl/src/java/jomm/utils/StringsUtils.java |
---|
1,5 → 1,7 |
package jomm.utils; |
import java.util.StringTokenizer; |
/** |
* @author Jorge Machado |
* @date 21/Mai/2008 |
65,10 → 67,10 |
char c = candidate.charAt(i); |
if ( |
(c >= '0' && c <= '9') || |
(c >= 'a' && c <= 'z') || |
(c >= 'A' && c <= 'Z') || |
(c == '-') || |
(c == '_')) |
(c >= 'a' && c <= 'z') || |
(c >= 'A' && c <= 'Z') || |
(c == '-') || |
(c == '_')) |
{ |
} |
77,4 → 79,38 |
} |
return true; |
} |
public static String normalizeResourceName(String name) |
{ |
StringTokenizer tokenizer = new StringTokenizer(name); |
StringBuilder finalName = new StringBuilder(); |
while(tokenizer.hasMoreTokens()) |
{ |
String token = tokenizer.nextToken(); |
if(!token.equals("-")) |
{ |
String lowerToken = token.toLowerCase(); |
String cleanToken = clearDiacritics(lowerToken); |
StringBuilder finalToken = new StringBuilder(); |
for(int i = 0; i< cleanToken.length();i++) |
{ |
if(i == 0) |
{ |
finalToken.append(("" + cleanToken.charAt(0)).toUpperCase()); |
} |
else |
finalToken.append(cleanToken.charAt(i)); |
} |
finalName.append(finalToken); |
if(tokenizer.hasMoreTokens()) |
finalName.append('.'); |
} |
} |
return finalName.toString(); |
} |
public static String clearDiacritics(String lowerToken) |
{ |
return DiacriticFilter.clean(lowerToken); |
} |
} |
/impl/src/java/jomm/utils/MyCalendar.java |
---|
13,6 → 13,7 |
public class MyCalendar extends java.util.GregorianCalendar implements java.io.Serializable |
{ |
SimpleDateFormat webTextDate = new SimpleDateFormat("yyyy/MM/dd"); |
public static final String simpleDateTimeFormat = "dd-MM-yyyy HH-mm-ss"; |
public static final String TimestampFormat = "yyyyMMddHHmmss"; |
public static final String GmtTimezone = "GMT"; |
311,6 → 312,10 |
formatter.setTimeZone(TimeZone.getTimeZone(MyCalendar.GmtTimezone)); |
return formatter.format(getTime()); |
} |
public String getWebDateString() |
{ |
return webTextDate.format(getTime()); |
} |
public String getGMTDateTimeString(Locale locale) |
{ |
434,4 → 439,6 |
return (int)Math.round(millisDifference / millisInOneHour); |
} |
} |
/impl/src/java/jomm/utils/FilesUtils.java |
---|
New file |
0,0 → 1,88 |
package jomm.utils; |
import java.io.*; |
import java.util.zip.ZipFile; |
import java.util.zip.ZipException; |
import java.util.zip.ZipEntry; |
import java.util.zip.ZipOutputStream; |
import java.util.Date; |
import java.util.Enumeration; |
/** |
* @author Jorge Machado |
* @date 20/Jun/2008 |
* @see jomm.utils |
*/ |
public class FilesUtils |
{ |
public static String getExtension(String filename) |
{ |
String extension = ""; |
if(filename == null) |
return extension; |
if(filename.indexOf(".")>=0) |
extension = filename.substring(filename.lastIndexOf(".") + 1); |
return extension; |
} |
public static void copy(InputStream src, String outputPath) throws IOException |
{ |
FileOutputStream out = new FileOutputStream(new File(outputPath)); |
StreamsUtils.inputStream2OutputStream(src,out); |
} |
public static void zipFolder(String folder, String outFilename) throws IOException |
{ |
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename)); |
zipFolder(folder,"",out); |
out.close(); |
} |
private static void zipFolder(String folder, String relativePath, ZipOutputStream out) throws IOException |
{ |
File zipFolder = new File(folder); |
// Compress the files |
File[] files = zipFolder.listFiles(); |
for(File file : files) |
{ |
if (file.isDirectory()) |
{ |
zipFolder(folder + "/" + file.getName(), relativePath + "/" + file.getName(),out); |
} |
else |
{ |
FileInputStream in = new FileInputStream(file); |
// Add ZIP entry to output stream. |
out.putNextEntry(new ZipEntry(relativePath + "/" + file.getName())); |
// Transfer bytes from the file to the ZIP file |
int len; |
byte[] buf = new byte[1024]; |
while ((len = in.read(buf)) > 0) |
{ |
out.write(buf, 0, len); |
} |
// Complete the entry |
out.closeEntry(); |
in.close(); |
} |
} |
} |
public static void delete(String deleteFile) |
{ |
delete(new File(deleteFile)); |
} |
public static void delete(File toDelete) |
{ |
if(toDelete.isFile()) |
toDelete.delete(); |
else |
{ |
for(File f : toDelete.listFiles()) |
{ |
delete(f); |
} |
toDelete.delete(); |
} |
} |
} |
/impl/src/java/jomm/dao/impl/AbstractDao.java |
---|
26,7 → 26,7 |
public abstract class AbstractDao<CLAZZ> implements IDomainObjectDao<CLAZZ> |
{ |
/** |
* Return the number of results that match the given criteria. |
* |
55,9 → 55,9 |
public CLAZZ getLast(String maxField) |
{ |
List<CLAZZ> objs = createCriteria() |
.addOrder( Order.desc(maxField) ) |
.setMaxResults(1) |
.list(); |
.addOrder( Order.desc(maxField) ) |
.setMaxResults(1) |
.list(); |
if(objs != null && objs.size() > 0) |
return objs.get(0); |
else |
107,18 → 107,18 |
} |
public static void commit() { |
try |
{ |
getCurrentSession().connection().commit(); |
} |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
catch (SQLException e) |
{ |
throw new DaoException(e); |
} |
try |
{ |
getCurrentSession().connection().commit(); |
} |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
catch (SQLException e) |
{ |
throw new DaoException(e); |
} |
} |
184,7 → 184,7 |
/** |
* Create an SQLQuery based on the given query string. |
* |
* |
* @param queryString an SQL query |
* @return an SQLQuery |
*/ |
225,12 → 225,12 |
throw new DaoException(e); |
} |
} |
/** |
* Returns results as a page. |
* |
* |
* Finds "sizeOfPage" objects, starting from the page "pageIndex". |
* |
* |
* @param pageIndex page number |
* @param sizeOfPage results in page |
* @return persistent objects |
243,10 → 243,10 |
try |
{ |
Criteria criteria = createCriteria(); |
criteria.setFirstResult(pageIndex * sizeOfPage); |
criteria.setMaxResults(sizeOfPage); |
return criteria.list(); |
} |
catch (HibernateException e) |
278,10 → 278,106 |
* |
* @SuppressWarnings("unchecked") |
*/ |
public static Object load( Class cl, Serializable dbKey) { |
try |
{ |
Object c = getCurrentSession().load(cl, dbKey); |
if(c!=null && !((DomainObject)c).getReferenceClass().getName().equals(cl.getName())) |
{ |
Class cC = ((DomainObject)c).getReferenceClass(); |
return getCurrentSession().load(cC,dbKey); |
} |
return c; |
} |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
} |
/** |
* Used by the base DAO classes but here for your modification Load object |
* matching the given key and return it. |
* |
* @SuppressWarnings("unchecked") |
*/ |
public static Object get( Class cl, Serializable dbKey) { |
try |
{ |
Object c = getCurrentSession().get(cl, dbKey); |
if(c!=null && !((DomainObject)c).getReferenceClass().getName().equals(cl.getName())) |
{ |
Class cC = ((DomainObject)c).getReferenceClass(); |
return getCurrentSession().get(cC,dbKey); |
} |
return c; |
} |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
} |
/** |
* Used by the base DAO classes but here for your modification Load object |
* matching the given key and return it. |
* |
* @SuppressWarnings("unchecked") |
*/ |
public static Object load( String cl, Serializable dbKey) { |
try |
{ |
Object c = getCurrentSession().load(cl, dbKey); |
if(c!=null && !((DomainObject)c).getReferenceClass().getName().equals(cl)) |
{ |
Class cC = ((DomainObject)c).getReferenceClass(); |
return getCurrentSession().load(cC,dbKey); |
} |
return c; |
} |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
} |
/** |
* Used by the base DAO classes but here for your modification Load object |
* matching the given key and return it. |
* |
* @SuppressWarnings("unchecked") |
*/ |
public static Object get( String cl, Serializable dbKey) { |
try |
{ |
Object c = getCurrentSession().get(cl, dbKey); |
if(c!=null && !((DomainObject)c).getReferenceClass().getName().equals(cl)) |
{ |
Class cC = ((DomainObject)c).getReferenceClass(); |
return getCurrentSession().get(cC,dbKey); |
} |
return c; |
} |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
} |
/** |
* Used by the base DAO classes but here for your modification Load object |
* matching the given key and return it. |
* |
* @SuppressWarnings("unchecked") |
*/ |
public final CLAZZ load(Serializable dbKey) { |
try |
{ |
return (CLAZZ) getCurrentSession().load(getReferenceClass(), dbKey); |
CLAZZ c = (CLAZZ) getCurrentSession().load(getReferenceClass(), dbKey); |
if(c != null && !((DomainObject)c).getReferenceClass().getName().equals(getReferenceClass().getName())) |
{ |
Class cC = ((DomainObject)c).getReferenceClass(); |
return (CLAZZ) getCurrentSession().load(cC,dbKey); |
} |
return c; |
} |
catch (HibernateException e) |
{ |
337,14 → 433,14 |
{ |
return loadOrNullLockWrite("id",dbKey); |
} |
/** |
/** |
* Used by the base DAO classes but here for your modification Load object |
* matching the given key and return it. |
* |
* @SuppressWarnings("unchecked") |
*/ |
public CLAZZ loadOrNullLockWrite(String field, Serializable dbKey) |
{ |
{ |
try |
{ |
return (CLAZZ) createCriteria().add(eq(field,dbKey)).uniqueResult(); |
384,7 → 480,13 |
*/ |
public final CLAZZ get(Serializable dbKey) { |
try { |
return (CLAZZ) getCurrentSession().get(getReferenceClass(), dbKey); |
CLAZZ c = (CLAZZ) getCurrentSession().get(getReferenceClass(), dbKey); |
if(c!=null && !((DomainObject)c).getReferenceClass().getName().equals(getReferenceClass().getName())) |
{ |
Class cC = ((DomainObject)c).getReferenceClass(); |
return (CLAZZ) getCurrentSession().get(cC,dbKey); |
} |
return c; |
} |
catch (HibernateException e) { |
throw new DaoException(e); |
399,7 → 501,7 |
* using the current value of the identifier property if the assigned |
* generator is used.) |
*/ |
public Serializable save(CLAZZ obj) |
public Serializable save(CLAZZ obj) |
{ |
try { |
DomainObject o = (DomainObject) obj; |
431,9 → 533,9 |
/** |
* Saves a collection of objects without returning the DbKey. |
* |
* |
* To obtain the DbKey, use the object itself. |
* |
* |
* @param objs List of objects to save |
*/ |
public final void save(Collection<CLAZZ> objs) |
612,7 → 714,7 |
/** |
* Deletes a collection of objects. |
* |
* |
* @param objs Objects to delete |
*/ |
public final void delete(Collection<CLAZZ> objs) |
704,7 → 806,7 |
if (pageSize >= 0 && pageSize < count) { |
return criteria.setFirstResult(pageSize * pageNumber) |
.setMaxResults(pageSize); |
.setMaxResults(pageSize); |
} |
return criteria; |
/impl/src/java/pt/estgp/estgweb/utils/DatesUtils.java |
---|
22,6 → 22,10 |
static SimpleDateFormat SIGES_importSecondYearFormat = new SimpleDateFormat(Globals.SIGES_importSecondYearFormat); |
static MessageFormat SIGES_importFinalFormat = new MessageFormat(Globals.SIGES_importFinalFormat); |
static SimpleDateFormat SIGES_importFirstYearFormatIntranet = new SimpleDateFormat(Globals.SIGES_importFirstYearFormatIntranet); |
static SimpleDateFormat SIGES_importSecondYearFormatIntranet = new SimpleDateFormat(Globals.SIGES_importSecondYearFormatIntranet); |
static MessageFormat SIGES_importFinalFormatIntranet = new MessageFormat(Globals.SIGES_importFinalFormatIntranet); |
public static String getImportYear() |
{ |
MyCalendar mc = new MyCalendar(); |
42,13 → 46,36 |
String firstYearStr = SIGES_importFirstYearFormat.format(firstYear.getTime()); |
String secondYearStr = SIGES_importSecondYearFormat.format(secondYear.getTime()); |
return getFormatedImportYear(firstYearStr,secondYearStr); |
return getFormatedImportYear(firstYearStr,secondYearStr,SIGES_importFinalFormat); |
} |
public static String getFormatedImportYear(String firstYearStr, String secondYearStr) |
public static String getImportYearIntranet() |
{ |
MyCalendar mc = new MyCalendar(); |
int month = mc.getMonth(); |
MyCalendar firstYear; |
MyCalendar secondYear; |
if(month <= 8) |
{ |
firstYear = new MyCalendar(mc.getYear() - 1,1,1); |
secondYear = new MyCalendar(mc.getYear(),1,1); |
} |
else |
{ |
firstYear = new MyCalendar(mc.getYear(),1,1); |
secondYear = new MyCalendar(mc.getYear()+1,1,1); |
} |
String firstYearStr = SIGES_importFirstYearFormatIntranet.format(firstYear.getTime()); |
String secondYearStr = SIGES_importSecondYearFormatIntranet.format(secondYear.getTime()); |
return getFormatedImportYear(firstYearStr,secondYearStr,SIGES_importFinalFormatIntranet); |
} |
public static String getFormatedImportYear(String firstYearStr, String secondYearStr, MessageFormat finalFormat) |
{ |
String[] years = {firstYearStr,secondYearStr}; |
return MessageFormat.format(Globals.SIGES_importFinalFormat,years); |
return finalFormat.format(years); |
} |
public static List<String> getImportYears(int size) |
72,7 → 99,7 |
String secondYearStr = SIGES_importSecondYearFormat.format(secondYear.getTime()); |
List<String> importYears = new ArrayList<String>(); |
importYears.add(getFormatedImportYear(firstYearStr,secondYearStr)); |
importYears.add(getFormatedImportYear(firstYearStr,secondYearStr,SIGES_importFinalFormat)); |
for(int i = 0; i < size;i++) |
{ |
80,7 → 107,7 |
secondYear = new MyCalendar(secondYear.getYear() - 1,1,1); |
firstYearStr = SIGES_importFirstYearFormat.format(firstYear.getTime()); |
secondYearStr = SIGES_importSecondYearFormat.format(secondYear.getTime()); |
importYears.add(getFormatedImportYear(firstYearStr,secondYearStr)); |
importYears.add(getFormatedImportYear(firstYearStr,secondYearStr,SIGES_importFinalFormat)); |
} |
return importYears; |
} |
/impl/src/java/pt/estgp/estgweb/utils/RoleManager.java |
---|
53,17 → 53,17 |
} |
public static boolean hasRole(List<String> roles, String requiredRole) |
{ |
if(roles == null || roles.size() == 0) |
return false; |
for(String role: roles) |
{ |
if(roles == null || roles.size() == 0) |
return false; |
for(String role: roles) |
{ |
if(role.equals(requiredRole)) |
return true; |
} |
return false; |
if(role.equals(requiredRole)) |
return true; |
} |
return false; |
} |
public static List readRoles() |
97,7 → 97,7 |
public static List<String> getRolesFromSerial(String rolesStr) |
{ |
if(rolesStr == null) |
if(rolesStr == null) |
return null; |
String[] roles = rolesStr.split(ROLE_SEPARATOR); |
List<String> l = new ArrayList<String>(); |
108,6 → 108,35 |
return l; |
} |
public static String addRole(String old, String newRole) |
{ |
if(old == null || old.length() == 0) |
return newRole; |
else |
{ |
List<String> oldRoles = getRolesFromSerial(old); |
if(!oldRoles.contains(newRole)) |
oldRoles.add(newRole); |
else |
return old; |
return getSerialRoles(oldRoles); |
} |
} |
public static String removeRole(String old, String toRemoveRole) |
{ |
if(old == null || old.length() == 0) |
return ""; |
else |
{ |
List<String> oldRoles = getRolesFromSerial(old); |
while(oldRoles.contains(toRemoveRole)) |
oldRoles.remove(toRemoveRole); |
return getSerialRoles(oldRoles); |
} |
} |
public static String catRole(String old, String newRole) |
{ |
if(old == null || old.length() == 0) |
115,4 → 144,5 |
else |
return old + ROLE_SEPARATOR + newRole; |
} |
} |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
5,6 → 5,7 |
import pt.estgp.estgweb.domain.User; |
import java.util.List; |
import java.util.ArrayList; |
import java.math.BigDecimal; |
/** |
33,15 → 34,25 |
public static final String ANNOUNCEMENT_TYPE_NEWS = "news"; |
public static final String ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS = "top.flash.news"; |
public static final String ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS = "bottom.flash.news"; |
public static final String ANNOUNCEMENT_TYPE_TODO = "todo"; |
public static final String ANNOUNCEMENT_TYPE_COURSE_UNIT = "courseUnitAnnouncement"; |
public static final int NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX = 5; |
public static final int NUMBER_ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_INDEX = 1; |
public static final int NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX = 2; |
public static final int ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_TIMEOUT = ConfigProperties.getIntProperty("announcements.top.flash.news.timeout.miliseconds"); |
public static final List<String> ANNOUNCEMENT_NOT_STANDARD = ConfigProperties.getListValues("announcements.not.standard"); |
public static final int HOME_MAX_COURSE_UNIT_ANNOUNCEMENTS = 3; |
public static List<String> USER_ROLES = ConfigProperties.getListValues("user.role"); |
public static final String STUDENT_ROLE = ConfigProperties.getProperty("user.student"); |
public static final String TEACHER_ROLE = ConfigProperties.getProperty("user.teacher"); |
public static final String COURSE_COORDINATOR_ROLE = ConfigProperties.getProperty("user.courseCoordinator"); |
public static final String COURSE_DIRECTOR_ROLE = ConfigProperties.getProperty("user.courseDirector"); |
public static final String BLOG_TYPE_COURSE_UNIT = ConfigProperties.getProperty("blog.type.courseunit"); |
/*SIGES WEB SERVICES*/ |
public static final BigDecimal SIGES_INSTITUTION_CODE = new BigDecimal(ConfigProperties.getIntProperty("siges.institution.code")); |
public static final String SIGES_WEBSERVICE_WSDL = ConfigProperties.getProperty("ws.siges.wsdl"); |
88,5 → 99,20 |
public static final String SIGES_importSecondYearFormat = ConfigProperties.getProperty("importSecondYearFormat"); |
public static final String SIGES_importFinalFormat = ConfigProperties.getProperty("importFinalFormat"); |
public static final String SIGES_importFirstYearFormatIntranet = ConfigProperties.getProperty("importFirstYearFormatIntranet"); |
public static final String SIGES_importSecondYearFormatIntranet = ConfigProperties.getProperty("importSecondYearFormatIntranet"); |
public static final String SIGES_importFinalFormatIntranet = ConfigProperties.getProperty("importFinalFormatIntranet"); |
public static final String INTRANET_SEMESTRE_S1 = ConfigProperties.getProperty("intranet.semestre.S1"); |
public static final String INTRANET_SEMESTRE_S2 = ConfigProperties.getProperty("intranet.semestre.S2"); |
public static final String INTRANET_SETUP_FILE = ConfigProperties.getProperty("intranet.setup.file"); |
public static final String INTRANET_USERS_SETUP_FILE_NAME = ConfigProperties.getProperty("intranet.setup.users.filename"); |
public static final String INTRANET_SETUP_FILE_NAME = ConfigProperties.getProperty("intranet.setup.filename"); |
} |
/impl/src/java/pt/estgp/estgweb/services/courses/CoursesCommonServices.java |
---|
New file |
0,0 → 1,124 |
package pt.estgp.estgweb.services.courses; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.common.*; |
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults; |
import pt.estgp.estgweb.services.common.impl.DefaultResult; |
import pt.estgp.estgweb.services.common.impl.DefaultToDo; |
import pt.estgp.estgweb.services.courseunits.CourseUnitsCommonServices; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import org.apache.log4j.Logger; |
import java.util.*; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
/** |
* @author Jorge Machado |
* <p/> |
* <p/> |
* Created at 17/Out/2003 , 23:45:24 |
*/ |
public class CoursesCommonServices implements IService, IModuleCommonServices |
{ |
private static final Logger logger = Logger.getLogger(CoursesCommonServices.class); |
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession) |
{ |
return 0; |
} |
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) |
{ |
return search(null, search, searchType, page, maxResults, userSession); |
} |
public ISearchResults search(String from, String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) |
{ |
DefaultSearchResults searchResults = new DefaultSearchResults(); |
searchResults.setModule(ModuleEnum.Courses); |
searchResults.setTotalResults(DaoFactory.getCourseDaoImpl().countCoursesActualYear(search, searchType)); |
if (searchResults.getTotalResults() > 0) |
{ |
List<Course> courses = DaoFactory.getCourseDaoImpl().searchActualYear(search, searchType, maxResults, page); |
if (courses == null) |
return searchResults; |
for (Course course : courses) |
{ |
DefaultResult defaultResult = new DefaultResult(); |
defaultResult.setTitle(course.getName()); |
defaultResult.setText(course.getDescription()); |
if (from == null) |
defaultResult.setUrl("/startLoadCourse.do?id=" + course.getId()); |
else |
defaultResult.setUrl("/user/startLoadCourseFrom" + from + ".do?id=" + course.getId()); |
searchResults.addResult(defaultResult); |
} |
} |
return searchResults; |
} |
public int countToDo(UserSession userSession) |
{ |
return 0; |
} |
public IToDoCat getToDo(UserSession userSession) |
{ |
return null; |
} |
public List<IToDo> getAllToDos(UserSession userSession) |
{ |
List<IToDo> todos = new ArrayList<IToDo>(); |
if(userSession.getUser() != null |
&& userSession.getUser() instanceof Teacher) |
{ |
Teacher teacher = (Teacher) userSession.getUser(); |
if(teacher.getCoordinatorCourses() != null && teacher.getCoordinatorCourses().size() > 0 || teacher.getDirectorCourses() != null && teacher.getDirectorCourses().size() > 0) |
{ |
Set<Course> coordinatorCourses = teacher.getCoordinatorCourses(); |
Set<Course> directorCourses = teacher.getDirectorCourses(); |
if(coordinatorCourses == null) |
coordinatorCourses = new HashSet<Course>(); |
if(directorCourses == null) |
directorCourses = new HashSet<Course>(); |
coordinatorCourses.removeAll(directorCourses); |
directorCourses.addAll(coordinatorCourses); |
for(Course course: directorCourses) |
{ |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadMissingObjectivesOrProgramGivenCourse(course.getId()); |
for(CourseUnit c: courseUnits) |
{ |
DefaultToDo defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "course.courseunit.program.objectives.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
todos.add(defaultToDo); |
} |
} |
} |
} |
return todos; |
}/*This method is invoked from object creation*/ |
public void adviseNew(DomainObject object) |
{ |
//To change body of implemented methods use File | Settings | File Templates. |
} |
public void adviseUpdate(DomainObject object) |
{ |
//To change body of implemented methods use File | Settings | File Templates. |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java |
---|
New file |
0,0 → 1,123 |
package pt.estgp.estgweb.services.courses; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.services.courseunits.LoadCourseUnitAnnouncements; |
import pt.estgp.estgweb.services.courseunits.LoadCourseUnitService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import org.apache.log4j.Logger; |
import java.util.List; |
import java.util.ArrayList; |
import java.io.InputStream; |
import jomm.utils.FilesUtils; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
/** |
* @author Jorge Machado |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
public class CoursesService implements IService |
{ |
private static final Logger logger = Logger.getLogger(CoursesService.class); |
RepositoryService repositoryService = new RepositoryService(); |
public CourseView loadCourse(long id, boolean initUnits) throws ServiceException |
{ |
Course c = DaoFactory.getCourseDaoImpl().get(id); |
if(c != null) |
{ |
CourseView cV = new CourseView(c,initUnits); |
if(c.getStudiesPlan() != null) |
{ |
RepositoryFileImpl repositoryFile = repositoryService.loadView(c.getStudiesPlan()); |
cV.setStudiesPlan(repositoryFile); |
} |
return cV; |
} |
return null; |
} |
public CourseView loadCourseByCode(String code, boolean initUnits) throws ServiceException |
{ |
Course c = DaoFactory.getCourseDaoImpl().findCourseByCode(code); |
if(c != null) |
{ |
CourseView cV = new CourseView(c,initUnits); |
if(c.getStudiesPlan() != null) |
{ |
RepositoryFileImpl repositoryFile = repositoryService.loadView(c.getStudiesPlan()); |
cV.setStudiesPlan(repositoryFile); |
} |
return cV; |
} |
return null; |
} |
public CourseView submitCourse(CourseView courseView, |
InputStream stream, |
String name, |
int size, |
String contentType, |
UserSession userSession) throws ServiceException |
{ |
Course c; |
if(courseView.getId() > 0) |
c = DaoFactory.getCourseDaoImpl().get(courseView.getId()); |
else |
{ |
c = DomainObjectFactory.createCourseImpl(); |
DaoFactory.getCourseDaoImpl().save(c); |
} |
if(stream != null && size > 0) |
{ |
String extension = FilesUtils.getExtension(name); |
if(c.getStudiesPlan() == null) |
{ |
String identifier = repositoryService.storeRepositoryFile(stream, contentType, extension, size, name, "course.studies.plan" + c.getName(), ResourceAccessControlEnum.publicDomain,userSession); |
c.setStudiesPlan(identifier); |
} |
else |
{ |
repositoryService.updateRepositoryFile(c.getStudiesPlan(), stream, contentType, extension, size, name, "course.studies.plan " + c.getName(), ResourceAccessControlEnum.publicDomain); |
} |
} |
courseView.persistViewInObject(c); |
return loadCourse(c.getId(),false); |
} |
public List<CourseView> loadCourses() throws ServiceException |
{ |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllOrderByName(); |
List<CourseView> courseViews = new ArrayList<CourseView>(); |
for(Course c: courses) |
{ |
CourseView courseView = new CourseView(c); |
courseViews.add(courseView); |
} |
return courseViews; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitWorksService.java |
---|
File deleted |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitWorkService.java |
---|
File deleted |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadTeachedUnitsAnnouncementsService.java |
---|
5,6 → 5,7 |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.courseunits.impl.DefaultCourseUnitAnnouncements; |
import pt.estgp.estgweb.Globals; |
import java.util.List; |
import java.util.ArrayList; |
36,6 → 37,8 |
List<AnnouncementView> announcementViews = new ArrayList<AnnouncementView>(); |
for(Announcement a :c.getAnnouncements()) |
{ |
if(announcementViews.size() > Globals.HOME_MAX_COURSE_UNIT_ANNOUNCEMENTS) |
break; |
AnnouncementView aV = new AnnouncementView(a); |
announcementViews.add(aV); |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CourseUnitsCommonServices.java |
---|
11,6 → 11,7 |
import java.util.List; |
import java.util.ArrayList; |
import java.util.HashMap; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
68,9 → 69,9 |
return searchResults; |
} |
public int countToDo(UserSession userSession) |
{ |
return 0; |
87,6 → 88,7 |
if(userSession.getUser() != null && userSession.getUser() instanceof Teacher) |
{ |
HashMap<Long,Long> doneProgramCodes = new HashMap<Long,Long>(); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadMissingObjectives(userSession.getUser().getId()); |
for(CourseUnit c: courseUnits) |
{ |
94,18 → 96,43 |
todos.add(defaultToDo); |
if(c.getProgramStreamId() == null || c.getProgramStreamId().length() == 0) |
{ |
doneProgramCodes.put(c.getId(),c.getId()); |
defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.program.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
todos.add(defaultToDo); |
} |
} |
courseUnits = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(userSession.getUser().getId()); |
for(CourseUnit c: courseUnits) |
{ |
if(doneProgramCodes.get(c.getId()) == null) //is not in missing objectives units |
{ |
doneProgramCodes.put(c.getId(),c.getId()); |
DefaultToDo defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.program.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
todos.add(defaultToDo); |
} |
} |
List<CourseUnitQuestion> courseUnitQuestions = DaoFactory.getCourseUnitQuestionDaoImpl().loadMissingQuestions(userSession.getUser().getId()); |
for(CourseUnitQuestion c: courseUnitQuestions) |
{ |
DefaultToDo defaultToDo = new DefaultToDo(c.getQuestion(),null,c.getCourseUnit().getName(), "courseunit.question.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
todos.add(defaultToDo); |
} |
} |
if(userSession.getUser() != null && userSession.getUser() instanceof Student) |
{ |
List<CourseUnitAssignementImpl> courseUnitAssignements = DaoFactory.getCourseUnitAssignementDaoImpl().loadActiveAssignements(userSession.getUser().getId()); |
List<CourseUnitAssignementImpl> courseUnitAssignementsDelivered = DaoFactory.getCourseUnitAssignementDaoImpl().loadDeliveredAssignements(userSession.getUser().getId()); |
courseUnitAssignements.removeAll(courseUnitAssignementsDelivered); |
for(CourseUnitAssignementImpl c: courseUnitAssignements) |
{ |
DefaultToDo defaultToDo = new DefaultToDo(c.getTitle(),null,c.getCourseUnit().getName(), "courseunit.assignement.todo","/user/startLoadCourseUnitWorksFromHome.do?courseUnitView.id=" + c.getCourseUnit().getId()); |
todos.add(defaultToDo); |
} |
} |
return todos; |
}/*This method is invoked from object creation*/ |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadTeachedUnitsService.java |
---|
3,9 → 3,12 |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.CourseUnitImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import java.util.Set; |
import java.util.List; |
import java.util.ArrayList; |
/** |
* @author Jorge Machado |
14,10 → 17,10 |
*/ |
public class LoadTeachedUnitsService implements IService |
{ |
public Set<CourseUnit> run(long teacherId) |
public List<CourseUnitImpl> run(long teacherId) |
{ |
Teacher t = DaoFactory.getTeacherDaoImpl().load(teacherId); |
Set<CourseUnit> units = t.getTeachedUnits(); |
List<CourseUnitImpl> units = new ArrayList(t.getTeachedUnits()); |
for(CourseUnit c: units) |
{ |
c.getName(); |
/impl/src/java/pt/estgp/estgweb/services/courseunits/UsersUnitsService.java |
---|
29,10 → 29,18 |
{ |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId); |
TeacherImpl t = (TeacherImpl) DaoFactory.getTeacherDaoImpl().get(teacherId); |
t.getId(); |
courseUnit.getTeachers().remove(t); |
courseUnit.getTeachers().add(t); |
return loadCourseUnitService.run(courseUnitId,true,true,userSession); |
if(t != null) |
{ |
courseUnit.getTeachers().remove(t); |
courseUnit.getTeachers().add(t); |
return loadCourseUnitService.run(courseUnitId,true,true,false,userSession); |
} |
else |
{ |
CourseUnitView cV = loadCourseUnitService.run(courseUnitId,true,true,false,userSession); |
cV.setNotFound(true); |
return cV; |
} |
} |
public CourseUnitView removeTeacher(long teacherId,long courseUnitId, UserSession userSession) throws ServiceException |
40,16 → 48,25 |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId); |
TeacherImpl t = (TeacherImpl) DaoFactory.getTeacherDaoImpl().get(teacherId); |
courseUnit.getTeachers().remove(t); |
return loadCourseUnitService.run(courseUnitId,true,true,userSession); |
return loadCourseUnitService.run(courseUnitId,true,true,false,userSession); |
} |
public CourseUnitView addStudent(int code,long courseUnitId, UserSession userSession) throws ServiceException |
public CourseUnitView addStudent(int code, long courseUnitId, UserSession userSession) throws ServiceException |
{ |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId); |
StudentImpl s = (StudentImpl) DaoFactory.getStudentDaoImpl().loadBySigesCode(code); |
courseUnit.getStudents().remove(s); |
courseUnit.getStudents().add(s); |
return loadCourseUnitService.run(courseUnitId,true,true,userSession); |
if(s != null) |
{ |
courseUnit.getStudents().remove(s); |
courseUnit.getStudents().add(s); |
return loadCourseUnitService.run(courseUnitId,true,true,false,userSession); |
} |
else |
{ |
CourseUnitView cV = loadCourseUnitService.run(courseUnitId,true,true,false,userSession); |
cV.setNotFound(true); |
return cV; |
} |
} |
public CourseUnitView removeStudent(int code,long courseUnitId, UserSession userSession) throws ServiceException |
57,6 → 74,6 |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId); |
StudentImpl s = (StudentImpl) DaoFactory.getStudentDaoImpl().loadBySigesCode(code); |
courseUnit.getStudents().remove(s); |
return loadCourseUnitService.run(courseUnitId,true,true,userSession); |
return loadCourseUnitService.run(courseUnitId,true,true,false,userSession); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitAdminService.java |
---|
29,7 → 29,7 |
public class CreateCourseUnitAdminService implements IService |
{ |
LoadCourseUnitWorksService loadCourseUnitWorksService = new LoadCourseUnitWorksService(); |
CourseUnitWorkService loadCourseUnitWorksService = new CourseUnitWorkService(); |
private static final Logger logger = Logger.getLogger(CreateCourseUnitAdminService.class); |
54,6 → 54,6 |
return loadCourseUnitWorksService.run(courseUnit.getId(),userSession); |
return loadCourseUnitWorksService.loadCourseUnitWorks(courseUnit.getId(),userSession); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitDirPackageService.java |
---|
New file |
0,0 → 1,151 |
package pt.estgp.estgweb.services.courseunits; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.Globals; |
import org.apache.log4j.Logger; |
import java.util.List; |
import java.io.File; |
import java.io.FileWriter; |
import java.io.IOException; |
import java.io.InputStream; |
import jomm.utils.BytesUtils; |
import jomm.utils.StringsUtils; |
import jomm.utils.FilesUtils; |
import jomm.dao.impl.AbstractDao; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
/** |
* @author Jorge Machado |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
public class CreateCourseUnitDirPackageService implements IService |
{ |
private static final Logger logger = Logger.getLogger(CreateCourseUnitDirPackageService.class); |
public String run(UserSession userSession) throws ServiceException |
{ |
String importYear = DatesUtils.getImportYear(); |
String importYearIntranet = DatesUtils.getImportYearIntranet(); |
String tmpName = BytesUtils.generateHexKey(); |
String tmpDir = Globals.TMP_DIR + "/" + tmpName; |
new File(tmpDir).mkdirs(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(importYear); |
try |
{ |
FileWriter batRunner = new FileWriter(tmpDir + "/create.bat"); |
String back = ""; |
for(Course c: courses) |
{ |
String couseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(c.getName()) + '.' + c.getCode(); |
File courseDir = new File(couseDirPath); |
courseDir.mkdirs(); |
try |
{ |
String courseImportYearPathDos = couseDirPath + "\\" + importYearIntranet; |
String courseImportYearPath = couseDirPath + "/" + importYearIntranet; |
File courseImportYearDir = new File(courseImportYearPath); |
courseImportYearDir.mkdirs(); |
new File(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S1).mkdirs(); |
new File(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S2).mkdirs(); |
FilesUtils.copy(CreateCourseUnitDirPackageService.class.getResourceAsStream(Globals.INTRANET_SETUP_FILE),courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S1 + "/" + Globals.INTRANET_SETUP_FILE_NAME); |
FilesUtils.copy(CreateCourseUnitDirPackageService.class.getResourceAsStream(Globals.INTRANET_SETUP_FILE),courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S2 + "/" + Globals.INTRANET_SETUP_FILE_NAME); |
String callPathS1 = (courseImportYearPathDos + "\\" + Globals.INTRANET_SEMESTRE_S1 + "\\").substring(tmpDir.length() + 1); |
String callPathS2 = (courseImportYearPathDos + "\\" + Globals.INTRANET_SEMESTRE_S2 + "\\").substring(tmpDir.length() + 1); |
batRunner.write("cd " + back + callPathS1); |
back = "..\\..\\..\\"; |
batRunner.write("\n"); |
batRunner.write(Globals.INTRANET_SETUP_FILE_NAME + " " + Globals.INTRANET_USERS_SETUP_FILE_NAME); |
batRunner.write("\n"); |
batRunner.write("cd " + back + callPathS2); |
batRunner.write("\n"); |
batRunner.write(Globals.INTRANET_SETUP_FILE_NAME + " " + Globals.INTRANET_USERS_SETUP_FILE_NAME); |
batRunner.write("\n"); |
FileWriter confWriterSemestre1 = new FileWriter(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S1 + "/" + Globals.INTRANET_USERS_SETUP_FILE_NAME); |
FileWriter confWriterSemestre2 = new FileWriter(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S2 + "/" + Globals.INTRANET_USERS_SETUP_FILE_NAME); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(),importYear); |
for(CourseUnit courseUnit: courseUnits) |
{ |
FileWriter nowWriter; |
String semestre; |
if(courseUnit.getSemestre().equals("S1")) |
{ |
nowWriter = confWriterSemestre1; |
semestre = Globals.INTRANET_SEMESTRE_S1; |
} |
else |
{ |
nowWriter = confWriterSemestre2; |
semestre = Globals.INTRANET_SEMESTRE_S2; |
} |
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName()); |
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName; |
courseUnit.setNormalizedName(normalizedName); |
courseUnit.setPathIntranet(unitPath.substring(tmpDir.length())); |
nowWriter.write(normalizedName); |
if(courseUnit.getTeachers() != null) |
{ |
String users = ""; |
int counter = 0; |
for(Teacher t: courseUnit.getTeachers()) |
{ |
if(t.getUsername() != null) |
{ |
users += " " + t.getUsername(); |
counter++; |
} |
} |
nowWriter.write(" " + counter + users); |
nowWriter.write("\n"); |
} |
} |
confWriterSemestre1.close(); |
confWriterSemestre2.close(); |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
} |
} |
batRunner.write("cd " + back); |
batRunner.close(); |
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip"); |
FilesUtils.delete(tmpDir); |
return tmpName + ".zip"; |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
} |
return null; |
} |
public static void main(String[] args) throws ServiceException |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
new CreateCourseUnitDirPackageService().run(null); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitService.java |
---|
5,10 → 5,7 |
import pt.estgp.estgweb.services.blogs.LoadBlogPostsService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.views.BlogPostView; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.UserView; |
import pt.estgp.estgweb.domain.views.*; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import org.apache.log4j.Logger; |
36,17 → 33,18 |
{ |
RepositoryService repositoryService = new RepositoryService(); |
LoadCourseUnitAnnouncements loadCourseUnitAnnouncements = new LoadCourseUnitAnnouncements(); |
private static final Logger logger = Logger.getLogger(LoadCourseUnitService.class); |
public CourseUnitView run(long id, boolean initTeachers, boolean initStudents, UserSession userSession) throws ServiceException |
public CourseUnitView run(long id, boolean initTeachers, boolean initStudents, boolean initBlog, UserSession userSession) throws ServiceException |
{ |
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(id); |
if(c == null) |
return null; |
CourseUnitView cV = new CourseUnitView(c,initTeachers,initStudents); |
CourseUnitView cV = new CourseUnitView(c,initTeachers,initStudents,initBlog); |
if(c.getProgramStreamId()!= null) |
{ |
57,6 → 55,12 |
cV.setExtension(repositoryFile.getLastVersion().getExtension()); |
} |
} |
if(initTeachers) |
{ |
List<AnnouncementView> announcementViews = loadCourseUnitAnnouncements.run(id,userSession); |
cV.setAnnouncements(announcementViews); |
} |
return cV; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CourseUnitWorkService.java |
---|
New file |
0,0 → 1,213 |
package pt.estgp.estgweb.services.courseunits; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView; |
import pt.estgp.estgweb.domain.views.CourseUnitDeliverableView; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.services.blogs.CreateBlogService; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedException; |
import org.apache.log4j.Logger; |
import java.util.List; |
import java.util.ArrayList; |
import java.util.Date; |
import java.io.InputStream; |
import jomm.utils.FilesUtils; |
import jomm.utils.MessageResources; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
/** |
* @author Jorge Machado |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
public class CourseUnitWorkService implements IService |
{ |
RepositoryService repositoryService = new RepositoryService(); |
LoadCourseUnitService loadCourseUnitService = new LoadCourseUnitService(); |
private static final Logger logger = Logger.getLogger(CourseUnitWorkService.class); |
public CourseUnitView create(CourseUnitAssignementView cUV, long id, InputStream file, String name, int size, String contentType, UserSession userSession) throws ServiceException |
{ |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(id); |
CourseUnitAssignement assignement; |
if(cUV.getId() > 0) |
assignement = DaoFactory.getCourseUnitAssignementDaoImpl().get(cUV.getId()); |
else |
{ |
assignement = DomainObjectFactory.createCourseUnitAssignementImpl(); |
assignement.setCourseUnit(courseUnit); |
} |
cUV.persistViewInObject(assignement); |
if(name != null && name.length() > 0 && size > 0 && file != null) |
{ |
String extension = FilesUtils.getExtension(name); |
if(assignement.getRepositoryStream() == null || assignement.getRepositoryStream().trim().length() == 0) |
{ |
String identifier = repositoryService.storeRepositoryFile(file, contentType, extension, size, name, "courseunit.assignement.file " + courseUnit.getName() + " of " + userSession.getUser().getUsername(), ResourceAccessControlEnum.courseunitDomain,userSession); |
assignement.setRepositoryStream(identifier); |
} |
else |
repositoryService.updateRepositoryFile(assignement.getRepositoryStream(), file, contentType, extension, size, name, "courseunit.assignement.file " + courseUnit.getName() + " of " + userSession.getUser().getUsername(), ResourceAccessControlEnum.courseunitDomain); |
} |
DaoFactory.getCourseUnitAssignementDaoImpl().save(assignement); |
return loadCourseUnitWorks(id,userSession); |
} |
public CourseUnitView loadCourseUnitWorks(long id, UserSession userSession) throws ServiceException |
{ |
CourseUnitView cV = loadCourseUnitService.run(id,false,false,false,userSession); |
if(cV == null) |
return null; |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(id); |
if(courseUnit.getAssignements() != null) |
{ |
boolean invalids = false; |
List<CourseUnitAssignementView> views = new ArrayList<CourseUnitAssignementView>(); |
if(userSession.getUser() != null && ((CourseUnitImpl)courseUnit).isOwnedBy(userSession.getUser(),true)) |
{ |
invalids = true; |
} |
for(CourseUnitAssignement a: courseUnit.getAssignements()) |
{ |
if(invalids || a.isStatus()) |
{ |
long delivers = DaoFactory.getCourseUnitDeliverableDaoImpl().countAssignements(a.getId()); |
CourseUnitAssignementView view = new CourseUnitAssignementView(a,delivers); |
if(view.getWorkFile() != null && view.getWorkFile().length() > 0) |
{ |
RepositoryFileImpl repositoryFile = repositoryService.loadView(a.getRepositoryStream()); |
view.setRepositoryFile(repositoryFile); |
} |
views.add(view); |
} |
} |
if(userSession.getUser() != null && userSession.getUser() instanceof StudentImpl && ((StudentImpl)userSession.getUser()).hasCourseUnit(id,true)) |
{ |
for(CourseUnitAssignementView view: views) |
{ |
CourseUnitDeliverable deliverable = DaoFactory.getCourseUnitDeliverableDaoImpl().loadDeliverable(userSession.getUser().getId(),view.getId()); |
if(deliverable != null) |
{ |
view.setCourseUnitDeliverableView(new CourseUnitDeliverableView(deliverable, view)); |
} |
} |
} |
cV.setCourseUnitAssignements(views); |
} |
return cV; |
} |
public CourseUnitView delete(long courseUnitWorkId, UserSession userSession) throws ServiceException |
{ |
CourseUnitAssignement assignement = DaoFactory.getCourseUnitAssignementDaoImpl().load(courseUnitWorkId); |
long courseUnitId = assignement.getCourseUnit().getId(); |
assignement.getCourseUnit().getAssignements().remove(assignement); |
assignement.setCourseUnit(null); |
DaoFactory.getCourseUnitAssignementDaoImpl().delete(assignement); |
return loadCourseUnitWorks(courseUnitId,userSession); |
} |
public CourseUnitView validateInvalidate(long courseUnitWorkId, UserSession userSession) throws ServiceException |
{ |
CourseUnitAssignement assignement = DaoFactory.getCourseUnitAssignementDaoImpl().load(courseUnitWorkId); |
long courseUnitId = assignement.getCourseUnit().getId(); |
assignement.setStatus(!assignement.isStatus()); |
return loadCourseUnitWorks(courseUnitId,userSession); |
} |
public CourseUnitView deliverWork(long courseUnitWorkId,InputStream file, String name, String contentType, int size, UserSession userSession) throws ServiceException |
{ |
CourseUnitAssignement assignement = DaoFactory.getCourseUnitAssignementDaoImpl().load(courseUnitWorkId); |
long courseUnitId = assignement.getCourseUnit().getId(); |
CourseUnitDeliverable deliverable = DaoFactory.getCourseUnitDeliverableDaoImpl().loadDeliverable(userSession.getUser().getId(),courseUnitWorkId); |
String extension = FilesUtils.getExtension(name); |
if(deliverable == null) |
{ |
deliverable = DomainObjectFactory.createCourseUnitDeliverableImpl(); |
String identifier = repositoryService.storeRepositoryFile(file, contentType, extension, size, name, "courseunit.assignement " + assignement.getCourseUnit().getName() + " of " + userSession.getUser().getUsername(), ResourceAccessControlEnum.courseunitDeliverableDomain,userSession); |
deliverable.setDeliverableRepositoryStream(identifier); |
deliverable.setCourseUnitAssignement(assignement); |
deliverable.setStudent((Student) userSession.getUser()); |
DaoFactory.getCourseUnitDeliverableDaoImpl().save(deliverable); |
} |
else |
{ |
repositoryService.updateRepositoryFile(deliverable.getDeliverableRepositoryStream(), file, contentType, extension, size, name, "courseunit.assignement " + assignement.getCourseUnit().getName() + " of " + userSession.getUser().getUsername(), ResourceAccessControlEnum.courseunitDeliverableDomain); |
} |
deliverable.setDeliverDate(new Date()); |
return loadCourseUnitWorks(courseUnitId,userSession); |
} |
//todo alterar o dominio de filtragem |
public CourseUnitAssignementView loadAssignement(long courseUnitAssignementId, UserSession userSession) throws ServiceException |
{ |
CourseUnitAssignement assignement = DaoFactory.getCourseUnitAssignementDaoImpl().load(courseUnitAssignementId); |
List<CourseUnitDeliverableView> views = new ArrayList<CourseUnitDeliverableView>(); |
CourseUnitAssignementView courseUnitAssignementView = new CourseUnitAssignementView(assignement,assignement.getDeliverables().size()); |
for(CourseUnitDeliverable d: assignement.getDeliverables()) |
{ |
views.add(new CourseUnitDeliverableView(d,courseUnitAssignementView)); |
} |
courseUnitAssignementView.setDeliverables(views); |
courseUnitAssignementView.setCourseUnitView(new CourseUnitView(assignement.getCourseUnit())); |
if(courseUnitAssignementView.getWorkFile() != null && courseUnitAssignementView.getWorkFile().length() > 0) |
{ |
RepositoryFileImpl repositoryFile = repositoryService.loadView(assignement.getRepositoryStream()); |
courseUnitAssignementView.setRepositoryFile(repositoryFile); |
} |
return courseUnitAssignementView; |
} |
public CourseUnitAssignementView updateDeliverables(long courseUnitId, long courseUnitAssignementId, List<CourseUnitDeliverableView> deliverableViews, UserSession userSession) throws ServiceException |
{ |
CourseUnitAssignement assignement = DaoFactory.getCourseUnitAssignementDaoImpl().load(courseUnitAssignementId); |
if(assignement.getCourseUnit().getId() != courseUnitId) |
{ |
logger.warn("Trying change deliverable of a not owned course unit:" + userSession.getUser().getId() + " " + userSession.getUser().getName()); |
throw new ServiceException("Access Denied", new AccessDeniedException("Trying change deliverable of a not owned course unit")); |
} |
for(CourseUnitDeliverableView deliverable: deliverableViews) |
{ |
CourseUnitDeliverable courseUnitDeliverable = DaoFactory.getCourseUnitDeliverableDaoImpl().load(deliverable.getId()); |
if(courseUnitDeliverable.getCourseUnitAssignement().getId() != assignement.getId()) |
{ |
logger.warn("Trying change deliverable of a not owned course unit:" + userSession.getUser().getId() + " " + userSession.getUser().getName()); |
throw new ServiceException("Access Denied", new AccessDeniedException("Trying change deliverable of a not owned course unit")); |
} |
deliverable.persistViewInObject(courseUnitDeliverable); |
} |
return loadAssignement(courseUnitAssignementId,userSession); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/UpdateCourseUnitService.java |
---|
15,6 → 15,7 |
import jomm.utils.MessageResources; |
import jomm.utils.MimeTypeGuesser; |
import jomm.utils.FilesUtils; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
34,6 → 35,7 |
{ |
RepositoryService repositoryService = new RepositoryService(); |
LoadCourseUnitService loadCourseUnitService = new LoadCourseUnitService(); |
private static final Logger logger = Logger.getLogger(UpdateCourseUnitService.class); |
53,9 → 55,7 |
RepositoryFileImpl repositoryFile = null; |
if(stream != null && size > 0) |
{ |
String extension = ""; |
if(name.indexOf(".")>=0) |
extension = name.substring(name.lastIndexOf(".") + 1); |
String extension = FilesUtils.getExtension(name); |
if(c.getProgramStreamId() == null) |
{ |
String identifier = repositoryService.storeRepositoryFile(stream, contentType, extension, size, name, "courseunit.program.description" + c.getName(), ResourceAccessControlEnum.publicDomain,userSession); |
77,6 → 77,6 |
cV.setProgramSize(repositoryFile.getLastVersion().getSize()/1024); |
cV.setExtension(repositoryFile.getLastVersion().getExtension()); |
} |
return cV; |
return loadCourseUnitService.run(cV.getId(),true,false,false,userSession); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CourseUnitBlogService.java |
---|
New file |
0,0 → 1,54 |
package pt.estgp.estgweb.services.courseunits; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.blogs.CreateBlogService; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import org.apache.log4j.Logger; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
/** |
* @author Jorge Machado |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
public class CourseUnitBlogService implements IService |
{ |
CreateBlogService createBlogService = new CreateBlogService(); |
LoadCourseUnitService loadCourseUnitService = new LoadCourseUnitService(); |
private static final Logger logger = Logger.getLogger(CourseUnitBlogService.class); |
public CourseUnitView startUnitBlog(long courseUnitId, UserSession userSession) throws ServiceException |
{ |
CourseUnitImpl courseUnit = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().get(courseUnitId); |
if(courseUnit.getUnitBlog() == null) |
{ |
BlogView b = new BlogView(); |
b.setTitle(courseUnit.getName() + " Blog"); |
b.setInternal(true); |
b.setAutoValidation(true); |
b.setStatus(true); |
b.setCourseUnitInternal(true); |
b.setCourseUnitView(new CourseUnitView(courseUnit)); |
b = createBlogService.run(b,userSession); |
Blog blog = DaoFactory.getCourseUnitBlogDaoImpl().load(b.getId()); |
blog.setStatus(true); |
} |
return loadCourseUnitService.run(courseUnitId,false,false,true,userSession); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadSubscribedUnitsAnnouncementsService.java |
---|
8,6 → 8,7 |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.courseunits.impl.DefaultCourseUnitAnnouncements; |
import pt.estgp.estgweb.Globals; |
import java.util.Set; |
import java.util.List; |
32,13 → 33,15 |
return courseUnitAnnouncementsLst; |
for(CourseUnit c: units) |
{ |
if(c.getAnnouncements() != null && c.getAnnouncements().size()>0) |
if(c.getAnnouncements() != null && c.getAnnouncements().size() > 0) |
{ |
DefaultCourseUnitAnnouncements courseUnitAnnouncements = new DefaultCourseUnitAnnouncements(); |
courseUnitAnnouncements.setCourseUnit(c); |
List<AnnouncementView> announcementViews = new ArrayList<AnnouncementView>(); |
for(Announcement a :c.getAnnouncements()) |
{ |
if(announcementViews.size() > Globals.HOME_MAX_COURSE_UNIT_ANNOUNCEMENTS) |
break; |
AnnouncementView aV = new AnnouncementView(a); |
announcementViews.add(aV); |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadSubscribedUnitsService.java |
---|
6,6 → 6,8 |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.Set; |
import java.util.List; |
import java.util.ArrayList; |
/** |
* @author Jorge Machado |
14,10 → 16,10 |
*/ |
public class LoadSubscribedUnitsService implements IService |
{ |
public Set<CourseUnit> run(long studentId) |
public List<CourseUnit> run(long studentId) |
{ |
Student t = DaoFactory.getStudentDaoImpl().load(studentId); |
Set<CourseUnit> units = t.getSubscribedUnits(); |
List<CourseUnit> units = new ArrayList(t.getSubscribedUnits()); |
for(CourseUnit c: units) |
{ |
c.getName(); |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitAnnouncements.java |
---|
New file |
0,0 → 1,46 |
package pt.estgp.estgweb.services.courseunits; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.blogs.LoadBlogService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.AnnouncementImpl; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.domain.CourseUnitAnnouncementImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import org.apache.log4j.Logger; |
import java.util.List; |
import java.util.ArrayList; |
/** |
* @author Jorge Machado |
* @date 19/Mai/2008 |
* @see pt.estgp.estgweb.services.blogs |
*/ |
public class LoadCourseUnitAnnouncements implements IService |
{ |
private static final Logger logger = Logger.getLogger(LoadBlogService.class); |
public List<AnnouncementView> run(long courseUnit, UserSession userSession) throws ServiceException |
{ |
List<CourseUnitAnnouncementImpl> announcements; |
if(userSession.getUser() != null && ((UserImpl)userSession.getUser()).isInCourseUnit(courseUnit,true)) |
{ |
announcements = DaoFactory.getCourseUnitAnnouncementDaoImpl().loadCourseUnitAnnouncements(courseUnit); |
} |
else |
{ |
announcements = DaoFactory.getCourseUnitAnnouncementDaoImpl().loadExternalCourseUnitAnnouncements(courseUnit); |
} |
List<AnnouncementView> announcementViews = new ArrayList<AnnouncementView>(); |
for(AnnouncementImpl announcement: announcements) |
{ |
announcementViews.add(new AnnouncementView(announcement)); |
} |
return announcementViews; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/common/ModuleEnum.java |
---|
1,11 → 1,13 |
package pt.estgp.estgweb.services.common; |
import pt.estgp.estgweb.services.announcements.AnnouncementsCommonServices; |
import pt.estgp.estgweb.services.announcements.TodoAnnouncementsCommonServices; |
import pt.estgp.estgweb.services.email.EmailCommonServices; |
import pt.estgp.estgweb.services.reminders.RemindersCommonServices; |
import pt.estgp.estgweb.services.blogs.BlogsCommonServices; |
import pt.estgp.estgweb.services.blogs.BlogPostsCommonServices; |
import pt.estgp.estgweb.services.courseunits.CourseUnitsCommonServices; |
import pt.estgp.estgweb.services.courses.CoursesCommonServices; |
/** |
* @author Jorge Machado |
17,12 → 19,14 |
{ |
TodoAnnouncements("module.TodoAnnouncements", new TodoAnnouncementsCommonServices()), |
Announcements("module.Announcements", new AnnouncementsCommonServices()), |
Email("module.Email", new EmailCommonServices()), |
Reminders("module.Reminders", new RemindersCommonServices()), |
Blogs("module.Blogs", new BlogsCommonServices()), |
BlogPosts("module.BlogPosts", new BlogPostsCommonServices()), |
CourseUnits("module.CourseUnits", new CourseUnitsCommonServices()); |
CourseUnits("module.CourseUnits", new CourseUnitsCommonServices()), |
Courses("module.Courses", new CoursesCommonServices()); |
// Questionarios("module.Qustionarios", new QuestionariosCommonServices()); |
// Events("module.Events",null), |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java |
---|
6,12 → 6,14 |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages; |
import pt.estgp.estgweb.services.courses.CoursesService; |
import pt.ipportalegre.siges.web.services.ArrayOfDisciplina; |
import pt.ipportalegre.siges.web.services.Disciplina; |
import pt.ipportalegre.siges.web.services.SiGesWEB; |
32,6 → 34,8 |
{ |
private static final Logger logger = Logger.getLogger(ImportCourseService.class); |
private CoursesService coursesService = new CoursesService(); |
public ILogMessages run(String year) throws ServiceException |
{ |
72,17 → 76,20 |
for (Map.Entry<Integer, Disciplina> entry : set2) |
{ |
Disciplina d = entry.getValue(); |
Course c = DaoFactory.getCourseDaoImpl().findCourseByCode("" + d.getCodigoCurso()); |
if (c == null) |
{ |
c = DomainObjectFactory.createCourseImpl(); |
DaoFactory.getCourseDaoImpl().save(c); |
} |
CourseView c = coursesService.loadCourseByCode("" + d.getCodigoCurso().intValue(),false); |
// Course c = DaoFactory.getCourseDaoImpl().findCourseByCode("" + d.getCodigoCurso()); |
// if (c == null) |
// { |
// c = DomainObjectFactory.createCourseImpl(); |
// DaoFactory.getCourseDaoImpl().save(c); |
// } |
c.setName(d.getNomeCurso()); |
c.setDegree(d.getGrauCurso()); |
c.setCode("" + d.getCodigoCurso().intValue()); |
c.setImportYear(year); |
c.setInstitutionalCode("" + d.getCodigoInstituicao().intValue()); |
coursesService.submitCourse(c,null,null,0,null,null); |
} |
/** |
/impl/src/java/pt/estgp/estgweb/services/profile/EditUserService.java |
---|
46,7 → 46,7 |
logger.info("Editing user:" + userView.getId()); |
if ((userSession.getUser()).isSuperuserOrAdmin()) |
if (userSession.getUser() != null && userSession.getUser().isSuperuserOrAdmin()) |
{ |
userView.persistViewInObjectAdmin(user); |
logger.info("User Edited by:" + userSession.getUser().getName()); |
/impl/src/java/pt/estgp/estgweb/services/users/LoadUsersService.java |
---|
37,7 → 37,7 |
{ |
private static final Logger logger = Logger.getLogger(LoadUsersService.class); |
public List<UserView> run(Class c, UserSession userSession) throws ServiceException |
public List<UserView> run(Class c) throws ServiceException |
{ |
List<UserImpl> users = AbstractDao.getCurrentSession().createCriteria(c).addOrder(Order.asc("name")).list(); |
List<UserView> userViews = new ArrayList<UserView>(); |
/impl/src/java/pt/estgp/estgweb/services/blogs/BlogsCommonServices.java |
---|
14,6 → 14,8 |
import java.util.List; |
import java.util.ArrayList; |
import jomm.utils.MyCalendar; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
71,7 → 73,9 |
defaultResult.setSubTitle(null); |
defaultResult.setSubTitleKey(true); |
defaultResult.setText(blog.getDescription()); |
if(from == null) |
if(blog instanceof CourseUnitBlog) |
defaultResult.setUrl("/user/startLoadBlogFromCourseUnit.do?id=" + blog.getId()); |
else if(from == null) |
defaultResult.setUrl("/startLoadBlog.do?id=" + blog.getId()); |
else |
defaultResult.setUrl("/user/startLoadBlogFrom" + from + ".do?id=" + blog.getId()); |
93,7 → 97,7 |
public List<IToDo> getAllToDos(UserSession userSession) |
{ |
List<IToDo> todos = new ArrayList<IToDo>(); |
if(userSession.getUser().isSuperuserOrAdmin()) |
if(userSession.getUser() != null && userSession.getUser().isSuperuserOrAdmin()) |
{ |
List<Blog> invalidBlogs = DaoFactory.getBlogDaoImpl().loadInvalidBlogs(); |
for(Blog b: invalidBlogs) |
102,6 → 106,8 |
if(b.getOwner() instanceof UserImpl) |
username = ((UserImpl)b.getOwner()).getUsername(); |
DefaultToDo defaultToDo = new DefaultToDo(b.getTitle(),b.getTargetRoles(),username, "blog.validate.blog.todo","/user/startLoadBlogFromHome.do?id=" + b.getId()); |
if(b instanceof CourseUnitBlog) |
defaultToDo.setUrl("/user/startLoadBlogFromCourseUnit.do?id=" + b.getId()); |
todos.add(defaultToDo); |
} |
} |
112,7 → 118,25 |
String username = null; |
if(b.getOwner() instanceof UserImpl) |
username = ((UserImpl)b.getOwner()).getUsername(); |
DefaultToDo defaultToDo = new DefaultToDo(b.getTitle(),null,username, "blog.validate.post.todo","/user/startLoadBlogFromHome.do?id=" + b.getBlog().getId()); |
String url; |
if(new MyCalendar().getMonth() == b.getMonth()) |
{ |
if(b.getBlog() instanceof CourseUnitBlog) |
url = "/user/startLoadBlogFromCourseUnit.do?id=" + b.getBlog().getId() + "#post" + b.getId(); |
else |
url = "/user/startLoadBlogFromHome.do?id=" + b.getBlog().getId() + "#post" + b.getId(); |
} |
else |
{ |
if(b.getBlog() instanceof CourseUnitBlog) |
url = "/user/startLoadBlogMonthFromCourseUnit.do?id=" + b.getBlog().getId() + "&month=" + b.getMonth() + "&year=" + b.getYear() + "#post" + b.getId(); |
else |
url = "/user/startLoadBlogMonthFromHome.do?id=" + b.getBlog().getId() + "&month=" + b.getMonth() + "&year=" + b.getYear() + "#post" + b.getId(); |
} |
DefaultToDo defaultToDo = new DefaultToDo(b.getTitle(),null,username, "blog.validate.post.todo",url); |
todos.add(defaultToDo); |
} |
return todos; |
/impl/src/java/pt/estgp/estgweb/services/blogs/LoadBlogService.java |
---|
3,9 → 3,8 |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.views.BlogPostView; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.Blog; |
import pt.estgp.estgweb.domain.BlogImpl; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import org.apache.log4j.Logger; |
14,6 → 13,7 |
import java.util.ArrayList; |
import jomm.utils.MyCalendar; |
import jomm.dao.impl.AbstractDao; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
40,14 → 40,17 |
{ |
Blog b = DaoFactory.getBlogDaoImpl().get(id); |
if(b == null) |
return null; |
BlogView bV = new BlogView(b); |
List<BlogView.MonthPosts> monthIds = getMonths(id); |
List<BlogPostView> posts = loadBlogPostsService.loadLastPosts(id,userSession); |
bV.setLastPosts(posts); |
bV.setMonths(monthIds); |
return bV; |
} |
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogService.java |
---|
2,15 → 2,14 |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.Blog; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.Globals; |
import org.apache.log4j.Logger; |
import java.util.Date; |
import java.util.HashSet; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
37,8 → 36,22 |
Blog b; |
if(bV.getId() <= 0) |
{ |
b = DomainObjectFactory.createBlogImpl(); |
b.setOwner(userSession.getUser()); |
if(bV.getCourseUnitView() != null) |
{ |
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(bV.getCourseUnitView().getId()); |
b = DomainObjectFactory.createCourseUnitBlogImpl(); |
((CourseUnitBlogImpl)b).setCourseUnit(c); |
if(c.getBlogs() == null) |
c.setBlogs(new HashSet()); |
c.getBlogs().add((CourseUnitBlog) b); |
if(c.getTeachers()!=null && c.getTeachers().size() > 0) |
b.setOwner(c.getTeachers().iterator().next()); |
} |
else |
{ |
b = DomainObjectFactory.createBlogImpl(); |
b.setOwner(userSession.getUser()); |
} |
b.setSaveDate(new Date()); |
DaoFactory.getBlogDaoImpl().save(b); |
} |
46,7 → 59,7 |
{ |
b = DaoFactory.getBlogDaoImpl().get(bV.getSerializable()); |
} |
if(userSession.getUser().isSuperuserOrAdmin()) |
if(userSession.getUser() != null && userSession.getUser().isSuperuserOrAdmin()) |
bV.persistViewInObjectByAdmin(b); |
else |
bV.persistViewInObject(b); |
/impl/src/java/pt/estgp/estgweb/services/blogs/BlogPostsCommonServices.java |
---|
75,7 → 75,9 |
MyCalendar myCalendar = new MyCalendar(); |
if (myCalendar.getMonth() != blogPost.getMonth() || myCalendar.getYear() != blogPost.getYear()) |
{ |
if (from == null) |
if(blogPost.getBlog() instanceof CourseUnitBlog) |
defaultResult.setUrl("/user/startLoadBlogMonthFromCourseUnit.do?month=" + blogPost.getMonth() + "&year=" + blogPost.getYear() + "&id=" + blogPost.getBlog().getId() + "#post" + blogPost.getId()); |
else if (from == null) |
defaultResult.setUrl("/startLoadBlogMonth.do?month=" + blogPost.getMonth() + "&year=" + blogPost.getYear() + "&id=" + blogPost.getBlog().getId() + "#post" + blogPost.getId()); |
else |
defaultResult.setUrl("/user/startLoadBlogMonthFrom" + from + ".do?month=" + blogPost.getMonth() + "&year=" + blogPost.getYear() + "&id=" + blogPost.getBlog().getId() + "#post" + blogPost.getId()); |
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogPostService.java |
---|
66,7 → 66,7 |
Blog b = DaoFactory.getBlogDaoImpl().load(blogId); |
if(b.isAutoValidation() || b.isOwnedBy(userSession.getUser()) || userSession.getUser().isSuperuserOrAdmin()) |
if(b.isAutoValidation() || b.isOwnedBy(userSession.getUser(),true) || (userSession.getUser() != null && userSession.getUser().isSuperuserOrAdmin())) |
{ |
bPV.setStatus(true); |
} |
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java |
---|
2,10 → 2,7 |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.Announcement; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
34,7 → 31,12 |
if(announcementView.getId() <= 0) |
{ |
a = DomainObjectFactory.createAnnouncementImpl(); |
if(announcementView.getCourseUnitView()!=null && announcementView.getCourseUnitView().getId() > 0) |
{ |
a = DomainObjectFactory.createCourseUnitAnnouncementImpl(); |
} |
else |
a = DomainObjectFactory.createAnnouncementImpl(); |
announcementView.persistViewInObject(a); |
a.setOwner(userSession.getUser()); |
a.setSaveDate(new Date()); |
105,10 → 107,12 |
if(RoleManager.hasRole(userSession.getUser(),Globals.AUTOMATIC_VALIDATION_ROLES)) |
a.setStatus(announcementView.isStatus()); |
else if(a instanceof CourseUnitAnnouncement && ((UserImpl)userSession.getUser()).isTeacherOfCourseUnit(announcementView.getCourseUnitView().getId(),true)) |
a.setStatus(announcementView.isStatus()); |
else |
{ |
String[] userRoles=a.getChoosedOwnerRole().split(","); |
Boolean validation=false; |
String[] userRoles = a.getChoosedOwnerRole().split(","); |
Boolean validation = false; |
for(String role: userRoles) |
{ |
118,60 → 122,63 |
{ |
String validationTargets=role+".auto.validation.targets"; |
String userAutoValitation=ConfigProperties.getProperty(validationTargets); |
String[] userAutoValitationRoles=userAutoValitation.split(","); |
int validTargetRoles=0; |
if(a.getTargetRoles().contains(",")) |
if(userAutoValitation != null) |
{ |
String[] targetRolesAnnouncementSplited=a.getTargetRoles().split(","); |
String[] userAutoValitationRoles=userAutoValitation.split(","); |
int validTargetRoles=0; |
if(a.getTargetRoles().contains(",")) |
{ |
String[] targetRolesAnnouncementSplited=a.getTargetRoles().split(","); |
//Percorre os targets todos a quem se destina |
for(String target: targetRolesAnnouncementSplited) |
{ |
//Percorre todos os validation targets |
for(String userTargetRoles: userAutoValitationRoles) |
//Percorre os targets todos a quem se destina |
for(String target: targetRolesAnnouncementSplited) |
{ |
//Se o target a quem se destina constar na lista dos validation targets ent�o incrementa |
//o validTargetRoles |
if(target.equals(userTargetRoles)) |
//Percorre todos os validation targets |
for(String userTargetRoles: userAutoValitationRoles) |
{ |
validTargetRoles++; |
//Se o target a quem se destina constar na lista dos validation targets entao incrementa |
//o validTargetRoles |
if(target.equals(userTargetRoles)) |
{ |
validTargetRoles++; |
} |
} |
} |
} |
//Se o numero de roles validados for igual ao numero de targets a quem se destina |
//Vai verificar se possui validationType para o type announcement |
if(validTargetRoles==targetRolesAnnouncementSplited.length) |
{ |
String validationTypes=role +".auto.validation.types"; |
String userAutoTypes=ConfigProperties.getProperty(validationTypes); |
String[] userAutoValitationTypes=userAutoTypes.split(","); |
for(String types: userAutoValitationTypes) |
//Se o numero de roles validados for igual ao numero de targets a quem se destina |
//Vai verificar se possui validationType para o type announcement |
if(validTargetRoles==targetRolesAnnouncementSplited.length) |
{ |
if(types.equals(a.getType())) |
validation=true; |
String validationTypes=role +".auto.validation.types"; |
String userAutoTypes=ConfigProperties.getProperty(validationTypes); |
String[] userAutoValitationTypes=userAutoTypes.split(","); |
for(String types: userAutoValitationTypes) |
{ |
if(types.equals(a.getType())) |
validation=true; |
} |
} |
} |
} |
else |
{ |
String targetRolesAnnouncement=a.getTargetRoles(); |
//Percorre todos os validation targets |
for(String userTargetRoles: userAutoValitationRoles) |
else |
{ |
if(targetRolesAnnouncement.equals(userTargetRoles)) |
String targetRolesAnnouncement=a.getTargetRoles(); |
//Percorre todos os validation targets |
for(String userTargetRoles: userAutoValitationRoles) |
{ |
validTargetRoles++; |
if(targetRolesAnnouncement.equals(userTargetRoles)) |
{ |
validTargetRoles++; |
} |
} |
} |
if(validTargetRoles==1) |
{ |
String validationTypes=role +".auto.validation.types"; |
String userAutoTypes=ConfigProperties.getProperty(validationTypes); |
String[] userAutoValitationTypes=userAutoTypes.split(","); |
for(String types: userAutoValitationTypes) |
if(validTargetRoles==1) |
{ |
if(types.equals(a.getType())) |
validation=true; |
String validationTypes=role +".auto.validation.types"; |
String userAutoTypes=ConfigProperties.getProperty(validationTypes); |
String[] userAutoValitationTypes=userAutoTypes.split(","); |
for(String types: userAutoValitationTypes) |
{ |
if(types.equals(a.getType())) |
validation=true; |
} |
} |
} |
} |
185,16 → 192,18 |
a.setStatus(validation); |
} |
AnnouncementView aView; |
if(announcementView.getId() <= 0) |
{ |
DaoFactory.getAnnouncementDaoImpl().save(a); |
logger.info("Creating announcement:" + a.getId()); |
return new AnnouncementView(a); |
aView = new AnnouncementView(a); |
} |
else |
{ |
logger.info("Updating announcement:" + a.getId()); |
return new AnnouncementView(a); |
aView = new AnnouncementView(a); |
} |
return aView; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/announcements/TodoAnnouncementsCommonServices.java |
---|
New file |
0,0 → 1,84 |
package pt.estgp.estgweb.services.announcements; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.common.*; |
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults; |
import pt.estgp.estgweb.services.common.impl.DefaultResult; |
import pt.estgp.estgweb.services.common.impl.DefaultToDo; |
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; |
import java.util.ArrayList; |
import jomm.dao.impl.AbstractDao; |
/** |
* @author Jorge Machado |
* @date 25/Apr/2008 |
* @time 18:01:54 |
* @see pt.estgp.estgweb.web |
*/ |
public class TodoAnnouncementsCommonServices implements IService, IModuleCommonServices |
{ |
private static final Logger logger = Logger.getLogger(TodoAnnouncementsCommonServices.class); |
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession) |
{ |
return 0; // todo To change body of implemented methods use File | Settings | File Templates. |
} |
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) |
{ |
return search(null,search, searchType,page,maxResults,userSession); |
} |
public ISearchResults search(String from, String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) |
{ |
return null; |
} |
public int countToDo(UserSession userSession) |
{ |
return 0; //todo To change body of implemented methods use File | Settings | File Templates. |
} |
/** |
* Not implemented |
* @param userSession |
* @return |
*/ |
public IToDoCat getToDo(UserSession userSession) |
{ |
return null; |
} |
public List<IToDo> getAllToDos(UserSession userSession) |
{ |
List<IToDo> todos = new ArrayList<IToDo>(); |
if(userSession.getUser() != null) |
{ |
List<Announcement> todosAnnouncements = DaoFactory.getAnnouncementDaoImpl().loadTargetTodos(userSession.getUser().getRolesList()); |
for(Announcement a: todosAnnouncements) |
{ |
DefaultToDo defaultToDo = new DefaultToDo(a.getTitle(),a.getTargetRoles(),((UserImpl)a.getOwner()).getUsername(), "announcements.type." + a.getType(),"/user/startLoadTodoAnnouncementFromHome.do?id=" + a.getId()); |
todos.add(defaultToDo); |
} |
} |
return todos; |
} |
/*This method is invoked from object creation*/ |
public void adviseNew(DomainObject object) |
{ |
//To change body of implemented methods use File | Settings | File Templates. |
} |
public void adviseUpdate(DomainObject object) |
{ |
//To change body of implemented methods use File | Settings | File Templates. |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/UserImpl.java |
---|
1,5 → 1,7 |
package pt.estgp.estgweb.domain; |
import jomm.dao.impl.AbstractDao; |
import java.io.Serializable; |
import java.util.Date; |
import java.util.Set; |
62,14 → 64,44 |
{ |
if(this instanceof TeacherImpl) |
{ |
((TeacherImpl)this).hasCourseUnit(id,transaction); |
return ((TeacherImpl)this).hasCourseUnit(id,transaction); |
} |
else if(this instanceof StudentImpl) |
{ |
((StudentImpl)this).hasCourseUnit(id,transaction); |
return ((StudentImpl)this).hasCourseUnit(id,transaction); |
} |
return false; |
} |
public boolean isTeacherOfCourseUnit(long id) |
{ |
return isTeacherOfCourseUnit(id,false); |
} |
public boolean isTeacherOfCourseUnit(long id, boolean transaction) |
{ |
if(this instanceof TeacherImpl) |
{ |
return ((TeacherImpl)this).hasCourseUnit(id,transaction); |
} |
return false; |
} |
public boolean isStudentfCourseUnit(long id) |
{ |
return isStudentfCourseUnit(id,false); |
} |
public boolean isStudentfCourseUnit(long id, boolean transaction) |
{ |
if(this instanceof StudentImpl) |
{ |
return ((StudentImpl)this).hasCourseUnit(id,transaction); |
} |
return false; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/StudentImpl.java |
---|
6,6 → 6,8 |
import java.util.Set; |
import java.util.HashSet; |
import java.util.List; |
import java.util.ArrayList; |
import org.apache.log4j.Logger; |
22,14 → 24,14 |
public static final Logger logger = Logger.getLogger(StudentImpl.class); |
private Set<CourseUnit> subscribedUnitsView = null; |
private Set<CourseUnitAnnouncementImpl> courseUnitAnnouncementsView = null; |
private List<CourseUnit> subscribedUnitsView = null; |
private List<CourseUnitAnnouncementImpl> courseUnitAnnouncementsView = null; |
public String getManagedRole() { |
return STUDENT_ROLE; |
} |
public Set<CourseUnit> getSubscribedUnitsView() |
public List<CourseUnit> getSubscribedUnitsView() |
{ |
if(subscribedUnitsView == null) |
{ |
38,9 → 40,9 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{getId()}; |
subscribedUnitsView = (Set<CourseUnit>) sm.execute(null, "LoadSubscribedUnits", args, names); |
subscribedUnitsView = (List<CourseUnit>) sm.execute(null, "LoadSubscribedUnits", args, names); |
if(subscribedUnitsView == null) |
subscribedUnitsView = new HashSet<CourseUnit>(); |
subscribedUnitsView = new ArrayList<CourseUnit>(); |
} |
catch (Throwable e) |
{ |
51,7 → 53,7 |
} |
public Set<CourseUnitAnnouncementImpl> getCourseUnitAnnouncementsView() |
public List<CourseUnitAnnouncementImpl> getCourseUnitAnnouncementsView() |
{ |
if(courseUnitAnnouncementsView == null) |
{ |
60,9 → 62,9 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{getId()}; |
courseUnitAnnouncementsView = (Set<CourseUnitAnnouncementImpl>) sm.execute(null, "LoadSubscribedUnitsAnnouncements", args, names); |
courseUnitAnnouncementsView = (List<CourseUnitAnnouncementImpl>) sm.execute(null, "LoadSubscribedUnitsAnnouncements", args, names); |
if(courseUnitAnnouncementsView == null) |
courseUnitAnnouncementsView = new HashSet<CourseUnitAnnouncementImpl>(); |
courseUnitAnnouncementsView = new ArrayList<CourseUnitAnnouncementImpl>(); |
} |
catch (Throwable e) |
{ |
79,9 → 81,9 |
public boolean hasCourseUnit(long id, boolean transaction) |
{ |
Set<CourseUnit> cUnits; |
List<CourseUnit> cUnits; |
if(transaction) |
cUnits = getSubscribedUnits(); |
cUnits = new ArrayList<CourseUnit>(getSubscribedUnits()); |
else |
cUnits = getSubscribedUnitsView(); |
if(cUnits == null) |
/impl/src/java/pt/estgp/estgweb/domain/AnnouncementImpl.java |
---|
20,12 → 20,17 |
private static final Logger logger = Logger.getLogger(AnnouncementImpl.class); |
public boolean isOwnedBy(GenericUser u) |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return u.getId() == getOwner().getId(); |
} |
public boolean isOwnedBy(GenericUser u) |
{ |
return isOwnedBy(u,false); |
} |
public GenericUser getOwner() |
{ |
return super.getOwner(); |
/impl/src/java/pt/estgp/estgweb/domain/IAddContents.java |
---|
10,5 → 10,6 |
{ |
public boolean canAddContent(GenericUserImpl u); |
public boolean canAddContent(GenericUserImpl u, boolean transaction); |
} |
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java |
---|
24,9 → 24,14 |
public boolean isOwnedBy(GenericUser u) |
{ |
return u != null && u instanceof TeacherImpl && ((TeacherImpl)u).hasCourseUnit(getId(),true); |
return isOwnedBy(u, false); |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return u != null && u instanceof TeacherImpl && ((TeacherImpl)u).hasCourseUnit(getId(),transaction); |
} |
/** |
* Not implemented can be variuous teachers |
* @return null |
58,4 → 63,11 |
{ |
return true; |
} |
public CourseUnitBlogImpl getUnitBlog() |
{ |
if(getBlogs()!=null && getBlogs().size() > 0) |
return (CourseUnitBlogImpl) getBlogs().iterator().next(); |
return null; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java |
---|
4,6 → 4,7 |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.services.common.ISearchResults; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import pt.estgp.estgweb.Globals; |
import java.util.List; |
import java.util.ArrayList; |
174,6 → 175,10 |
Criterion c = createSearchQuery(query, searchTypeEnum); |
Criteria criteria = createMaxAnnouncementsPageRolesTypeCriteria(page, maxAnnouncements, roles, null, null, internal); |
criteria.add(c); |
for(String notSearchable : Globals.ANNOUNCEMENT_NOT_STANDARD) |
{ |
criteria.add(not(eq("type",notSearchable))); |
} |
return criteria.list(); |
} |
196,12 → 201,24 |
return createCriteria().add(eq("owner.id", ownerId)).addOrder(Order.desc("updateDate")).list(); |
} |
public List<Announcement> loadInvalidAnnouncements() |
{ |
return createCriteria() |
Criteria c = createCriteria() |
.add(eq("status",false)) |
.add(isNull("subTargets")) |
.addOrder(Order.asc("id")).list(); |
.add(isNull("subTargets")); |
for(String notSearchable : Globals.ANNOUNCEMENT_NOT_STANDARD) |
{ |
c.add(not(eq("type",notSearchable))); |
} |
return c.addOrder(Order.asc("id")) |
.list(); |
} |
public List<Announcement> loadTargetTodos(List<String> roles) |
{ |
return createRolesTypeCriteria(roles,Globals.ANNOUNCEMENT_TYPE_TODO,null,true).list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitAssignementDaoImpl.java |
---|
2,7 → 2,11 |
import static org.hibernate.criterion.Restrictions.*; |
import org.hibernate.Query; |
import pt.estgp.estgweb.domain.CourseUnitAssignement; |
import pt.estgp.estgweb.domain.CourseUnitAssignementImpl; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
24,6 → 28,35 |
return (CourseUnitAssignementDaoImpl) myInstance; |
} |
public List<CourseUnitAssignementImpl> loadActiveAssignements(long userID) |
{ |
return createCriteria() |
.createAlias("courseUnit","cu") |
.createAlias("cu.students","cus") |
.add(eq("status",true)) |
.add(eq("cus.id",userID)).list(); |
} |
public List<CourseUnitAssignementImpl> loadDeliveredAssignements(long userID) |
{ |
return createCriteria() |
.createAlias("courseUnit","cu") |
.createAlias("cu.students","cus") |
.createAlias("deliverables","de") |
.createAlias("de.student","des") |
.add(eq("des.id",userID)) |
.add(eq("status",true)) |
.add(eq("cus.id",userID)).list(); |
} |
public CourseUnitAssignement loadByRepositoryId(String identifier) |
{ |
return |
(CourseUnitAssignement) |
createCriteria() |
.add(eq("repositoryStream",identifier)) |
.uniqueResult(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDeliverableDaoImpl.java |
---|
1,6 → 1,8 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.hibernate.Query; |
import static org.hibernate.criterion.Restrictions.*; |
import pt.estgp.estgweb.domain.CourseUnitDeliverable; |
/** |
* @author Jorge Machado |
31,4 → 33,23 |
// return createCriteria().add(eq("courseUnitAssignement.id",courseUnitAssignementId)).list().size(); |
} |
public CourseUnitDeliverable loadDeliverable(long studentId, long workId) |
{ |
return |
(CourseUnitDeliverable) |
createCriteria() |
.add(eq("courseUnitAssignement.id",workId)) |
.add(eq("student.id",studentId)).uniqueResult(); |
} |
public CourseUnitDeliverable loadDeliverableByRepositoryId(String repositoryStreamId) |
{ |
return |
(CourseUnitDeliverable) |
createCriteria() |
.add(eq("deliverableRepositoryStream",repositoryStreamId)) |
.uniqueResult(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java |
---|
1,8 → 1,17 |
package pt.estgp.estgweb.domain.dao.impl; |
import static org.hibernate.criterion.Restrictions.*; |
import org.hibernate.criterion.Order; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.Criteria; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.CourseImpl; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
23,4 → 32,37 |
return (CourseImpl) createCriteria().add(eq("code",code)).uniqueResult(); |
} |
public int countCoursesActualYear(String query, SearchTypeEnum searchType) |
{ |
Criterion c = DaoUtils.createSearchQuery(query,searchType,"name","description"); |
return createCriteria() |
.add(c) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.list().size(); |
} |
public List<Course> searchActualYear(String query, SearchTypeEnum searchTypeEnum, int max, int page) |
{ |
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "name", "description"); |
Criteria criteria = createCriteria(); |
criteria.add(c) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.addOrder(Order.asc("name")) |
.setMaxResults(max) |
.setFirstResult(page * max); |
return criteria.list(); |
} |
public List<Course> findAllOrderByName() |
{ |
return createCriteria().addOrder(Order.asc("name")).list(); |
} |
public List<Course> findAll(String importYear) |
{ |
return createCriteria().add(eq("importYear",importYear)).list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
40,6 → 40,11 |
return createCriteria().add(eq("code", sigesCode)).list(); |
} |
public List<CourseUnit> loadByCourse(long course, String importYear) |
{ |
return createCriteria().add(eq("importYear",importYear)).add(eq("course.id", course)).list(); |
} |
public CourseUnit loadBySigesCodeUnique(String sigesCode) |
{ |
return (CourseUnit) createCriteria().add(eq("code", sigesCode)).uniqueResult(); |
105,6 → 110,47 |
.list(); |
} |
public List<CourseUnit> loadMissingPrograms(long teacherId) |
{ |
//todo falta a projeccao do teacher id |
return createCriteria() |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add((or(isNull("programStreamId"),eq("programStreamId","")))) |
.createAlias("teachers", "th") |
.add(eq("th.id",teacherId)) |
.list(); |
} |
public List<CourseUnit> loadMissingObjectivesGivenCourse(long courseId) |
{ |
return createCriteria() |
.createAlias("course", "c") |
.add(eq("c.id",courseId)) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add((or(isNull("objectives"),eq("objectives","")))) |
.list(); |
} |
public List<CourseUnit> loadMissingProgramGivenCourse(long courseId) |
{ |
return createCriteria() |
.createAlias("course", "c") |
.add(eq("c.id",courseId)) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add((or(isNull("programStreamId"),eq("programStreamId","")))) |
.list(); |
} |
public List<CourseUnit> loadMissingObjectivesOrProgramGivenCourse(long courseId) |
{ |
return createCriteria() |
.createAlias("course", "c") |
.add(eq("c.id",courseId)) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add((or(or(isNull("objectives"),eq("objectives","")),or(isNull("programStreamId"),eq("programStreamId",""))))) |
.list(); |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitAnnouncementDaoImpl.java |
---|
New file |
0,0 → 1,50 |
package pt.estgp.estgweb.domain.dao.impl; |
import pt.estgp.estgweb.domain.Announcement; |
import pt.estgp.estgweb.domain.AnnouncementImpl; |
import pt.estgp.estgweb.domain.CourseUnitAnnouncementImpl; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import java.util.List; |
import java.util.ArrayList; |
import java.util.Date; |
import org.hibernate.Criteria; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.criterion.Order; |
import org.hibernate.criterion.Restrictions; |
import jomm.utils.MyCalendar; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
* @time 2:51:06 |
* @see pt.estgp.estgweb.domain.dao.impl |
*/ |
public class CourseUnitAnnouncementDaoImpl extends CourseUnitAnnouncementDao |
{ |
public static CourseUnitAnnouncementDaoImpl getInstance() |
{ |
if (myInstance == null) |
myInstance = new CourseUnitAnnouncementDaoImpl(); |
return (CourseUnitAnnouncementDaoImpl) myInstance; |
} |
public List<CourseUnitAnnouncementImpl> loadCourseUnitAnnouncements(long courseUnit) |
{ |
return createCriteria() |
.add(Restrictions.eq("courseUnit.id", courseUnit)) |
.addOrder(Order.desc("saveDate")).list(); |
} |
public List<CourseUnitAnnouncementImpl> loadExternalCourseUnitAnnouncements(long courseUnit) |
{ |
return createCriteria() |
.add(Restrictions.eq("courseUnit.id", courseUnit)) |
.add(Restrictions.eq("courseUnitInternal",false)) |
.addOrder(Order.desc("saveDate")).list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/BlogDaoImpl.java |
---|
77,6 → 77,7 |
public List<Blog> loadInvalidBlogs() |
{ |
return createCriteria() |
.add(isNull("type")) |
.add(eq("status",false)) |
.addOrder(Order.asc("id")).list(); |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java |
---|
21,6 → 21,11 |
return AnnouncementDaoImpl.getInstance(); |
} |
public static CourseUnitAnnouncementDaoImpl getCourseUnitAnnouncementDaoImpl() |
{ |
return CourseUnitAnnouncementDaoImpl.getInstance(); |
} |
public static CourseDaoImpl getCourseDaoImpl() |
{ |
return CourseDaoImpl.getInstance(); |
/impl/src/java/pt/estgp/estgweb/domain/TeacherImpl.java |
---|
8,6 → 8,8 |
import java.util.Set; |
import java.util.HashSet; |
import java.util.List; |
import java.util.ArrayList; |
import org.apache.log4j.Logger; |
24,13 → 26,13 |
public static final Logger logger = Logger.getLogger(TeacherImpl.class); |
private Set<CourseUnit> teachedUnitsView = null; |
private List<CourseUnit> teachedUnitsView = null; |
public String getManagedRole() { |
return TEACHER_ROLE; |
} |
public Set<CourseUnit> getTeachedUnitsView() |
public List<CourseUnit> getTeachedUnitsView() |
{ |
if(teachedUnitsView == null) |
{ |
39,9 → 41,9 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{getId()}; |
teachedUnitsView = (Set<CourseUnit>) sm.execute(null, "LoadTeachedUnits", args, names); |
teachedUnitsView = (List<CourseUnit>) sm.execute(null, "LoadTeachedUnits", args, names); |
if(teachedUnitsView == null) |
teachedUnitsView = new HashSet<CourseUnit>(); |
teachedUnitsView = new ArrayList<CourseUnit>(); |
} |
catch (Throwable e) |
{ |
63,9 → 65,9 |
public boolean hasCourseUnit(long id, boolean transaction) |
{ |
Set<CourseUnit> cUnits; |
List<CourseUnit> cUnits; |
if(transaction) |
cUnits = getTeachedUnits(); |
cUnits = new ArrayList<CourseUnit>(getTeachedUnits()); |
else |
cUnits = getTeachedUnitsView(); |
if(cUnits == null) |
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitAnnouncementImpl.java |
---|
1,5 → 1,7 |
package pt.estgp.estgweb.domain; |
import pt.estgp.estgweb.Globals; |
/** |
* @author Jorge Machado |
* @date 2/Jun/2008 |
8,6 → 10,11 |
public class CourseUnitAnnouncementImpl extends CourseUnitAnnouncement |
{ |
public CourseUnitAnnouncementImpl() |
{ |
setType(Globals.ANNOUNCEMENT_TYPE_COURSE_UNIT); |
} |
public boolean belongsUnit(GenericUserImpl user) |
{ |
return belongsUnit(user,false); |
44,4 → 51,12 |
return !isCourseUnitInternal() || belongsUnit(user,true); |
} |
public String getType() |
{ |
return Globals.ANNOUNCEMENT_TYPE_COURSE_UNIT; |
} |
public void setType(String type) |
{} |
} |
/impl/src/java/pt/estgp/estgweb/domain/DomainObject.java |
---|
39,4 → 39,5 |
{ |
return this.getClass(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/BlogImpl.java |
---|
23,18 → 23,27 |
public BlogImpl() |
{ |
super.setType(null); |
} |
public boolean canAddPost(GenericUserImpl user) |
{ |
return RoleManager.hasRole(getTargetRolesList(), Globals.ALL_ROLE) || user.hasRole(getTargetRolesList()) || user.isSuperuserOrAdmin() || isOwnedBy(user); |
return canAddPost(user,false); |
} |
public boolean canAddPost(GenericUserImpl user, boolean transaction) |
{ |
return RoleManager.hasRole(getTargetRolesList(), Globals.ALL_ROLE) || (user != null && (user.hasRole(getTargetRolesList()) || user.isSuperuserOrAdmin())) || isOwnedBy(user,transaction); |
} |
public boolean canAddContent(GenericUserImpl u) |
{ |
return canAddPost(u); |
} |
public boolean canAddContent(GenericUserImpl u, boolean transaction) |
{ |
return canAddPost(u,transaction); |
} |
public List<String> getTargetRolesList() |
{ |
75,7 → 84,7 |
public boolean canLoad(GenericUserImpl u) |
{ |
return isStatus() || isOwnedBy(u) || u.isSuperuserOrAdmin(); |
return isStatus() || isOwnedBy(u) || (u != null && u.isSuperuserOrAdmin()); |
} |
public boolean canLoadInOpenTransaction(GenericUserImpl u) |
/impl/src/java/pt/estgp/estgweb/domain/RepositoryFileVersionImpl.java |
---|
13,4 → 13,9 |
{ |
return getId(); |
} |
public int getSizeKb() |
{ |
return getSize() / 1024; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/BlogPostImpl.java |
---|
26,8 → 26,8 |
} |
/** |
* Not implemented |
*/ |
* Not implemented |
*/ |
public String getChoosedOwnerRole() |
{ |
return null; |
45,7 → 45,7 |
public boolean canLoad(GenericUserImpl u) |
{ |
return isStatus() || isOwnedBy(u) || u.isSuperuserOrAdmin(); |
return isStatus() || isOwnedBy(u) || (u != null && u.isSuperuserOrAdmin()); |
} |
public boolean canLoadInOpenTransaction(GenericUserImpl u) |
55,6 → 55,11 |
public boolean isOwnedBy(GenericUser u) |
{ |
return super.isOwnedBy(u) || getBlog().isOwnedBy(u); |
return isOwnedBy(u, false); |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return super.isOwnedBy(u,transaction) || getBlog().isOwnedBy(u,transaction); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/ReminderView.java |
---|
190,8 → 190,15 |
return null; |
} |
public boolean isOwnedBy(GenericUser u) |
{ |
return reminder.isOwnedBy(u); |
return isOwnedBy(u, false); |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return reminder.isOwnedBy(u,transaction); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/BlogPostView.java |
---|
76,9 → 76,14 |
public boolean isOwnedBy(GenericUser u) |
{ |
return blogPost.isOwnedBy(u); |
return blogPost.isOwnedBy(u,false); |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction ) |
{ |
return blogPost.isOwnedBy(u,transaction); |
} |
public GenericUser getOwner() |
{ |
return owner; |
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java |
---|
1,6 → 1,7 |
package pt.estgp.estgweb.domain.views; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.estgp.estgweb.utils.ConfigProperties; |
42,7 → 43,7 |
private Date startDate; |
private Date expireDate; |
private Integer counter; |
private boolean status; |
private boolean status = true; |
private boolean internal; |
private GenericUser owner; |
private String style; |
52,13 → 53,25 |
private long bigImageId; |
private long smallImageId; |
private boolean courseUnitInternal; |
private CourseUnitView courseUnitView; |
public AnnouncementView() |
{} |
{ |
courseUnitView = new CourseUnitView(); |
} |
public AnnouncementView(Announcement announcement) |
{ |
super(announcement); |
init(announcement); |
} |
public void init(Announcement announcement) |
{ |
super(announcement); |
this.announcement = announcement; |
this.title = announcement.getTitle(); |
this.text = announcement.getText(); |
85,6 → 98,11 |
this.internal = announcement.isInternal(); |
this.updateDate = announcement.getUpdateDate(); |
this.saveDate = announcement.getSaveDate(); |
if(announcement instanceof CourseUnitAnnouncementImpl) |
{ |
courseUnitView = new CourseUnitView(((CourseUnitAnnouncement)announcement).getCourseUnit()); |
courseUnitInternal = ((CourseUnitAnnouncement)announcement).isCourseUnitInternal(); |
} |
} |
public void persistViewInObject(Announcement announcement) |
106,9 → 124,33 |
announcement.setStyle(style); |
announcement.setInternalUrlInclude(internalUrlInclude); |
announcement.setInternal(internal); |
if(announcement instanceof CourseUnitAnnouncement && courseUnitView != null && courseUnitView.getId() > 0) |
{ |
((CourseUnitAnnouncement)announcement).setCourseUnit(DaoFactory.getCourseUnitDaoImpl().load(courseUnitView.getId())); |
((CourseUnitAnnouncement)announcement).setCourseUnitInternal(courseUnitInternal); |
} |
} |
public boolean isCourseUnitInternal() |
{ |
return courseUnitInternal; |
} |
public void setCourseUnitInternal(boolean courseUnitInternal) |
{ |
this.courseUnitInternal = courseUnitInternal; |
} |
public CourseUnitView getCourseUnitView() |
{ |
return courseUnitView; |
} |
public void setCourseUnitView(CourseUnitView courseUnitView) |
{ |
this.courseUnitView = courseUnitView; |
} |
public long getBigImageId() |
{ |
return bigImageId; |
149,7 → 191,7 |
return style; |
} |
public AnnouncementStyleEnum getStyleEnum() |
public AnnouncementStyleEnum getStyleEnum() |
{ |
return AnnouncementStyleEnum.parse(style); |
} |
310,7 → 352,7 |
return StringsUtils.getFragment(getText(),TEXT_SUMMARY_SIZE_SMALL); |
} |
public String getFormatedText() |
public String getFormatedText() |
{ |
return StringsUtils.getFormatedText(text); |
} |
342,9 → 384,14 |
return null; |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return announcement.isOwnedBy(u,transaction); |
} |
public boolean isOwnedBy(GenericUser u) |
{ |
return announcement.isOwnedBy(u); |
return announcement.isOwnedBy(u,false); |
} |
public List<String> getTargetRolesList() |
366,4 → 413,5 |
{ |
return ((AnnouncementImpl)announcement).canLoadInOpenTransaction(u); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitAssignementView.java |
---|
1,10 → 1,13 |
package pt.estgp.estgweb.domain.views; |
import pt.estgp.estgweb.domain.CourseUnitAssignement; |
import pt.estgp.estgweb.domain.CourseUnitAssignementImpl; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import javax.servlet.http.HttpServletRequest; |
import java.io.Serializable; |
import java.util.List; |
import java.util.Date; |
/** |
* @author Jorge Machado |
16,13 → 19,21 |
{ |
private long id; |
private long courseUnitId; |
private String title; |
private String description; |
private long delivers; |
private boolean status; |
private boolean status = true; |
private String deliverType; |
private boolean lateDelivers; |
private String deliverDate; |
private Date deliverDateDate; |
private String workFile; |
private CourseUnitDeliverableView courseUnitDeliverableView; |
private List<CourseUnitDeliverableView> deliverables; |
private CourseUnitView courseUnitView; |
private RepositoryFileImpl repositoryFile; |
private CourseUnitAssignement courseUnitAssignement; |
public Class getReferenceClass() |
39,17 → 50,23 |
{ |
} |
public CourseUnitAssignementView(CourseUnitAssignement courseUnitAssignement, long delivers) |
{ |
super(courseUnitAssignement); |
this.courseUnitAssignement = courseUnitAssignement; |
this.courseUnitId = courseUnitAssignement.getCourseUnit().getId(); |
this.id = courseUnitAssignement.getId(); |
this.title = courseUnitAssignement.getTitle(); |
this.description = courseUnitAssignement.getDescription(); |
this.status = courseUnitAssignement.isStatus(); |
this.delivers = delivers; |
this.deliverType = courseUnitAssignement.getDeliverType(); |
this.deliverDate = DatesUtils.getStringFromDate(courseUnitAssignement.getDeliverDate()); |
this.deliverDateDate = courseUnitAssignement.getDeliverDate(); |
this.lateDelivers = courseUnitAssignement.isLateDelivers(); |
this.workFile = courseUnitAssignement.getRepositoryStream(); |
} |
public void persistViewInObject(CourseUnitAssignement c) |
62,16 → 79,56 |
c.setDeliverType(deliverType); |
} |
public RepositoryFileImpl getRepositoryFile() |
{ |
return repositoryFile; |
} |
public void setRepositoryFile(RepositoryFileImpl repositoryFile) |
{ |
this.repositoryFile = repositoryFile; |
} |
public Date getDeliverDateDate() |
{ |
return deliverDateDate; |
} |
public void setDeliverDateDate(Date deliverDateDate) |
{ |
this.deliverDateDate = deliverDateDate; |
} |
public long getId() |
{ |
return id; |
} |
public String getWorkFile() |
{ |
return workFile; |
} |
public void setWorkFile(String workFile) |
{ |
this.workFile = workFile; |
} |
public void setId(long id) |
{ |
this.id = id; |
} |
public CourseUnitView getCourseUnitView() |
{ |
return courseUnitView; |
} |
public void setCourseUnitView(CourseUnitView courseUnitView) |
{ |
this.courseUnitView = courseUnitView; |
} |
public CourseUnitAssignement getCourseUnitAssignement() |
{ |
return courseUnitAssignement; |
152,4 → 209,57 |
{ |
this.deliverDate = deliverDate; |
} |
public CourseUnitDeliverableView getCourseUnitDeliverableView() |
{ |
return courseUnitDeliverableView; |
} |
public void setCourseUnitDeliverableView(CourseUnitDeliverableView courseUnitDeliverableView) |
{ |
this.courseUnitDeliverableView = courseUnitDeliverableView; |
} |
public boolean isActive() |
{ |
return courseUnitAssignement.getDeliverDate() != null && courseUnitAssignement.getDeliverDate().getTime() >= System.currentTimeMillis(); |
} |
public long getCourseUnitId() |
{ |
return courseUnitId; |
} |
public void setCourseUnitId(long courseUnitId) |
{ |
this.courseUnitId = courseUnitId; |
} |
public List<CourseUnitDeliverableView> getDeliverables() |
{ |
return deliverables; |
} |
public void setDeliverables(List<CourseUnitDeliverableView> deliverables) |
{ |
this.deliverables = deliverables; |
} |
public boolean canDeliver(HttpServletRequest request) |
{ |
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request); |
return |
userSession.getUser() != null && |
((UserImpl) userSession.getUser()).isInCourseUnit(courseUnitId) && |
!deliverType.equals("nofile") && |
(lateDelivers || courseUnitAssignement.getDeliverDate().getTime() >= System.currentTimeMillis()); |
} |
public boolean isLateDeliver() |
{ |
return courseUnitDeliverableView != null && courseUnitDeliverableView.isLateDeliver(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/UserView.java |
---|
368,6 → 368,11 |
public boolean isOwnedBy(GenericUser u) |
{ |
return isOwnedBy(u,false); |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return u.getId() == id; |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitDeliverableView.java |
---|
New file |
0,0 → 1,155 |
package pt.estgp.estgweb.domain.views; |
import pt.estgp.estgweb.domain.CourseUnitAssignement; |
import pt.estgp.estgweb.domain.CourseUnitAssignementImpl; |
import pt.estgp.estgweb.domain.CourseUnitDeliverableImpl; |
import pt.estgp.estgweb.domain.CourseUnitDeliverable; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import java.io.Serializable; |
import java.util.Date; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
* @time 19:34:49 |
* @see pt.estgp.estgweb.domain.views |
*/ |
public class CourseUnitDeliverableView extends DomainObjectView |
{ |
private long id; |
private String fileStreamId; |
private Date deliverDate; |
private String deliverDateStr; |
private UserView student; |
private String grade; |
private String obs; |
private CourseUnitDeliverable courseUnitDeliverable; |
private CourseUnitAssignementView courseUnitAssignementView; |
public Class getReferenceClass() |
{ |
return CourseUnitDeliverableImpl.class; |
} |
public Serializable getSerializable() |
{ |
return id; |
} |
public CourseUnitDeliverableView() |
{ |
} |
public CourseUnitDeliverableView(CourseUnitDeliverable courseUnitDeliverable, CourseUnitAssignementView courseUnitAssignementView) |
{ |
super(courseUnitDeliverable); |
this.courseUnitDeliverable = courseUnitDeliverable; |
this.id = courseUnitDeliverable.getId(); |
this.grade = courseUnitDeliverable.getGrade(); |
this.obs = courseUnitDeliverable.getObs(); |
this.fileStreamId = courseUnitDeliverable.getDeliverableRepositoryStream(); |
this.deliverDate = courseUnitDeliverable.getDeliverDate(); |
this.deliverDateStr = DatesUtils.getStringFromDate(deliverDate); |
if(courseUnitDeliverable.getStudent() != null) |
this.student = new UserView(courseUnitDeliverable.getStudent()); |
this.courseUnitAssignementView = courseUnitAssignementView; |
} |
public void persistViewInObject(CourseUnitDeliverable c) |
{ |
c.setGrade(grade); |
c.setObs(obs); |
} |
public String getGrade() |
{ |
return grade; |
} |
public void setGrade(String grade) |
{ |
this.grade = grade; |
} |
public UserView getStudent() |
{ |
return student; |
} |
public void setStudent(UserView student) |
{ |
this.student = student; |
} |
public long getId() |
{ |
return id; |
} |
public void setId(long id) |
{ |
this.id = id; |
} |
public String getObs() |
{ |
return obs; |
} |
public void setObs(String obs) |
{ |
this.obs = obs; |
} |
public String getFileStreamId() |
{ |
return fileStreamId; |
} |
public void setFileStreamId(String fileStreamId) |
{ |
this.fileStreamId = fileStreamId; |
} |
public Date getDeliverDate() |
{ |
return deliverDate; |
} |
public void setDeliverDate(Date deliverDate) |
{ |
this.deliverDate = deliverDate; |
} |
public CourseUnitDeliverable getCourseUnitDeliverable() |
{ |
return courseUnitDeliverable; |
} |
public void setCourseUnitDeliverable(CourseUnitDeliverable courseUnitDeliverable) |
{ |
this.courseUnitDeliverable = courseUnitDeliverable; |
} |
public String getDeliverDateStr() |
{ |
return deliverDateStr; |
} |
public void setDeliverDateStr(String deliverDateStr) |
{ |
this.deliverDateStr = deliverDateStr; |
} |
public boolean isLateDeliver() |
{ |
return getDeliverDate().getTime() > courseUnitAssignementView.getDeliverDateDate().getTime(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java |
---|
2,6 → 2,9 |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.courseunits.LoadCourseUnitAnnouncements; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import java.io.Serializable; |
import java.util.Set; |
19,15 → 22,20 |
{ |
private static final Logger logger = Logger.getLogger(CourseUnitView.class); |
LoadCourseUnitAnnouncements loadCourseUnitAnnouncements = new LoadCourseUnitAnnouncements(); |
private long id; |
private String name; |
private String code; |
private long courseId; |
private String courseCode; |
private String courseName; |
private String semestre; |
private String importYear; |
private BlogView blog; |
private Set<CourseUnitAnnouncement> announcements; |
private List<AnnouncementView> announcements; |
private CourseUnit courseUnit; |
private Set<UserView> teachers; |
private Set<UserView> students; |
36,8 → 44,12 |
private String programStreamId; |
private int programSize; |
private String extension; |
private Set<CourseUnitAssignementView> courseUnitAssignements; |
private List<CourseUnitAssignementView> courseUnitAssignements; |
private boolean notFound = false; |
private CourseView courseView; |
public Class getReferenceClass() |
{ |
return CourseUnitImpl.class; |
54,16 → 66,30 |
public CourseUnitView(CourseUnit courseUnit, boolean initTeachers, boolean initStudents ) |
{ |
super(courseUnit); |
init(courseUnit, initTeachers, initStudents); |
init(courseUnit, initTeachers, initStudents,false); |
} |
public CourseUnitView(CourseUnit courseUnit, boolean initTeachers, boolean initStudents, boolean initBlog ) |
{ |
super(courseUnit); |
init(courseUnit, initTeachers, initStudents, initBlog); |
} |
public CourseUnitView(CourseUnit courseUnit) |
{ |
super(courseUnit); |
init(courseUnit, false,false); |
init(courseUnit, false,false,false); |
} |
private void init(CourseUnit courseUnit, boolean initTeachers, boolean initStudents) |
public CourseUnitView(CourseUnit courseUnit, BlogView b) |
{ |
super(courseUnit); |
this.blog = b; |
init(courseUnit, false,false,false); |
} |
private void init(CourseUnit courseUnit, boolean initTeachers, boolean initStudents, boolean initBlog) |
{ |
this.courseUnit = courseUnit; |
this.courseName = courseUnit.getCourseName(); |
this.name = courseUnit.getName(); |
72,6 → 98,9 |
this.semestre = courseUnit.getSemestre(); |
this.importYear = courseUnit.getImportYear(); |
this.courseCode = courseUnit.getCourseCode(); |
this.objectives = courseUnit.getObjectives(); |
if(courseUnit.getProgramStreamId() != null) |
programStreamId = courseUnit.getProgramStreamId(); |
// if(courseUnit.getBlog() != null) |
// this.blog = new BlogView(courseUnit.getBlog()); |
this.id = courseUnit.getId(); |
93,8 → 122,51 |
students.add(u); |
} |
} |
if(initBlog) |
{ |
blog = new BlogView(((CourseUnitImpl)courseUnit).getUnitBlog(),this); |
} |
if(courseUnit.getCourse() != null) |
{ |
courseId = courseUnit.getCourse().getId(); |
} |
} |
public long getCourseId() |
{ |
return courseId; |
} |
public void setCourseId(long courseId) |
{ |
this.courseId = courseId; |
} |
public CourseView getCourseView() |
{ |
return courseView; |
} |
public void setCourseView(CourseView courseView) |
{ |
this.courseView = courseView; |
} |
public void setNotFound(boolean notFound) |
{ |
this.notFound = notFound; |
} |
public boolean isNotFound() |
{ |
return notFound; |
} |
public void setAnnouncements(List<AnnouncementView> announcements) |
{ |
this.announcements = announcements; |
} |
public int getTeachersSize() |
{ |
if(teachers != null) |
108,13 → 180,13 |
return students.size(); |
return 0; |
} |
public void setCourseUnitAssignements(Set<CourseUnitAssignementView> courseUnitAssignements) |
public void setCourseUnitAssignements(List<CourseUnitAssignementView> courseUnitAssignements) |
{ |
this.courseUnitAssignements = courseUnitAssignements; |
} |
public Set<CourseUnitAssignementView> getCourseUnitAssignements() |
public List<CourseUnitAssignementView> getCourseUnitAssignements() |
{ |
return courseUnitAssignements; |
} |
155,6 → 227,10 |
c.setName(name); |
c.setCode(code); |
c.setSemestre(semestre); |
if(courseId > 0) |
{ |
c.setCourse(DaoFactory.getCourseDaoImpl().load(courseId)); |
} |
} |
public String getObjectives() |
249,7 → 325,7 |
this.extension = extension; |
} |
public Set<CourseUnitAnnouncement> getAnnouncements() |
public List<AnnouncementView> getAnnouncements() |
{ |
return announcements; |
} |
266,9 → 342,14 |
public boolean isOwnedBy(GenericUser u) |
{ |
return u != null && u instanceof TeacherImpl && ((TeacherImpl)u).hasCourseUnit(getId()); |
return isOwnedBy(u, false); |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return u != null && u instanceof TeacherImpl && ((TeacherImpl)u).hasCourseUnit(getId(), transaction); |
} |
/** |
* Not implemented can be variuous teachers |
* @return null |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseView.java |
---|
New file |
0,0 → 1,286 |
package pt.estgp.estgweb.domain.views; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import pt.estgp.estgweb.Globals; |
import org.apache.log4j.Logger; |
import java.util.List; |
import java.util.Set; |
import java.util.HashSet; |
import java.util.ArrayList; |
import java.io.Serializable; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
* @time 19:34:49 |
* @see pt.estgp.estgweb.domain.views |
*/ |
public class CourseView extends DomainObjectView |
{ |
private static final Logger logger = Logger.getLogger(CourseView.class); |
private long id; |
private String code; |
private String name; |
private String degree; |
private String importYear; |
private String description; |
private String institutionalCode; |
private UserView coordinator; |
private UserView director; |
private List<CourseUnitView> courseUnits; |
private String studiesPlanStreamId; |
private RepositoryFileImpl studiesPlan; |
private Course course; |
public Class getReferenceClass() |
{ |
return CourseImpl.class; |
} |
public Serializable getSerializable() |
{ |
return id; |
} |
public CourseView() |
{ |
coordinator = new UserView(); |
director = new UserView(); |
} |
public CourseView(Course course) |
{ |
super(course); |
init(course,false); |
} |
public CourseView(Course course, boolean initCourseUnits) |
{ |
super(course); |
init(course, initCourseUnits); |
} |
private void init(Course course, boolean initCourseUnits) |
{ |
this.course = course; |
this.id = course.getId(); |
this.code = course.getCode(); |
this.name = course.getName(); |
this.degree = course.getDegree(); |
this.description = course.getDescription(); |
this.importYear = course.getImportYear(); |
this.institutionalCode = course.getInstitutionalCode(); |
if(course.getStudiesPlan() != null) |
this.studiesPlanStreamId = course.getStudiesPlan(); |
if(course.getCoordinator() != null) |
coordinator = new UserView(course.getCoordinator()); |
if(course.getDirector() != null) |
director = new UserView(course.getDirector()); |
if(initCourseUnits) |
{ |
if(course.getCourseUnits() != null) |
{ |
courseUnits = new ArrayList<CourseUnitView>(); |
for(CourseUnit c: course.getCourseUnits()) |
{ |
CourseUnitView cUV = new CourseUnitView(c); |
courseUnits.add(cUV); |
} |
} |
} |
} |
public void persistViewInObject(Course c) |
{ |
c.setCode(code); |
c.setDegree(degree); |
c.setDescription(description); |
c.setImportYear(importYear); |
c.setInstitutionalCode(institutionalCode); |
c.setName(name); |
if(coordinator != null && coordinator.getId() > 0) |
{ |
Teacher u = DaoFactory.getTeacherDaoImpl().load(coordinator.getId()); |
if(c.getCoordinator() == null || c.getCoordinator().getId() != coordinator.getId()) |
{ |
if(c.getCoordinator() != null) |
{ |
Teacher oldCoordinator = c.getCoordinator(); |
oldCoordinator.getCoordinatorCourses().remove(c); |
if(oldCoordinator.getCoordinatorCourses().size() == 0) |
{ |
oldCoordinator.removeRole(Globals.COURSE_COORDINATOR_ROLE); |
} |
} |
c.setCoordinator(u); |
u.addRole(Globals.COURSE_COORDINATOR_ROLE); |
} |
} |
if(director != null && director.getId() > 0) |
{ |
Teacher u = DaoFactory.getTeacherDaoImpl().load(director.getId()); |
if(c.getDirector() == null || c.getDirector().getId() != director.getId()) |
{ |
if(c.getDirector() != null) |
{ |
Teacher oldDirector = c.getDirector(); |
oldDirector.getDirectorCourses().remove(c); |
if(oldDirector.getDirectorCourses().size() == 0) |
{ |
oldDirector.removeRole(Globals.COURSE_DIRECTOR_ROLE); |
} |
} |
c.setDirector(u); |
u.addRole(Globals.COURSE_DIRECTOR_ROLE); |
} |
} |
} |
public long getId() |
{ |
return id; |
} |
public void setId(long id) |
{ |
this.id = id; |
} |
public String getCode() |
{ |
return code; |
} |
public void setCode(String code) |
{ |
this.code = code; |
} |
public String getName() |
{ |
return name; |
} |
public void setName(String name) |
{ |
this.name = name; |
} |
public String getDegree() |
{ |
return degree; |
} |
public void setDegree(String degree) |
{ |
this.degree = degree; |
} |
public String getImportYear() |
{ |
return importYear; |
} |
public void setImportYear(String importYear) |
{ |
this.importYear = importYear; |
} |
public String getDescription() |
{ |
return description; |
} |
public void setDescription(String description) |
{ |
this.description = description; |
} |
public String getInstitutionalCode() |
{ |
return institutionalCode; |
} |
public void setInstitutionalCode(String institutionalCode) |
{ |
this.institutionalCode = institutionalCode; |
} |
public UserView getCoordinator() |
{ |
if(coordinator == null) |
coordinator = new UserView(); |
return coordinator; |
} |
public void setCoordinator(UserView coordinator) |
{ |
this.coordinator = coordinator; |
} |
public List<CourseUnitView> getCourseUnits() |
{ |
return courseUnits; |
} |
public void setCourseUnits(List<CourseUnitView> courseUnits) |
{ |
this.courseUnits = courseUnits; |
} |
public String getStudiesPlanStreamId() |
{ |
return studiesPlanStreamId; |
} |
public void setStudiesPlanStreamId(String studiesPlanStreamId) |
{ |
this.studiesPlanStreamId = studiesPlanStreamId; |
} |
public RepositoryFileImpl getStudiesPlan() |
{ |
return studiesPlan; |
} |
public void setStudiesPlan(RepositoryFileImpl studiesPlan) |
{ |
this.studiesPlan = studiesPlan; |
} |
public int getStudiesPlanSizeKb() |
{ |
if(studiesPlan != null) |
return studiesPlan.getLastVersion().getSize() / 1024; |
return 0; |
} |
public String getStudiesPlanDate() |
{ |
if(studiesPlan != null) |
return DatesUtils.getStringFromDate(studiesPlan.getLastVersion().getSaveDate()); |
return ""; |
} |
public UserView getDirector() |
{ |
if(director == null) |
director = new UserView(); |
return director; |
} |
public void setDirector(UserView director) |
{ |
this.director = director; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/BlogView.java |
---|
2,12 → 2,15 |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.utils.RoleManager; |
import java.io.Serializable; |
import java.util.List; |
import jomm.dao.impl.AbstractDao; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
34,8 → 37,11 |
private List<MonthPosts> months; |
private int month; |
private int year; |
boolean autoValidation; |
private boolean autoValidation; |
private boolean courseUnitInternal; |
private CourseUnitView courseUnitView; |
private List<BlogPostView> lastPosts; |
public BlogView() |
45,6 → 51,16 |
public BlogView(Blog blog) |
{ |
super(blog); |
init(blog,null); |
} |
public BlogView(Blog blog, CourseUnitView c) |
{ |
super(blog); |
init(blog,c); |
} |
private void init(Blog blog, CourseUnitView c) |
{ |
this.blog = blog; |
this.title = blog.getTitle(); |
this.description = blog.getDescription(); |
56,6 → 72,19 |
this.name = blog.getName(); |
this.internal = blog.isInternal(); |
autoValidation = blog.isAutoValidation(); |
if(blog instanceof CourseUnitBlogImpl) |
{ |
if(c != null) |
{ |
courseUnitView = c; |
courseUnitInternal = ((CourseUnitBlog)blog).isCourseUnitInternal(); |
} |
else |
{ |
courseUnitInternal = ((CourseUnitBlog)blog).isCourseUnitInternal(); |
courseUnitView = new CourseUnitView(((CourseUnitBlog)blog).getCourseUnit(),this); |
} |
} |
} |
public void persistViewInObject(Blog blog) |
68,6 → 97,10 |
blog.setImage(image); |
blog.setInternal(internal); |
blog.setAutoValidation(autoValidation); |
if(blog instanceof CourseUnitBlog) |
{ |
((CourseUnitBlog)blog).setCourseUnitInternal(courseUnitInternal); |
} |
} |
public void persistViewInObjectByAdmin(Blog blog) |
{ |
86,6 → 119,16 |
this.autoValidation = autoValidation; |
} |
public CourseUnitView getCourseUnitView() |
{ |
return courseUnitView; |
} |
public void setCourseUnitView(CourseUnitView courseUnitView) |
{ |
this.courseUnitView = courseUnitView; |
} |
public String getName() |
{ |
return name; |
136,6 → 179,16 |
this.lastPosts = lastPosts; |
} |
public boolean isCourseUnitInternal() |
{ |
return courseUnitInternal; |
} |
public void setCourseUnitInternal(boolean courseUnitInternal) |
{ |
this.courseUnitInternal = courseUnitInternal; |
} |
public void setInternal(boolean internal) |
{ |
this.internal = internal; |
153,9 → 206,14 |
public boolean isOwnedBy(GenericUser u) |
{ |
return blog.isOwnedBy(u); |
return blog.isOwnedBy(u,false); |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return blog.isOwnedBy(u,transaction); |
} |
public GenericUser getOwner() |
{ |
return owner; |
263,6 → 321,10 |
{ |
return ((BlogImpl)blog).canAddContent(u); |
} |
public boolean canAddContent(GenericUserImpl u, boolean transaction) |
{ |
return ((BlogImpl)blog).canAddContent(u,transaction); |
} |
public boolean isInternal() |
{ |
/impl/src/java/pt/estgp/estgweb/domain/IOwned.java |
---|
12,6 → 12,7 |
{ |
public boolean isOwnedBy(GenericUser u); |
public boolean isOwnedBy(GenericUser u, boolean openTransaction); |
public GenericUser getOwner(); |
public List<String> getOwnerRoles(); |
public String getChoosedOwnerRole(); |
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitBlogImpl.java |
---|
1,5 → 1,7 |
package pt.estgp.estgweb.domain; |
import pt.estgp.estgweb.Globals; |
/** |
* @author Jorge Machado |
* @date 21/Abr/2008 |
8,6 → 10,13 |
*/ |
public class CourseUnitBlogImpl extends CourseUnitBlog |
{ |
public CourseUnitBlogImpl() |
{ |
super.setType(Globals.BLOG_TYPE_COURSE_UNIT); |
} |
public boolean canAddPost(GenericUserImpl user) |
{ |
return canAddPost(user,false); |
20,7 → 29,7 |
*/ |
public boolean canAddPost(GenericUserImpl user, boolean transaction) |
{ |
if(!super.canAddPost(user)) |
if(!super.canAddPost(user,transaction)) |
return false; |
if(user == null) |
return false; |
44,4 → 53,17 |
{ |
return !isCourseUnitInternal() || canAddPost(user,true); |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
if(u instanceof UserImpl) |
if(((UserImpl) u).isTeacherOfCourseUnit(getCourseUnit().getId(),transaction)) |
return true; |
return false; |
} |
public boolean isOwnedBy(GenericUser u) |
{ |
return isOwnedBy(u,false); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/ReminderImpl.java |
---|
23,6 → 23,11 |
public boolean isOwnedBy(GenericUser u) |
{ |
return isOwnedBy(u, false); |
} |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return u.getId() == getOwner().getId(); |
} |
/impl/src/java/pt/estgp/estgweb/domain/OwnedDomainObject.java |
---|
23,6 → 23,12 |
*/ |
public abstract List<String> getOwnerRoles(); |
public boolean isOwnedBy(GenericUser u) |
{ |
return isOwnedBy(u, false); |
} |
/** |
* Check if this object is owned by this user or |
* if this user is in group of owners or |
31,9 → 37,10 |
* @param u user to check |
* @return true if user is owner |
*/ |
public boolean isOwnedBy(GenericUser u) |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
if(getOwner() == null && getOwnerRoles() == null) |
if(u == null || getOwner() == null && getOwnerRoles() == null) |
return false; |
if(getOwner() != null) |
{ |
/impl/src/java/pt/estgp/estgweb/domain/GenericUserImpl.java |
---|
31,8 → 31,12 |
public void addRole(String role) |
{ |
setRoles(RoleManager.catRole(super.getRoles(), role)); |
setRoles(RoleManager.addRole(super.getRoles(), role)); |
} |
public void removeRole(String role) |
{ |
setRoles(RoleManager.removeRole(super.getRoles(), role)); |
} |
public boolean hasRole(String r) |
{ |
93,4 → 97,6 |
{ |
return isSuperuser() || isAdmin(); |
} |
public abstract String getUsername(); |
} |
/impl/src/java/pt/estgp/estgweb/filters/chains/ResourceAccessControlEnum.java |
---|
12,7 → 12,9 |
publicDomain("resource.access.publicDomain", new ResourceAccessControlPublicDomainFilter()), |
authenticatedDomain("resource.access.authenticatedDomain", new ResourceAccessControlPublicDomainFilter()), |
adminDomain("resource.access.adminDomain",new ResourceAccessControlAdminDomainFilter()), |
superUserDomain("resource.access.superDomain",new ResourceAccessControlSuperDomainFilter()); |
superUserDomain("resource.access.superDomain",new ResourceAccessControlSuperDomainFilter()), |
courseunitDeliverableDomain("resource.access.courseunitDeliverableDomain",new ResourceAccessControlCourseUnitDeliverableFilter()), |
courseunitDomain("resource.access.courseunitDomain",new ResourceAccessControlCourseUnitFilter()); |
private String key; |
private ResourceAccessControlFilter filter; |
/impl/src/java/pt/estgp/estgweb/filters/chains/ResourceAccessControlFilter.java |
---|
1,7 → 1,14 |
package pt.estgp.estgweb.filters.chains; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.utl.ist.berserk.logic.filterManager.IFilter; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import org.apache.log4j.Logger; |
/** |
* @author Jorge Machado |
10,5 → 17,23 |
*/ |
public abstract class ResourceAccessControlFilter implements IFilter |
{ |
public abstract boolean canAccessResource(UserSession user, String identifier); |
private static final Logger logger = Logger.getLogger(ResourceAccessControlFilter.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
String identifier = (String) request.getServiceParameters().getParameter("identifier"); |
if(!canAccessResource(userSession,identifier)) |
{ |
if(userSession.getUser() != null) |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
else |
logger.warn(userSession.getIpAddress() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
public abstract boolean canAccessResource(UserSession userSession, String identifier); |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/ResourceAccessControlCourseUnitDeliverableFilter.java |
---|
New file |
0,0 → 1,34 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlFilter; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.Globals; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import org.apache.log4j.Logger; |
/** |
* @author Jorge Machado |
* @date 4/Jun/2008 |
* @see pt.estgp.estgweb.filters.filters |
*/ |
public class ResourceAccessControlCourseUnitDeliverableFilter extends ResourceAccessControlFilter |
{ |
private static final Logger logger = Logger.getLogger(ResourceAccessControlCourseUnitDeliverableFilter.class); |
public boolean canAccessResource(UserSession userSession, String identifier) |
{ |
CourseUnitDeliverable d = DaoFactory.getCourseUnitDeliverableDaoImpl().loadDeliverableByRepositoryId(identifier); |
CourseUnit c = d.getCourseUnitAssignement().getCourseUnit(); |
return userSession.getUser()!= null && |
(((UserImpl) userSession.getUser()).isTeacherOfCourseUnit(c.getId(), true) |
|| |
userSession.getUser().getId() == d.getStudent().getId()); |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/ResourceAccessControlCourseUnitFilter.java |
---|
New file |
0,0 → 1,30 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlFilter; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.Globals; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import org.apache.log4j.Logger; |
/** |
* @author Jorge Machado |
* @date 4/Jun/2008 |
* @see pt.estgp.estgweb.filters.filters |
*/ |
public class ResourceAccessControlCourseUnitFilter extends ResourceAccessControlFilter |
{ |
private static final Logger logger = Logger.getLogger(ResourceAccessControlCourseUnitFilter.class); |
public boolean canAccessResource(UserSession userSession, String identifier) |
{ |
CourseUnitAssignement cA = DaoFactory.getCourseUnitAssignementDaoImpl().loadByRepositoryId(identifier); |
CourseUnit c = cA.getCourseUnit(); |
return userSession.getUser()!= null && ((UserImpl) userSession.getUser()).isInCourseUnit(c.getId(), true); |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/OwnerUsersClass.java |
---|
33,7 → 33,7 |
IOwned iOwned = (IOwned) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters()); |
if(!iOwned.isOwnedBy(userSession.getUser())) |
if(!iOwned.isOwnedBy(userSession.getUser(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
/impl/src/java/pt/estgp/estgweb/filters/filters/IsStudentInCourseUnitUsersClass.java |
---|
New file |
0,0 → 1,43 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.Globals; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import org.apache.log4j.Logger; |
public class IsStudentInCourseUnitUsersClass extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(IsStudentInCourseUnitUsersClass.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
if(userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
if(userSession.getUser().isSuperuser()) |
return; |
CourseUnit courseUnit = (CourseUnit) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters()); |
if(!((UserImpl)userSession.getUser()).isStudentfCourseUnit(courseUnit.getId(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/OwnerUsers.java |
---|
41,7 → 41,7 |
IOwned iOwned = (IOwned) LoadObjectFromParameters.loadObject(filterParameters,request.getServiceParameters()); |
if(!iOwned.isOwnedBy(userSession.getUser())) |
if(!iOwned.isOwnedBy(userSession.getUser(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
/impl/src/java/pt/estgp/estgweb/filters/filters/BooleanCheck.java |
---|
New file |
0,0 → 1,28 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.IInternal; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.ReflectionBean; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import org.apache.log4j.Logger; |
public class BooleanCheck extends LoadControlFilter |
{ |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
Object container = LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters()); |
ReflectionBean rbean = new ReflectionBean("o." + filterParameters.getParameter(2)); |
Boolean bool = (Boolean) rbean.invoke(container); |
if(!bool) |
{ |
throw new NeedAuthenticationException(); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/IsTeacherInCourseUnitUsersClassBean.java |
---|
New file |
0,0 → 1,48 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.ReflectionBean; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import org.apache.log4j.Logger; |
public class IsTeacherInCourseUnitUsersClassBean extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(IsTeacherInCourseUnitUsersClassBean.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
if(userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
if(userSession.getUser().isSuperuser()) |
return; |
Object bean = LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters()); |
ReflectionBean rbean = new ReflectionBean("o."+(String) filterParameters.getParameter(2)); |
CourseUnit courseUnit = (CourseUnit) rbean.invoke(bean); |
if(!((UserImpl)userSession.getUser()).isTeacherOfCourseUnit(courseUnit.getId(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/utils/LoadObjectFromParameters.java |
---|
10,6 → 10,7 |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import org.hibernate.HibernateException; |
/** |
* @author Jorge Machado |
45,7 → 46,7 |
Object classNameObjectContainer = serviceParameters.getParameter(classNameBean.getName()); |
Class className = (Class) classNameBean.invoke(classNameObjectContainer); |
return AbstractDao.getCurrentSession().load(className,serializable); |
return AbstractDao.load(className,serializable); |
} |
catch (NoSuchMethodException e) |
{ |
99,7 → 100,7 |
ReflectionBean serializableBean = new ReflectionBean(serializableBeanId); |
Object serializableObjectContainer = serviceParameters.getParameter(serializableBean.getName()); |
Serializable serializable = (Serializable) serializableBean.invoke(serializableObjectContainer); |
return AbstractDao.getCurrentSession().load(c,serializable); |
return AbstractDao.load(c,serializable); |
} |
catch (NoSuchMethodException e) |
{ |
123,8 → 124,13 |
ReflectionBean serializableBean = new ReflectionBean(serializableBeanId); |
Object serializableObjectContainer = serviceParameters.getParameter(serializableBean.getName()); |
Serializable serializable = (Serializable) serializableBean.invoke(serializableObjectContainer); |
return AbstractDao.getCurrentSession().load(className,serializable); |
return AbstractDao.load(className,serializable); |
} |
catch(HibernateException h) |
{ |
logger.error(h,h); |
throw h; |
} |
catch (NoSuchMethodException e) |
{ |
logger.fatal(e,e); |
/impl/src/java/pt/estgp/estgweb/filters/filters/IsInCourseUnitUsersClassBean.java |
---|
New file |
0,0 → 1,49 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.IOwned; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.ReflectionBean; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import org.apache.log4j.Logger; |
public class IsInCourseUnitUsersClassBean extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(IsInCourseUnitUsersClassBean.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
if(userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
if(userSession.getUser().isSuperuser()) |
return; |
Object bean = LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters()); |
ReflectionBean rbean = new ReflectionBean("o."+(String) filterParameters.getParameter(2)); |
CourseUnit courseUnit = (CourseUnit) rbean.invoke(bean); |
if(!((UserImpl)userSession.getUser()).isInCourseUnit(courseUnit.getId(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/IsInCourseUnit.java |
---|
New file |
0,0 → 1,52 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.ReflectionBean; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import org.apache.log4j.Logger; |
import java.io.Serializable; |
public class IsInCourseUnit extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(IsInCourseUnit.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
if(userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
if(userSession.getUser().isSuperuser()) |
return; |
ReflectionBean serializableBean = new ReflectionBean((String) filterParameters.parametersArray()[0]); |
Object serializableObjectContainer = request.getServiceParameters().getParameter(serializableBean.getName()); |
Serializable serializable = (Serializable) serializableBean.invoke(serializableObjectContainer); |
if(serializable != null && serializable instanceof Long && ((Long)serializable).intValue() > 0) |
{ |
CourseUnit courseUnit = (CourseUnit) LoadObjectFromParameters.loadObjectFromClassName(CourseUnit.class.getName(),filterParameters,request.getServiceParameters()); |
if(!((UserImpl)userSession.getUser()).isInCourseUnit(courseUnit.getId(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/IsTeacherInCourseUnitUsersClass.java |
---|
New file |
0,0 → 1,43 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.Globals; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import org.apache.log4j.Logger; |
public class IsTeacherInCourseUnitUsersClass extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(IsTeacherInCourseUnitUsersClass.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
if(userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
if(userSession.getUser().isSuperuser()) |
return; |
CourseUnit courseUnit = (CourseUnit) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters()); |
if(!((UserImpl)userSession.getUser()).isTeacherOfCourseUnit(courseUnit.getId(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/IsStudentInCourseUnitUsersClassBean.java |
---|
New file |
0,0 → 1,48 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.ReflectionBean; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import org.apache.log4j.Logger; |
public class IsStudentInCourseUnitUsersClassBean extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(IsStudentInCourseUnitUsersClassBean.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
if(userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
if(userSession.getUser().isSuperuser()) |
return; |
Object bean = LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters()); |
ReflectionBean rbean = new ReflectionBean("o."+(String) filterParameters.getParameter(2)); |
CourseUnit courseUnit = (CourseUnit) rbean.invoke(bean); |
if(!((UserImpl)userSession.getUser()).isStudentfCourseUnit(courseUnit.getId(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/OwnerUsersClassBean.java |
---|
38,7 → 38,7 |
IOwned iOwned = (IOwned) rbean.invoke(bean); |
if(!iOwned.isOwnedBy(userSession.getUser())) |
if(!iOwned.isOwnedBy(userSession.getUser(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
/impl/src/java/pt/estgp/estgweb/filters/filters/CanAddContentClass.java |
---|
34,7 → 34,7 |
IAddContents iAddContents = (IAddContents) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters()); |
if(!iAddContents.canAddContent(userSession.getUser())) |
if(!iAddContents.canAddContent(userSession.getUser(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
/impl/src/java/pt/estgp/estgweb/web/TmpStream.java |
---|
37,6 → 37,7 |
String mimeType = MimeTypeGuesser.getInstance().guessMimeType(f); |
response.setContentType(mimeType); |
response.setContentLength((int) f.length()); |
response.setHeader("Content-disposition","filename=" + path); |
logger.info("Opening tmp file:" + f.getAbsolutePath() + " with mime-type:" + mimeType); |
InputStream stream = new FileInputStream(new File(Globals.TMP_DIR + path)); |
byte[] buf = new byte[1024]; |
/impl/src/java/pt/estgp/estgweb/web/tags/IsNotAdminTag.java |
---|
27,7 → 27,7 |
public boolean go() |
{ |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
return !(userSession != null && userSession.getUser() != null && (((UserImpl) userSession.getUser()).isSuperuserOrAdmin())); |
return !(userSession != null && userSession.getUser() != null && ((userSession.getUser()).isSuperuserOrAdmin())); |
} |
public int doEndTag() throws JspException |
/impl/src/java/pt/estgp/estgweb/web/tags/CanManageTag.java |
---|
78,10 → 78,10 |
{ |
boolean valid = Boolean.parseBoolean(this.valid); |
IValid iValid = (IValid) owned; |
return owned != null && userSession.getUser() != null && (iValid.isValid() == valid && owned.isOwnedBy(userSession.getUser()) || (userSession.getUser()).isSuperuserOrAdmin()); |
return owned != null && userSession.getUser() != null && (iValid.isValid() == valid && owned.isOwnedBy(userSession.getUser(),false) || (userSession.getUser()).isSuperuserOrAdmin()); |
} |
else |
return owned != null && userSession.getUser() != null && (owned.isOwnedBy(userSession.getUser()) || (userSession.getUser()).isSuperuserOrAdmin()); |
return owned != null && userSession.getUser() != null && (owned.isOwnedBy(userSession.getUser(),false) || (userSession.getUser()).isSuperuserOrAdmin()); |
} |
/impl/src/java/pt/estgp/estgweb/web/tags/IsTeacherOfCourseUnitTag.java |
---|
New file |
0,0 → 1,76 |
package pt.estgp.estgweb.web.tags; |
import org.apache.log4j.Logger; |
import javax.servlet.jsp.tagext.BodyTagSupport; |
import javax.servlet.jsp.JspException; |
import javax.servlet.jsp.JspWriter; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.Globals; |
public class IsTeacherOfCourseUnitTag extends BodyTagSupport |
{ |
private static final Logger logger = Logger.getLogger(IsTeacherOfCourseUnitTag.class); |
private long courseUnitId; |
public long getCourseUnitId() |
{ |
return courseUnitId; |
} |
public void setCourseUnitId(long courseUnitId) |
{ |
this.courseUnitId = courseUnitId; |
} |
/** |
* |
* @return |
* @throws javax.servlet.jsp.JspException |
*/ |
public int doStartTag() throws JspException |
{ |
if (go()) |
{ |
return EVAL_BODY_BUFFERED; |
} |
else |
return SKIP_BODY; |
} |
public boolean go() |
{ |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
return userSession != null && userSession.getUser() != null && ((UserImpl)((userSession.getUser()))).isTeacherOfCourseUnit(courseUnitId); |
} |
public int doEndTag() throws JspException |
{ |
if (go()) |
{ |
String toPage = bodyContent.getString().trim(); |
JspWriter writer = pageContext.getOut(); |
try |
{ |
writer.write(toPage); |
} |
catch (Exception e) |
{ |
logger.error(e, e); |
throw new JspException(e); |
} |
} |
// Continue processing this page |
return EVAL_PAGE; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/tags/IsStudentOfCourseUnitTag.java |
---|
New file |
0,0 → 1,76 |
package pt.estgp.estgweb.web.tags; |
import org.apache.log4j.Logger; |
import javax.servlet.jsp.tagext.BodyTagSupport; |
import javax.servlet.jsp.JspException; |
import javax.servlet.jsp.JspWriter; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.Globals; |
public class IsStudentOfCourseUnitTag extends BodyTagSupport |
{ |
private static final Logger logger = Logger.getLogger(IsStudentOfCourseUnitTag.class); |
private long courseUnitId; |
public long getCourseUnitId() |
{ |
return courseUnitId; |
} |
public void setCourseUnitId(long courseUnitId) |
{ |
this.courseUnitId = courseUnitId; |
} |
/** |
* |
* @return |
* @throws javax.servlet.jsp.JspException |
*/ |
public int doStartTag() throws JspException |
{ |
if (go()) |
{ |
return EVAL_BODY_BUFFERED; |
} |
else |
return SKIP_BODY; |
} |
public boolean go() |
{ |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
return userSession != null && userSession.getUser() != null && ((UserImpl)((userSession.getUser()))).isStudentfCourseUnit(courseUnitId); |
} |
public int doEndTag() throws JspException |
{ |
if (go()) |
{ |
String toPage = bodyContent.getString().trim(); |
JspWriter writer = pageContext.getOut(); |
try |
{ |
writer.write(toPage); |
} |
catch (Exception e) |
{ |
logger.error(e, e); |
throw new JspException(e); |
} |
} |
// Continue processing this page |
return EVAL_PAGE; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/tags/HasRoleTag.java |
---|
42,7 → 42,17 |
public boolean go() |
{ |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
return userSession != null && userSession.getUser() != null && userSession.getUser().hasRole(role); |
if(userSession != null && userSession.getUser() != null) |
{ |
String[] roles = role.split(","); |
for(String role: roles) |
{ |
if(userSession.getUser().hasRole(role)) |
return true; |
} |
} |
return false; |
} |
public int doEndTag() throws JspException |
/impl/src/java/pt/estgp/estgweb/web/tags/CantManageTag.java |
---|
84,10 → 84,10 |
{ |
boolean valid = Boolean.parseBoolean(this.valid); |
IValid iValid = (IValid) owned; |
return owned != null && userSession.getUser() != null && (iValid.isValid() == valid && owned.isOwnedBy(userSession.getUser()) || (userSession.getUser()).isSuperuserOrAdmin()); |
return owned != null && userSession.getUser() != null && (iValid.isValid() == valid && owned.isOwnedBy(userSession.getUser(),false) || (userSession.getUser()).isSuperuserOrAdmin()); |
} |
else |
return owned != null && userSession.getUser() != null && (owned.isOwnedBy(userSession.getUser()) || (userSession.getUser()).isSuperuserOrAdmin()); |
return owned != null && userSession.getUser() != null && (owned.isOwnedBy(userSession.getUser(),false) || (userSession.getUser()).isSuperuserOrAdmin()); |
} |
/impl/src/java/pt/estgp/estgweb/web/utils/RequestUtils.java |
---|
22,6 → 22,8 |
{ |
public static String getRequester(HttpServletRequest request, HttpServletResponse response) throws NoCookiesException |
{ |
if(request == null) |
return "unknown"; |
if (request.getCookies() == null || request.getCookies().length == 0) |
{ |
Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, request.getSession().getId()); |
/impl/src/java/pt/estgp/estgweb/web/form/courses/CourseForm.java |
---|
New file |
0,0 → 1,53 |
package pt.estgp.estgweb.web.form.courses; |
import pt.estgp.estgweb.web.form.ApplicationForm; |
import pt.estgp.estgweb.web.form.commons.TeachersForm; |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.utils.DatesUtils; |
import java.util.List; |
import org.apache.struts.upload.FormFile; |
/** |
* @author Jorge Machado |
* @date 25/Jun/2008 |
* @see pt.estgp.estgweb.web.form.courses |
*/ |
public class CourseForm extends TeachersForm |
{ |
private CourseView courseView; |
private FormFile studiesPlan; |
public CourseForm() |
{ |
courseView = new CourseView(); |
} |
public CourseView getCourseView() |
{ |
return courseView; |
} |
public void setCourseView(CourseView courseView) |
{ |
this.courseView = courseView; |
} |
public List<String> getImportYears() |
{ |
return DatesUtils.getImportYears(5); |
} |
public FormFile getStudiesPlan() |
{ |
return studiesPlan; |
} |
public void setStudiesPlan(FormFile studiesPlan) |
{ |
this.studiesPlan = studiesPlan; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/form/courseunits/CourseUnitsForm.java |
---|
4,10 → 4,13 |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.upload.FormFile; |
import pt.estgp.estgweb.web.form.AddRolesForm; |
import pt.estgp.estgweb.web.form.ApplicationForm; |
import pt.estgp.estgweb.web.form.commons.TeachersForm; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView; |
import pt.estgp.estgweb.domain.views.UserView; |
import pt.estgp.estgweb.domain.views.CourseUnitDeliverableView; |
import pt.estgp.estgweb.domain.TeacherImpl; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.utils.DatesUtils; |
20,6 → 23,8 |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.util.List; |
import java.util.ArrayList; |
import java.util.Iterator; |
/** |
* @author Jorge Machado |
27,30 → 32,49 |
* @time 14:28:59 |
* @see pt.estgp.estgweb.web.form.blogs |
*/ |
public class CourseUnitsForm extends AddRolesForm |
public class CourseUnitsForm extends TeachersForm |
{ |
private static final Logger logger = Logger.getLogger(CourseUnitsForm.class); |
CourseUnitView courseUnitView = new CourseUnitView(); |
//aux |
long courseId; |
long id; |
long teacherId; |
int studentCode; |
boolean showNewWorkForm = false; |
FormFile uploadFile; |
//courseunit |
FormFile programFile; |
CourseUnitAssignementView courseUnitAssignementView = new CourseUnitAssignementView(); |
//search |
String textToSearch; |
String searchType = SearchTypeEnum.AllWords.getMessageKey(); |
int page; |
//lists |
List<UserView> teachers = null; |
public CourseUnitsForm(boolean initDeliverables) |
{ |
if(initDeliverables) |
initDeliverables(); |
} |
public CourseUnitsForm() |
{ |
initDeliverables(); |
} |
public void initDeliverables() |
{ |
courseUnitAssignementView.setDeliverables(new ArrayList<CourseUnitDeliverableView>()); |
for(int i = 0; i < 200; i++) |
{ |
courseUnitAssignementView.getDeliverables().add(new CourseUnitDeliverableView()); |
} |
} |
public CourseUnitView getCourseUnitView() |
{ |
return courseUnitView; |
77,6 → 101,16 |
} |
public boolean isShowNewWorkForm() |
{ |
return showNewWorkForm; |
} |
public void setShowNewWorkForm(boolean showNewWorkForm) |
{ |
this.showNewWorkForm = showNewWorkForm; |
} |
public CourseUnitAssignementView getCourseUnitAssignementView() |
{ |
return courseUnitAssignementView; |
161,41 → 195,70 |
this.page = page; |
} |
public void initTeachers(HttpServletRequest request, HttpServletResponse response) |
public FormFile getUploadFile() |
{ |
if(teachers == null) |
{ |
IServiceManager sm = null; |
try |
{ |
sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{Teacher.class}; |
teachers = (List<UserView>) sm.execute(RequestUtils.getRequester(request, response), "LoadUsers", args, names); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
} |
} |
return uploadFile; |
} |
public List<UserView> getTeachers() |
public void setUploadFile(FormFile uploadFile) |
{ |
return teachers; |
this.uploadFile = uploadFile; |
} |
public void setTeachers(List<UserView> teachers) |
public ActionErrors validate(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest) |
{ |
this.teachers = teachers; |
ActionErrors errors = new ActionErrors(); |
return errors; |
} |
public ActionErrors validate(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest) |
public ActionErrors validateCreateAssignement(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest) |
{ |
ActionErrors errors = new ActionErrors(); |
if(courseUnitAssignementView.getDeliverDate() == null || courseUnitAssignementView.getDeliverDate().length() == 0) |
{ |
addMessageWithKeys(errors,httpServletRequest,"errors.required","courseunit.assignement.deliver.date"); |
} |
if(courseUnitAssignementView.getTitle() == null || courseUnitAssignementView.getTitle().trim().length() == 0) |
{ |
addMessageWithKeys(errors,httpServletRequest,"errors.required","courseunit.title"); |
} |
if(uploadFile != null && uploadFile.getFileSize() > 0 && !uploadFile.getFileName().endsWith(".zip")) |
{ |
addMessage(errors,httpServletRequest,"errors.courseunit.assignement.file.type"); |
} |
return errors; |
} |
public ActionErrors validateDeliverWork(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest) |
{ |
ActionErrors errors = new ActionErrors(); |
if(uploadFile == null || uploadFile.getFileSize() == 0) |
{ |
addMessage(errors,httpServletRequest,"errors.courseunit.assignement.deliver.file"); |
} |
if(uploadFile != null && uploadFile.getFileName() !=null && !uploadFile.getFileName().endsWith(".zip")) |
{ |
addMessage(errors,httpServletRequest,"errors.courseunit.assignement.deliver.zip"); |
} |
return errors; |
} |
public void validateUpdateDeliverables() |
{ |
Iterator<CourseUnitDeliverableView> iter = courseUnitAssignementView.getDeliverables().iterator(); |
while (iter.hasNext()) |
{ |
CourseUnitDeliverableView courseUnitDeliverableView = iter.next(); |
if(courseUnitDeliverableView.getId() <= 0) |
{ |
iter.remove(); |
} |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/form/commons/TeachersForm.java |
---|
New file |
0,0 → 1,74 |
package pt.estgp.estgweb.web.form.commons; |
import pt.estgp.estgweb.web.form.ApplicationForm; |
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView; |
import pt.estgp.estgweb.domain.views.UserView; |
import pt.estgp.estgweb.domain.views.CourseUnitDeliverableView; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import pt.estgp.estgweb.utils.DatesUtils; |
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.upload.FormFile; |
import org.apache.struts.action.ActionErrors; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.util.List; |
import java.util.ArrayList; |
import java.util.Iterator; |
/** |
* @author Jorge Machado |
* @date 2/Jun/2008 |
* @time 14:28:59 |
* @see pt.estgp.estgweb.web.form.blogs |
*/ |
public class TeachersForm extends ApplicationForm |
{ |
private static final Logger logger = Logger.getLogger(TeachersForm.class); |
//lists |
List<UserView> teachers = null; |
public TeachersForm() |
{ |
} |
public void initTeachers(HttpServletRequest request, HttpServletResponse response) |
{ |
if(teachers == null) |
{ |
IServiceManager sm; |
try |
{ |
sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{Teacher.class}; |
teachers = (List<UserView>) sm.execute(RequestUtils.getRequester(request, response), "LoadUsers", args, names); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
} |
} |
} |
public List<UserView> getTeachers() |
{ |
if(teachers == null) |
{ |
initTeachers(null,null); |
if(teachers == null) |
teachers = new ArrayList<UserView>(); |
} |
return teachers; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/form/announcements/AnnouncementsForm.java |
---|
28,8 → 28,7 |
private AnnouncementView announcementView; |
private String startDate; |
private String expireDate; |
private String urlProtocol; |
206,15 → 205,15 |
if(httpServletRequest.getParameter("dispatch").equals("addRole") || httpServletRequest.getParameter("dispatch").equals("removeRole")) |
return null; |
ActionErrors errors = new ActionErrors(); |
if(url.contains("http://")) |
if(url != null && url.contains("http://")) |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.http","announcement.linkAnnouncement"); |
if(url.contains("https://")) |
if(url != null && url.contains("https://")) |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.https","announcement.linkAnnouncement"); |
if(url.contains("ftp://")) |
if(url != null && url.contains("ftp://")) |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.ftp","announcement.linkAnnouncement"); |
if(bigImage.getFileSize() != 0 && bigImage.getFileSize()>(Globals.MAX_BIGMAGE_FILE_SIZE_KBYTES*1024)) |
if(bigImage != null && bigImage.getFileSize() != 0 && bigImage.getFileSize()>(Globals.MAX_BIGMAGE_FILE_SIZE_KBYTES*1024)) |
addMessage(errors,httpServletRequest,"announcement.exceed.bigmage.max.size"); |
if(smallImage.getFileSize() != 0 && smallImage.getFileSize()>(Globals.MAX_SMALLIMAGE_FILE_SIZE_KBYTES*1024)) |
if(smallImage != null && smallImage.getFileSize() != 0 && smallImage.getFileSize()>(Globals.MAX_SMALLIMAGE_FILE_SIZE_KBYTES*1024)) |
addMessage(errors,httpServletRequest,"announcement.exceed.smallmage.max.size"); |
if(announcementView.getTitle() == null || announcementView.getTitle().trim().length() == 0) |
addMessageWithKeys(errors,httpServletRequest,"errors.required","announcement.title"); |
/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesController.java |
---|
New file |
0,0 → 1,173 |
package pt.estgp.estgweb.web.controllers.courses; |
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.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.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.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import javax.servlet.ServletException; |
/** |
* @author Jorge Machado |
* @author Fabio Velez |
* @date 26/Fev/2008 |
* @time 18:01:54 |
* @see pt.estgp.estgweb.web |
*/ |
public class CoursesController extends CourseUnitsController |
{ |
private static final Logger logger = Logger.getLogger(CoursesController.class); |
public ActionForward startNew(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
CourseForm cF = (CourseForm) form; |
CourseView cV = cF.getCourseView(); |
request.setAttribute("CourseView",cV); |
cF.setCourseView(cV); |
return mapping.findForward("submit"); |
} |
private void load(CourseForm cF, HttpServletRequest request, HttpServletResponse response) |
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException |
{ |
String code = cF.getCourseView().getCode(); |
long id = cF.getCourseView().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args; |
String serviceName; |
if(code != null) |
{ |
args = new Object[]{code,true}; |
serviceName = "LoadCourseByCode"; |
} |
else |
{ |
args = new Object[]{id,true}; |
serviceName = "LoadCourse"; |
} |
CourseView cV = (CourseView) sm.execute(RequestUtils.getRequester(request, response), serviceName, args, names); |
request.setAttribute("CourseView",cV); |
cF.setCourseView(cV); |
} |
public ActionForward load(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
load((CourseForm) form,request,response); |
return mapping.findForward("load"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward edit(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
load((CourseForm) form,request,response); |
return mapping.findForward("submit"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward submit(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseForm cF = (CourseForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"object"}; |
Object[] args; |
if(cF.getStudiesPlan() == null || cF.getStudiesPlan().getFileSize() <= 0) |
args = new Object[]{cF.getCourseView(),null,null,0,null}; |
else //ring name, int size, String contentType, String extensio |
args = new Object[]{cF.getCourseView(),cF.getStudiesPlan().getInputStream(),cF.getStudiesPlan().getFileName(),cF.getStudiesPlan().getFileSize(),cF.getStudiesPlan().getContentType()}; |
long id = cF.getCourseView().getId(); |
CourseView cV = (CourseView) sm.execute(RequestUtils.getRequester(request, response), "SubmitCourse", args, names); |
request.setAttribute("CourseView",cV); |
cF.setCourseView(cV); |
if(id > 0) |
addMessage(request,"course.updated.success","" + cV.getCode()); |
else |
addMessage(request,"course.created.success","" + cV.getCode()); |
return mapping.getInputForward(); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsAdminController.java |
---|
30,6 → 30,36 |
private static final Logger logger = Logger.getLogger(CourseUnitsAdminController.class); |
public ActionForward createIntranetFolders(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
String tmpFile = (String) sm.execute(RequestUtils.getRequester(request, response), "CreateCourseUnitDirPackage", args, names); |
request.getRequestDispatcher("/tmpStream/" + tmpFile).forward(request,response); |
return null; |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward createOrUpdateAdmin(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
78,7 → 108,7 |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{cUF.getId(),true,true}; |
Object[] args = new Object[]{cUF.getId(),true,true,false}; |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnit", args, names); |
request.setAttribute("CourseUnitView",cV); |
118,6 → 148,8 |
Object[] args = new Object[]{teacherId,courseUnitId}; |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "AddTeacherCourseUnit", args, names); |
if(cV.isNotFound()) |
addError(request,"error.courseunit.teacher.not.found"); |
request.setAttribute("CourseUnitView",cV); |
cUF.setCourseUnitView(cV); |
cUF.initTeachers(request,response); |
155,6 → 187,8 |
Object[] args = new Object[]{studentCode,courseUnitId}; |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "AddStudentCourseUnit", args, names); |
if(cV.isNotFound()) |
addError(request,"error.courseunit.student.not.found"); |
request.setAttribute("CourseUnitView",cV); |
cUF.setCourseUnitView(cV); |
cUF.initTeachers(request,response); |
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsAnnouncementsController.java |
---|
New file |
0,0 → 1,96 |
package pt.estgp.estgweb.web.controllers.courseunits; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import pt.estgp.estgweb.web.controllers.announcements.AnnouncementsController; |
import pt.estgp.estgweb.web.controllers.blogs.BlogsController; |
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm; |
import pt.estgp.estgweb.web.form.blogs.BlogForm; |
import pt.estgp.estgweb.web.form.announcements.AnnouncementsForm; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.filters.exceptions.NotFoundException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterExpressionException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ExecutedFilterException; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException; |
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 org.apache.struts.action.ActionErrors; |
import org.apache.struts.upload.FormFile; |
import org.hibernate.ObjectNotFoundException; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import javax.servlet.ServletException; |
/** |
* @author Jorge Machado |
* @author Fabio Velez |
* @date 26/Fev/2008 |
* @time 18:01:54 |
* @see pt.estgp.estgweb.web |
*/ |
public class CourseUnitsAnnouncementsController extends AnnouncementsController |
{ |
private static final Logger logger = Logger.getLogger(CourseUnitsAnnouncementsController.class); |
private CourseUnitsController courseUnitsController = new CourseUnitsController(); |
public ActionForward save(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
ActionForward forward = super.save(mapping,form,request,response); |
if(forward.getName().equals("success")) |
{ |
AnnouncementsForm aF = (AnnouncementsForm) form; |
CourseUnitsForm cUF = new CourseUnitsForm(false); |
request.setAttribute("CourseUnitsForm",cUF); |
cUF.setCourseUnitView(aF.getAnnouncementView().getCourseUnitView()); |
ActionForward forwardUnit = courseUnitsController.load(mapping,cUF,request,response); |
if(forwardUnit == null) //load forward will be not found because mapping is from another action |
return forward; |
//on error will be found |
return forwardUnit; |
} |
return forward; |
} |
public ActionForward delete(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
AnnouncementView announcementsView = super.load(request,response,new Long(request.getParameter("id"))); |
CourseUnitView courseUnitsView = announcementsView.getCourseUnitView(); |
ActionForward forward = super.delete(mapping,form,request,response); |
if(forward.getName().equals("success")) |
{ |
CourseUnitsForm cUF = new CourseUnitsForm(false); |
request.setAttribute("CourseUnitsForm", cUF); |
cUF.setCourseUnitView(courseUnitsView); |
ActionForward forwardUnit = courseUnitsController.load(mapping,cUF,request,response); |
if(forwardUnit.getName().equals("load")) //load forward will be not found because mapping is from another action |
return forward; |
//on error will be found |
return forwardUnit; |
} |
return forward; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsController.java |
---|
4,12 → 4,18 |
import org.apache.struts.action.ActionForm; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.upload.FormFile; |
import org.hibernate.ObjectNotFoundException; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.filters.exceptions.NotFoundException; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import pt.estgp.estgweb.web.controllers.blogs.BlogsController; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm; |
import pt.estgp.estgweb.web.form.blogs.BlogForm; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException; |
37,21 → 43,21 |
{ |
private static final Logger logger = Logger.getLogger(CourseUnitsController.class); |
private ActionForward loadCourseUnitAndForward(CourseUnitsForm cUF, long id, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response) |
private ActionForward loadCourseUnitAndForward(CourseUnitsForm cUF, long id, boolean initTeachers, boolean initStudents, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response) |
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException |
{ |
CourseUnitView cV = loadCourseUnitView(id, mapping, request, response); |
CourseUnitView cV = loadCourseUnitView(id,initTeachers,initStudents, mapping, request, response); |
cUF.setCourseUnitView(cV); |
request.setAttribute("CourseUnitView", cV); |
return mapping.findForward("load"); |
} |
private CourseUnitView loadCourseUnitView(long id, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response) |
private CourseUnitView loadCourseUnitView(long id, boolean initTeachers, boolean initStudents, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response) |
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{id,false,false}; |
Object[] args = new Object[]{id,initTeachers,initStudents,false}; |
try |
{ |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnit", args, names); |
67,6 → 73,7 |
} |
} |
public ActionForward load(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
76,7 → 83,13 |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
return loadCourseUnitAndForward(cUF, Long.parseLong(request.getParameter("id")), mapping, request, response); |
long id; |
if(cUF.getCourseUnitView() != null && cUF.getCourseUnitView().getId() > 0) |
id = cUF.getCourseUnitView().getId(); |
else |
id = Long.parseLong(request.getParameter("id")); |
return loadCourseUnitAndForward(cUF,id ,true,false, mapping, request, response); |
} |
catch (FilterChainFailedException e) |
{ |
93,6 → 106,40 |
} |
} |
public ActionForward loadStudents(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
long id; |
if(request.getParameter("id")!=null) |
id = Long.parseLong(request.getParameter("id")); |
else |
id = cUF.getCourseUnitView().getId(); |
CourseUnitView cV = loadCourseUnitView(id,false,true, mapping, request, response); |
cUF.setCourseUnitView(cV); |
request.setAttribute("CourseUnitView", cV); |
return mapping.findForward("load.students"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward loadWorks(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
102,7 → 149,7 |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
long id = Long.parseLong(request.getParameter("id")); |
long id = cUF.getCourseUnitView().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{id}; |
139,23 → 186,37 |
public ActionForward createAssignement(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
ActionErrors errors = cUF.validateCreateAssignement(mapping,request); |
if(!errors.isEmpty()) |
{ |
saveErrors(request, errors); |
cUF.setShowNewWorkForm(true); |
return loadWorks(mapping,form,request,response); |
} |
long id = cUF.getCourseUnitView().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"object"}; |
Object[] args = new Object[]{cUF.getCourseUnitAssignementView(), id}; |
String[] names = new String[]{"object","serializable"}; |
Object[] args = new Object[]{cUF.getCourseUnitAssignementView(), id, cUF.getUploadFile().getInputStream(),cUF.getUploadFile().getFileName(),cUF.getUploadFile().getFileSize(),cUF.getUploadFile().getContentType()}; |
try |
{ |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "CreateCourseUnitWork", args, names); |
String service; |
if(cUF.getCourseUnitAssignementView().getId() <= 0) |
service = "CreateCourseUnitWork"; |
else |
service = "EditCourseUnitWork"; |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), service, args, names); |
cUF.setCourseUnitView(cV); |
request.setAttribute("CourseUnitView", cV); |
cUF.setCourseUnitAssignementView(new CourseUnitAssignementView()); |
return mapping.findForward("load.works"); |
} |
catch (ExecutedFilterException e) |
182,6 → 243,147 |
} |
} |
public ActionForward validateInvalidateAssignement(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{cUF.getCourseUnitAssignementView().getId()}; |
try |
{ |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "ValidateInvalidateCourseUnitWork", args, names); |
cUF.setCourseUnitView(cV); |
request.setAttribute("CourseUnitView", cV); |
cUF.setCourseUnitAssignementView(new CourseUnitAssignementView()); |
return mapping.findForward("load.works"); |
} |
catch (ExecutedFilterException e) |
{ |
if (e.getCause() instanceof ObjectNotFoundException) |
{ |
throw new NotFoundException(e.getCause().toString()); |
} |
throw e; |
} |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward deleteAssignement(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{cUF.getCourseUnitAssignementView().getId()}; |
try |
{ |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "DeleteCourseUnitWork", args, names); |
cUF.setCourseUnitView(cV); |
request.setAttribute("CourseUnitView", cV); |
cUF.setCourseUnitAssignementView(new CourseUnitAssignementView()); |
return mapping.findForward("load.works"); |
} |
catch (ExecutedFilterException e) |
{ |
if (e.getCause() instanceof ObjectNotFoundException) |
{ |
throw new NotFoundException(e.getCause().toString()); |
} |
throw e; |
} |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward editAssignement(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
long id = cUF.getCourseUnitView().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{id}; |
try |
{ |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnitWorks", args, names); |
cUF.setCourseUnitView(cV); |
cUF.setShowNewWorkForm(true); |
for(CourseUnitAssignementView aV: cV.getCourseUnitAssignements()) |
{ |
if(cUF.getCourseUnitAssignementView().getId() == aV.getId()) |
{ |
cUF.setCourseUnitAssignementView(aV); |
} |
} |
request.setAttribute("CourseUnitView", cV); |
return mapping.findForward("load.works"); |
} |
catch (ExecutedFilterException e) |
{ |
if (e.getCause() instanceof ObjectNotFoundException) |
{ |
throw new NotFoundException(e.getCause().toString()); |
} |
throw e; |
} |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward update(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
195,7 → 397,7 |
String[] names = new String[]{"object"}; |
Object[] args; |
if(cUF.getProgramFile() == null) |
if(cUF.getProgramFile() == null || cUF.getProgramFile().getFileSize() <= 0) |
args = new Object[]{cUF.getCourseUnitView(),null,null,0,null}; |
else //ring name, int size, String contentType, String extensio |
args = new Object[]{cUF.getCourseUnitView(),cUF.getProgramFile().getInputStream(),cUF.getProgramFile().getFileName(),cUF.getProgramFile().getFileSize(),cUF.getProgramFile().getContentType()}; |
221,5 → 423,147 |
} |
public ActionForward deliverWork(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
ActionErrors errors = cUF.validateDeliverWork(mapping, request); |
if (!errors.isEmpty()) |
{ |
saveErrors(request, errors); |
return loadWorks(mapping,form,request,response); |
} |
IServiceManager sm = ServiceManager.getInstance(); |
FormFile work = cUF.getUploadFile(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{cUF.getCourseUnitAssignementView().getId(),work.getInputStream(),work.getFileName(),work.getContentType(),work.getFileSize()}; |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "DeliverCourseUnitWork", args, names); |
cUF.setCourseUnitView(cV); |
request.setAttribute("CourseUnitView", cV); |
cUF.setCourseUnitAssignementView(new CourseUnitAssignementView()); |
addMessage(request,"courseunit.assignement.deliver.sucess",work.getFileName()); |
return mapping.findForward("load.works"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward updateDeliverables(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
cUF.validateUpdateDeliverables(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable","deliverables"}; |
Object[] args = new Object[]{cUF.getCourseUnitView().getId(),cUF.getCourseUnitAssignementView().getId(), cUF.getCourseUnitAssignementView().getDeliverables()}; |
CourseUnitAssignementView cAV = (CourseUnitAssignementView) sm.execute(RequestUtils.getRequester(request, response), "UpdateCourseUnitDeliverables", args, names); |
cUF.setCourseUnitView(cAV.getCourseUnitView()); |
cUF.setCourseUnitAssignementView(cAV); |
request.setAttribute("CourseUnitView", cAV.getCourseUnitView()); |
request.setAttribute("CourseUnitAssignementView", cAV); |
return mapping.findForward("load.assignement"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward loadAssignement(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
FormFile work = cUF.getUploadFile(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{cUF.getCourseUnitAssignementView().getId()}; |
CourseUnitAssignementView cAV = (CourseUnitAssignementView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnitWorkAssignement", args, names); |
cUF.setCourseUnitView(cAV.getCourseUnitView()); |
cUF.setCourseUnitAssignementView(cAV); |
request.setAttribute("CourseUnitView", cAV.getCourseUnitView()); |
request.setAttribute("CourseUnitAssignementView", cAV); |
return mapping.findForward("load.assignement"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward startBlog(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
{ |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{cUF.getCourseUnitView().getId()}; |
CourseUnitView cUV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "StartCourseUnitBlog", args, names); |
cUF.setCourseUnitView(cUV); |
request.setAttribute("CourseUnitView", cUV); |
BlogForm bForm = new BlogForm(); |
bForm.setBlogView(new BlogView()); |
bForm.getBlogView().setId(cUV.getBlog().getId()); |
ActionForward forward = new BlogsController().load(mapping,bForm,request,response); |
if(forward.getName().equals("load")) |
return mapping.findForward("load.blog"); |
else |
return forward; |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/blogs/BlogServlet.java |
---|
40,7 → 40,7 |
try |
{ |
id = Long.parseLong(identifier.trim()); |
request.getRequestDispatcher("/startLoadBlog.do?id=" + id).forward(request, response); |
request.getRequestDispatcher("/startLoadBlog.do?blogView.id=" + id).forward(request, response); |
} |
catch (NumberFormatException e) |
{ |
/impl/src/java/pt/estgp/estgweb/web/controllers/blogs/BlogsController.java |
---|
61,6 → 61,7 |
return mapping.findForward("load"); |
} |
/** |
* Load and forward a blog given a name |
* @param name |
173,6 → 174,8 |
if (!errors.isEmpty()) |
{ |
saveErrors(request, errors); |
BlogView bV = loadBlogView(blogForm.getBlogView().getId(), mapping, request, response); |
request.setAttribute("BlogView", bV); |
return mapping.findForward("submit"); |
} |
219,7 → 222,13 |
{ |
try |
{ |
return loadBlogAndForward(Long.parseLong(request.getParameter("id")), mapping, request, response); |
BlogForm bf = (BlogForm) form; |
long id; |
if(request.getParameter("id") !=null) |
id = Long.parseLong(request.getParameter("id")); |
else |
id = bf.getBlogView().getId(); |
return loadBlogAndForward(id, mapping, request, response); |
} |
catch (FilterChainFailedException e) |
{ |
391,6 → 400,7 |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{new Long(request.getParameter("id"))}; |
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadEditBlog", args, names); |
request.setAttribute("BlogView", bV); |
BlogForm blogForm = (BlogForm) form; |
blogForm.setBlogView(bV); |
blogForm.setSelectedRoles(bV.getTargetRoles()); |
445,9 → 455,9 |
} |
public ActionForward validatePost(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/AnnouncementsController.java |
---|
18,6 → 18,8 |
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 javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
52,7 → 54,7 |
AnnouncementsForm announcementForm = (AnnouncementsForm) form; |
AnnouncementView view = announcementForm.getAnnouncementView(); |
String finalUrl = ""; |
if (!announcementForm.getUrl().equals("")) |
if (announcementForm.getUrl() != null && !announcementForm.getUrl().equals("")) |
{ |
finalUrl = announcementForm.getUrlProtocol() + announcementForm.getUrl(); |
view.setUrl(finalUrl); |
62,13 → 64,13 |
view.setUrl(null); |
} |
if (announcementForm.getBigImage().getFileSize() != 0) |
if (announcementForm.getBigImage() != null && announcementForm.getBigImage().getFileSize() != 0) |
{ |
FormFile image = announcementForm.getBigImage(); |
i = DomainUtils.getNewImage(image,view.getTitle()); |
FormFile image = announcementForm.getBigImage(); |
i = DomainUtils.getNewImage(image,view.getTitle()); |
} |
if (announcementForm.getSmallImage().getFileSize() != 0) |
if (announcementForm.getSmallImage() != null && announcementForm.getSmallImage().getFileSize() != 0) |
{ |
FormFile smallImage = announcementForm.getSmallImage(); |
i2 = DomainUtils.getNewImage(smallImage,view.getTitle()); |
87,7 → 89,7 |
else |
aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request, response), "EditAnnouncement", args, names); |
announcementForm.setAnnouncementView(aV); |
String user = ""; |
String fromAction = ""; |
if(request.getParameter("from")!=null && request.getParameter("from").length() > 0) |
214,6 → 216,15 |
} |
} |
protected AnnouncementView load(HttpServletRequest request, HttpServletResponse response, long id) |
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{id}; |
return (AnnouncementView) sm.execute(RequestUtils.getRequester(request, response), "LoadAnnouncementView", args, names); |
} |
public ActionForward load(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
223,10 → 234,7 |
try |
{ |
String id = request.getParameter("id"); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{new Long(id)}; |
AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request, response), "LoadAnnouncementView", args, names); |
AnnouncementView announcementView = load(request,response,Long.parseLong(id)); |
request.setAttribute("Announcement", announcementView); |
return mapping.findForward("load"); |
} |
/impl/src/doc/projecto.eap.xml |
---|
File deleted |
/impl/src/doc/intranetresources/intranetpastas.zip |
---|
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/doc/listagemDosPortais.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/doc/planoTrabalho.xls |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/impl/src/hbm/pt/estgp/estgweb/domain/GenericUser.hbm.xml |
---|
59,7 → 59,7 |
<meta attribute="scope-class">public abstract</meta> |
<property name="sigesCode" type="int"/> |
<property name="userNameNetpa" type="string"/> |
<set name="subscribedUnits" lazy="true"> |
<set name="subscribedUnits" lazy="true" order-by="courseUnitId"> |
<key column="studentId"/> |
<many-to-many class="pt.estgp.estgweb.domain.CourseUnit" column="courseUnitId"/> |
</set> |
77,6 → 77,14 |
<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> |
/impl/src/hbm/pt/estgp/estgweb/domain/Blog.hbm.xml |
---|
15,6 → 15,7 |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="string" unique="true" index="nameIndex"/> |
<property name="title" type="string"/> |
<property name="type" type="string"/> |
<property name="description" type="text"/> |
<property name="targetRoles" type="string"/> |
<property name="internal" type="boolean"/> |
31,7 → 32,7 |
<meta attribute="extends">pt.estgp.estgweb.domain.BlogImpl</meta> |
<meta attribute="scope-class">public abstract</meta> |
<property name="courseUnitInternal" type="boolean" /> |
<many-to-one name="courseUnit" class="pt.estgp.estgweb.domain.CourseUnit" lazy="proxy" outer-join="false"/> |
<many-to-one name="courseUnit" class="pt.estgp.estgweb.domain.CourseUnit" lazy="proxy" outer-join="true"/> |
<subclass name="pt.estgp.estgweb.domain.CourseUnitBlogImpl" discriminator-value="CourseUnitBlogImpl"/> |
</subclass> |
</subclass> |
/impl/src/hbm/pt/estgp/estgweb/domain/Course.hbm.xml |
---|
21,7 → 21,9 |
<property name="externalSiteServer" type="string"/> |
<property name="externalSitePath" type="string"/> |
<property name="degree" type="string"/> |
<many-to-one name="coordinator" class="pt.estgp.estgweb.domain.User" outer-join="false" lazy="proxy"/> |
<property name="studiesPlan" type="string" index="studiesPlanIndex"/> |
<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"> |
<key column="course_id"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUserAssociation"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml |
---|
21,17 → 21,17 |
<property name="courseYear" type="string"/> |
<property name="importYear" type="string" index="importYearIndex"/> |
<property name="institutionCode" type="string" /> |
<property name="pathIntranet" type="string" /> |
<property name="normalizedName" type="string" /> |
<property name="objectives" type="text"/> |
<property name="programStreamId" type="string"/> |
<property name="status" type="boolean" /> |
<set name="blogs" cascade="delete" lazy="true" order-by="name desc"> |
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="false" outer-join="true"/> |
<set name="blogs" cascade="delete" lazy="true" order-by="saveDate asc"> |
<key column="courseUnit"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitBlog" /> |
</set> |
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="false" outer-join="true"/> |
<set name="teachers" lazy="true" table="teachedunits"> |
<set name="teachers" lazy="true" table="teachedUnits"> |
<key column="courseUnitId"/> |
<many-to-many class="pt.estgp.estgweb.domain.TeacherImpl" column="teacherId"/> |
</set> |
47,7 → 47,7 |
<key column="courseUnit"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitQuestion" /> |
</set> |
<set name="assignements" cascade="delete" lazy="true" order-by="saveDate desc"> |
<set name="assignements" cascade="delete" lazy="true" order-by="deliverDate desc"> |
<key column="courseUnit"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitAssignement"/> |
</set> |
84,8 → 84,13 |
<property name="lateDelivers" type="boolean"/> |
<property name="title" type="string"/> |
<property name="description" type="text"/> |
<property name="repositoryStream" type="string" index="repositoryStreamIndex"/> |
<property name="status" type="boolean"/> |
<many-to-one name="courseUnit" class="pt.estgp.estgweb.domain.CourseUnit" lazy="false" outer-join="true"/> |
<set name="deliverables" cascade="delete" lazy="true" order-by="deliverDate asc"> |
<key column="courseUnitAssignement"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitDeliverable"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.CourseUnitAssignementImpl" discriminator-value="CourseUnitAssignementImpl"/> |
</class> |
98,7 → 103,10 |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="deliverableFilePath" type="string"/> |
<property name="deliverDate" type="timestamp"/> |
<property name="grade" type="string"/> |
<property name="obs" type="text"/> |
<property name="deliverableRepositoryStream" type="string" index="deliverableRepositoryStreamIndex"/> |
<many-to-one name="courseUnitAssignement" class="pt.estgp.estgweb.domain.CourseUnitAssignement" lazy="false" outer-join="true"/> |
<many-to-one name="student" class="pt.estgp.estgweb.domain.Student" lazy="false" outer-join="true"/> |
<subclass name="pt.estgp.estgweb.domain.CourseUnitDeliverableImpl" discriminator-value="CourseUnitDeliverableImpl"/> |
/impl/src/web/imgs/closedboxNeg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/imgs/openedboxNeg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/imgs/todo.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/imgs/todoMini.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/admin/courses/course.jsp |
---|
New file |
0,0 → 1,134 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ 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" %> |
<jsp:useBean id="CourseView" type="pt.estgp.estgweb.domain.views.CourseView" scope="request"/> |
<html:form action="/user/courseControllerFromServiceZone" enctype="multipart/form-data"> |
<input type="hidden" name="dispatch" value="submit"/> |
<html:hidden property="courseView.id"/> |
<table class="form"> |
<tr> |
<th> |
<bean:message key="course.code"/> |
</th> |
<td> |
<html:text property="courseView.code"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="name"/> |
</th> |
<td> |
<html:text property="courseView.name"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="course.degree"/> |
</th> |
<td> |
<html:select property="courseView.degree"> |
<html:option value="B">Bacharlato</html:option> |
<html:option value="L">Lincenciatura</html:option> |
<html:option value="M">Mestrado</html:option> |
<html:option value="P">Pós Graduação</html:option> |
</html:select> |
* SIGES: <bean:write name="CourseForm" property="courseView.degree"/> - Confirmar Mestrados e Pos graduacoes e informar equipa de desenvolvimento |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="course.importYear"/> |
</th> |
<td> |
<html:select property="courseView.importYear"> |
<logic:iterate id="item" name="CourseForm" property="importYears"> |
<html:option value="${item}">${item}</html:option> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="course.institutionalCode"/> |
</th> |
<td> |
<html:text property="courseView.institutionalCode"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="course.description"/> |
</th> |
<td> |
<html:textarea property="courseView.description"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="course.coordinator"/> |
</th> |
<td> |
<html:select property="courseView.coordinator.id"> |
<html:option value="0"> |
<bean:message key="none"/> |
</html:option> |
<logic:present name="CourseForm" property="teachers"> |
<logic:iterate id="teacher" name="CourseForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<html:option value="${teacher.id}"> |
(${teacher.code}) ${teacher.name} |
</html:option> |
</logic:iterate> |
</logic:present> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="course.director"/> |
</th> |
<td> |
<html:select property="courseView.director.id"> |
<html:option value="0"> |
<bean:message key="none"/> |
</html:option> |
<logic:present name="CourseForm" property="teachers"> |
<logic:iterate id="teacher" name="CourseForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<html:option value="${teacher.id}"> |
(${teacher.code}) ${teacher.name} |
</html:option> |
</logic:iterate> |
</logic:present> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="course.studies.plan"/> |
</th> |
<td> |
<html:file property="studiesPlan"/> |
<logic:present name="CourseView" property="studiesPlan"> |
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseView.studiesPlanStreamId}"><bean:message key="course.studies.plan"/></a> (${CourseView.studiesPlanSizeKb} Kb - ${CourseView.studiesPlanDate}) |
</logic:present> |
<logic:notPresent name="CourseView" property="studiesPlan"> |
<bean:message key="course.studies.plan.not.available"/> |
</logic:notPresent> |
</td> |
</tr> |
<tr class="buttons"> |
<td colspan="2"> |
<input type="button" |
onclick="set(this.form,'submit');this.form.submit()" |
value="<bean:message key="confirm"/>"/> |
</td> |
</tr> |
</table> |
</html:form> |
/impl/src/web/admin/courseunits/courseunit.jsp |
---|
1,3 → 1,8 |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ 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" %> |
6,126 → 11,146 |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
List<CourseView> courseViews = (List<CourseView>) sm.execute(RequestUtils.getRequester(request, response), "LoadCourses", args, names); |
request.setAttribute("Courses", courseViews); |
%> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<html:errors/> |
<jomm:messages/> |
<html:form styleClass="form" action="/user/courseUnitControllerAdminFromServiceZone" enctype="multipart/form-data"> |
<input type="hidden" name="dispatch" value="createOrUpdateAdmin"/> |
<html:hidden property="courseUnitView.id"/> |
<html:hidden property="id"/> |
<table> |
<tr> |
<th> |
<bean:message key="courseunit.name"/> |
</th> |
<td> |
<html:text styleClass="text" property="courseUnitView.name"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.code"/> |
</th> |
<td> |
<html:text styleClass="text" property="courseUnitView.code"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.semestre"/> |
</th> |
<td> |
<html:select property="courseUnitView.semestre"> |
<html:option value="S1">S1</html:option> |
<html:option value="S2">S2</html:option> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.importYear"/> |
</th> |
<td> |
<html:select property="courseUnitView.importYear"> |
<logic:iterate id="item" name="CourseUnitsForm" property="importYears"> |
<html:option value="${item}">${item}</html:option> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.teachers"/> |
</th> |
<td> |
<html:select property="teacherId"> |
<logic:present name="CourseUnitsForm" property="teachers"> |
<logic:iterate id="teacher" name="CourseUnitsForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<jomm:option itemName="teacher" itemProperty="id" comparableObjectName="CourseUnitsForm" |
comparableObjectProperty="teacherId"> |
(${teacher.code}) ${teacher.name} |
</jomm:option> |
</logic:iterate> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addTeacher');this.form.submit();"> |
</logic:present> |
</html:select> |
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0"> |
<table class="dataTable removeButton"> |
<logic:iterate id="userView" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<th> |
${userView.code} |
</th> |
<th> |
${userView.name} |
</th> |
<td><input type="button" class="removeButton" |
onclick="CourseUnitsForm.id.value='${userView.id}';set(this.form,'removeTeacher');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
</logic:greaterThan> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.students"/> |
</th> |
<td> |
<html:text styleClass="text" property="studentCode"/> |
<input type="hidden" name="dispatch" value="createOrUpdateAdmin"> |
<html:hidden property="courseUnitView.id"/> |
<html:hidden property="id"/> |
<table> |
<tr> |
<th> |
<bean:message key="courseunit.name"/> |
</th> |
<td> |
<html:text styleClass="text" property="courseUnitView.name"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.course"/> |
</th> |
<td> |
<html:select property="courseUnitView.courseId"> |
<logic:iterate id="course" name="Courses" type="pt.estgp.estgweb.domain.views.CourseView"> |
<html:option value="${course.id}">(${course.code}) ${course.name}</html:option> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.code"/> |
</th> |
<td> |
<html:text styleClass="text" property="courseUnitView.code"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.semestre"/> |
</th> |
<td> |
<html:select property="courseUnitView.semestre"> |
<html:option value="S1">S1</html:option> |
<html:option value="S2">S2</html:option> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.importYear"/> |
</th> |
<td> |
<html:select property="courseUnitView.importYear"> |
<logic:iterate id="item" name="CourseUnitsForm" property="importYears"> |
<html:option value="${item}">${item}</html:option> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.teachers"/> |
</th> |
<td> |
<html:select property="teacherId"> |
<logic:present name="CourseUnitsForm" property="teachers"> |
<logic:iterate id="teacher" name="CourseUnitsForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<jomm:option itemName="teacher" itemProperty="id" comparableObjectName="CourseUnitsForm" |
comparableObjectProperty="teacherId"> |
(${teacher.code}) ${teacher.name} |
</jomm:option> |
</logic:iterate> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addStudent');this.form.submit();"> |
<logic:greaterThan name="CourseUnitView" property="studentsSize" value="0"> |
<table class="dataTable removeButton"> |
<logic:iterate id="userView" name="CourseUnitView" property="students" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<th> |
${userView.code} |
</th> |
<th> |
${userView.username} |
</th> |
<th> |
${userView.name} |
</th> |
<th> |
${userView.email} |
</th> |
<th> |
${userView.address} |
</th> |
<td><input type="button" class="removeButton" |
onclick="CourseUnitsForm.id.value='${userView.code}';set(this.form,'removeStudent');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
</logic:greaterThan> |
</td> |
</tr> |
onclick="set(this.form,'addTeacher');this.form.submit();"> |
</logic:present> |
</html:select> |
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0"> |
<table class="dataTable removeButton"> |
<logic:iterate id="userView" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<th> |
${userView.code} |
</th> |
<th> |
${userView.name} |
</th> |
<td><input type="button" class="removeButton" |
onclick="CourseUnitsForm.id.value='${userView.id}';set(this.form,'removeTeacher');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
</logic:greaterThan> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.students"/> |
</th> |
<td> |
<html:text styleClass="text" property="studentCode"/> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addStudent');this.form.submit();"> |
<logic:greaterThan name="CourseUnitView" property="studentsSize" value="0"> |
<table class="dataTable removeButton"> |
<logic:iterate id="userView" name="CourseUnitView" property="students" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<th> |
${userView.code} |
</th> |
<th> |
${userView.username} |
</th> |
<th> |
${userView.name} |
</th> |
<th> |
${userView.email} |
</th> |
<th> |
${userView.address} |
</th> |
<td><input type="button" class="removeButton" |
onclick="CourseUnitsForm.id.value='${userView.code}';set(this.form,'removeStudent');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
</logic:greaterThan> |
</td> |
</tr> |
</table> |
<input type="button" onclick="set(form,'createOrUpdateAdmin');form.submit()" value="<bean:message key="confirm"/>"> |
</table> |
<input type="button" onclick="set(form,'createOrUpdateAdmin');form.submit()" value="<bean:message key="confirm"/>"> |
</html:form> |
/impl/src/web/admin/blogs/submitBlog.jsp |
---|
25,7 → 25,7 |
%> |
<baco:isNotAdmin> |
<p></p><bean:message key="blog.intro.message"/></p> |
<p><bean:message key="blog.intro.message"/></p> |
</baco:isNotAdmin> |
<html:form action="${user}/blogsController${fromAction}${from}" enctype="multipart/form-data"> |
<html:hidden property="role"/> |
50,6 → 50,23 |
</td> |
</tr> |
</baco:isAdmin> |
<logic:present name="BlogForm" property="blogView.courseUnitView"> |
<tr> |
<th> |
<bean:message key="blog.courseunit.internal"/> |
</th> |
<td> |
<html:select property="blogView.courseUnitInternal"> |
<html:option value="true"> |
<bean:message key="yes"/> |
</html:option> |
<html:option value="false"> |
<bean:message key="no"/> |
</html:option> |
</html:select> |
</td> |
</tr> |
</logic:present> |
<tr> |
<th> |
<bean:message key="blog.autoValidation"/> |
/impl/src/web/admin/blogs/topnavCreateBlog.jsp |
---|
2,9 → 2,17 |
<%@page pageEncoding="UTF-8"%> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<jsp:useBean id="BlogForm" type="pt.estgp.estgweb.web.form.blogs.BlogForm" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/Welcome.do", "Home"); |
topNav.addNavPlace(null, "submit.blog"); |
if(BlogForm.getBlogView().getCourseUnitView() != null) |
{ |
topNav.addNavPlace(null, "blog.courseunit", BlogForm.getBlogView().getCourseUnitView().getName()); |
} |
else |
{ |
topNav.addNavPlace(null, "submit.blog"); |
} |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/admin/announcements/submitTodoAnnouncement.jsp |
---|
New file |
0,0 → 1,164 |
<%@ page import="pt.estgp.estgweb.Globals" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<jsp:useBean id="AnnouncementsForm" type="pt.estgp.estgweb.web.form.announcements.AnnouncementsForm" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<jomm:messages/> |
<html:errors/> |
<% |
String fromAction = ""; |
String from = ""; |
String user = ""; |
if (request.getParameter("from") != null) |
{ |
user = "/user"; |
fromAction = "From" + request.getParameter("from"); |
from = "?from=" + request.getParameter("from"); |
} |
request.setAttribute("from", from); |
request.setAttribute("user", user); |
request.setAttribute("fromAction", fromAction); |
%> |
<html:form action="${user}/submitTodoAnnouncement${fromAction}${from}" enctype="multipart/form-data"> |
<html:hidden property="role"/> |
<html:hidden property="announcementView.id"/> |
<html:hidden property="smallImageStr"/> |
<html:hidden property="bigImageStr"/> |
<html:hidden property="announcementView.internal" value="true"/> |
<html:hidden property="announcementView.type" value="todo"/> |
<input type="hidden" name="dispatch" value="removeRole"> |
<table class="form"> |
<baco:isAdmin> |
<tr> |
<th> |
<bean:message key="announcement.status"/> |
</th> |
<td> |
<html:select property="announcementView.status"> |
<html:option value="true"> |
<bean:message key="yes"/> |
</html:option> |
<html:option value="false"> |
<bean:message key="no"/> |
</html:option> |
</html:select> |
</td> |
</tr> |
</baco:isAdmin> |
<logic:present name="UserSession" property="user"> |
<logic:notEmpty name="UserSession" property="user.ownerRoles"> |
<tr> |
<th> |
<bean:message key="announcement.sendAnnouncementLike"/> |
</th> |
<td> |
<html:select property="announcementView.choosedOwnerRole"> |
<logic:iterate id="item" name="UserSession" property="user.ownerRoles"> |
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm" |
comparableObjectProperty="announcementView.choosedOwnerRole"> |
<bean:message key="user.role.${item}"/> |
</jomm:option> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
</logic:notEmpty> |
</logic:present> |
<tr> |
<th> |
<bean:message key="announcement.target.roles"/> |
</th> |
<td> |
<html:select property="targetRolesStr"> |
<logic:present name="AnnouncementsForm" property="targetRoles"> |
<logic:iterate id="item" name="AnnouncementsForm" property="targetRoles"> |
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm" |
comparableObjectProperty="targetRolesStr"> |
<jomm:message patternMessage="user.role.{0}" name0="item"/> |
</jomm:option> |
</logic:iterate> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addRole');this.form.submit();"> |
</logic:present> |
</html:select> |
<logic:present name="AnnouncementsForm" property="selectedRoles"> |
<logic:notEmpty name="AnnouncementsForm" property="selectedRoles"> |
<table class="dataTable removeButton"> |
<logic:iterate id="item" name="AnnouncementsForm" property="selectedRoles"> |
<tr> |
<th> |
<jomm:message patternMessage="user.role.{0}" name0="item"/> |
</th> |
<td><input type="button" class="removeButton" |
onclick="AnnouncementsForm.role.value='${item}';set(this.form,'removeRole');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
</logic:notEmpty> |
</logic:present> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.title"/> |
* |
</th> |
<td> |
<html:text styleClass="text" property="announcementView.title" maxlength="250"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.expireDate"/> |
* |
</th> |
<td> |
<a href="javascript:cal.select(getObjectById('expireDate'),'anchor2','yyyy/MM/dd')" name="anchor2" id="anchor2"><html:text styleClass="date" property="expireDate" styleId="expireDate" readonly="true"/></a> |
<input type="button" class="removeButton" onClick="AnnouncementsForm.expireDate.value=null"> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.linkAnnouncement"/> |
</th> |
<td> |
<html:select property="urlProtocol"> |
<html:option value="http://">Http://</html:option> |
<html:option value="ftp://">ftp://</html:option> |
<html:option value="https://">Https://</html:option> |
</html:select> |
<html:text property="url" maxlength="250"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.text"/> |
* |
</th> |
<td> |
<html:textarea styleClass="textarea" property="announcementView.text"/> |
</td> |
</tr> |
<tr class="buttons"> |
<td colspan="2"> |
<input type="button" |
onclick="set(this.form,'save');this.form.submit()" |
value="<bean:message key="confirm"/>"/> |
</td> |
</tr> |
</table> |
</html:form> |
/impl/src/web/admin/announcements/topnavEditAnnouncement.jsp |
---|
7,6 → 7,6 |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/Welcome.do", "Home"); |
topNav.addNavPlace(null, "submit.announcement"); |
topNav.addNavPlace(null, "submit.todo.announcement"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/admin/announcements/topnavCreateTodoAnnouncement.jsp |
---|
New file |
0,0 → 1,12 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="java.util.*"%> |
<%@ page import="jomm.web.utils.NavPlace" %> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/Welcome.do", "Home"); |
topNav.addNavPlace(null, "submit.announcement"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/admin/announcements/submitAnnouncement.jsp |
---|
75,10 → 75,17 |
<html:select property="announcementView.type"> |
<logic:present name="AnnouncementsForm" property="announcementTypes"> |
<logic:iterate id="item" name="AnnouncementsForm" property="announcementTypes"> |
<% |
if(!Globals.ANNOUNCEMENT_NOT_STANDARD.contains(item)) |
{ |
%> |
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm" |
comparableObjectProperty="announcementView.type"> |
<bean:message key="announcements.type.${item}"/> |
</jomm:option> |
<% |
} |
%> |
</logic:iterate> |
</logic:present> |
</html:select> |
/impl/src/web/admin/announcements/topnavEditTodoAnnouncement.jsp |
---|
New file |
0,0 → 1,12 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="java.util.*"%> |
<%@ page import="jomm.web.utils.NavPlace" %> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/Welcome.do", "Home"); |
topNav.addNavPlace(null, "submit.todo.announcement"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/css/style.css |
---|
4,27 → 4,37 |
FONT-SIZE: 11px; |
} |
.homebox img |
{ |
} |
.homebox img:hover |
{ |
cursor:pointer; |
} |
/*Errors and Warnings*/ |
.statusOK { |
.statusOK, .active { |
padding: 2px; |
list-style-type: none; |
color: green; |
background-color: #FFEEDD; |
} |
.statusERROR * { |
.statusERROR *, .statusERROR, .inactive { |
color: red; |
} |
.statusWARNING * { |
.statusWARNING *, .statusWARNING { |
padding: 2px; |
list-style-type: none; |
color: yellow; |
background-color: black; |
} |
.requiredField * { |
color: red; |
} |
32,6 → 42,8 |
.statusSearch { |
color: lightblue; |
} |
a |
/****************************Text Size*************************************************/ |
72,12 → 84,21 |
text-align: right; |
clear: both; |
margin-top:10px; |
} |
.pFooter a { |
font-style: italic; |
} |
.pFooterSeccao { |
background-color: white; |
font-size: 0.8em; |
border-top: 1px solid #cccccc; |
text-align: left; |
clear: both; |
margin-top:10px; |
} |
#content .pFooter a:hover |
{ |
color:white; |
178,7 → 199,9 |
text-align:left; |
} |
#content a:link, .content a:visited { |
#content a |
/*, .content a:visited*/ |
{ |
color: #4d4d4d; |
} |
194,14 → 217,23 |
VERTICAL-ALIGN: top; |
} |
#contentCourseUnit |
#contentCourseUnitIntranet |
{ |
width:100%; |
height:100%; |
height:100%; |
border: #8EC73F solid 1px; |
} |
#contentCourseUnitIntranet #contentCourseUnit |
{ |
padding:10px; |
} |
#contentCourseUnit .seccao |
{ |
border: #8EC73F solid 1px; |
padding:10px; |
} |
.contentPortal { |
border: #8EC73F solid 1px; |
padding:5px; |
287,7 → 319,9 |
#footer #sponsors { |
} |
#footer a:link, #footer a:visited { |
#footer a |
/*, #footer a:visited */ |
{ |
color: #4d4d4d; |
} |
467,7 → 501,7 |
padding-left: 10px; |
} |
.block a:link { |
.block a { |
color: #4d4d4d; |
text-decoration: none; |
} |
498,7 → 532,7 |
vertical-align:top; |
} |
.portalAnnouncement a:link, .portalAnnouncement a:visited { |
.portalAnnouncement a { |
margin: 0; |
} |
514,7 → 548,7 |
text-decoration: none; |
} |
.portalAnnouncementText a:link, .portalAnnouncementText a:visited { |
.portalAnnouncementText a { |
color: #4d4d4d; |
} |
563,7 → 597,7 |
margin-bottom: 10px; |
} |
.contentPortal li a:link, .contentPortal a:visited, .contentPortal li { |
.contentPortal li a .contentPortal li { |
color: #4d4d4d; |
} |
680,13 → 714,13 |
margin-top: 1px; |
} |
#flashTopNews h2 a:link, #flashTopNews h2 a:visited { |
#flashTopNews h2 a { |
color: #8EC73F; |
font-weight: bold; |
text-decoration: none; |
} |
#flashTopNews p a:link, #flashTopNews p a:visited { |
#flashTopNews p a{ |
color: #FFFFFF; |
text-decoration: none; |
} |
707,13 → 741,13 |
padding-top: 10px; |
} |
#flashCenterNews h2 a:link, #flashCenterNews h2 a:visited { |
#flashCenterNews h2 a{ |
color: #8EC73F; |
font-weight: bold; |
text-decoration: none; |
} |
#flashCenterNews p a:link, #flashCenterNews p a:visited { |
#flashCenterNews p a { |
color: #4d4d4d; |
text-decoration: none; |
} |
729,12 → 763,12 |
height: 100px; |
} |
#flashBottomNews h2 a:link, #flashBottomNews h2 a:visited { |
#flashBottomNews h2 a { |
color: #8EC73F; |
font-weight: bold; |
} |
#flashBottomNews p a:link, #flashBottomNews p a:visited { |
#flashBottomNews p a { |
color: #4d4d4d; |
} |
763,7 → 797,7 |
text-decoration: none; |
} |
#lastnews li a:link, .linkLeftMenu a:link, .linkRightMenu a:link { |
#lastnews li a, .linkLeftMenu a, .linkRightMenu a { |
color: #4d4d4d; |
} |
834,7 → 868,7 |
color: #793B0D; |
background-color: #FFFFFF; |
border: 0 solid #793B0D; |
font-size: 0.8em; |
font-size: 0.9em; |
font-family: Helvetica, sans-serif; |
vertical-align: top; |
} |
887,7 → 921,6 |
.seccao, .seccao p { |
margin: 10px; |
font-size: 0.95em; |
font-family: Helvetica, sans-serif; |
} |
1203,6 → 1236,10 |
border:1px solid #8ec73f; |
} |
.number |
{ |
text-align:right; |
} |
.messages th, .dataTable th |
{ |
border:1px solid darkgray; |
1358,4 → 1395,19 |
padding-right: 3px; |
padding-left: 3px; |
margin:0; |
} |
} |
.WARNING *, .WARNING p, .WARNING * p, .WARNING, .WARNING a |
{ |
color: yellow; |
background-color: black; |
} |
.WARNING a:hover |
{ |
color: yellow; |
background-color: black; |
} |
/impl/src/web/css/intranet.css |
---|
95,3 → 95,5 |
{ |
COLOR:BLACK; |
} |
/impl/src/web/layout/layout1.jsp |
---|
24,7 → 24,7 |
<div id="header"> |
<tiles:insert attribute="header"/> |
</div> |
<table class="pageDefault"> |
<table class="pageDefault" cellpadding="0" cellspacing="0"> |
<tr> |
<td colspan="2"> |
<tiles:insert attribute="navigationTop"/> |
/impl/src/web/public/courses/topnavCourse.jsp |
---|
New file |
0,0 → 1,11 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<jsp:useBean id="CourseView" type="pt.estgp.estgweb.domain.views.CourseView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/Welcome.do", "Home"); |
topNav.addNavPlace(null, "course", CourseView.getName()); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/public/courses/course.jsp |
---|
New file |
0,0 → 1,41 |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %> |
<%@ page import="java.util.List" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ 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" %> |
<jsp:useBean id="CourseView" type="pt.estgp.estgweb.domain.views.CourseView" scope="request"/> |
<div class="seccao"> |
<h2>${CourseView.name}</h2> |
<table class="dataTable"> |
<tr> |
<th> |
Nome |
</th> |
<td> |
${CourseView.name} |
</td> |
</tr> |
</table> |
</div> |
<div class="seccao"> |
<h2>Unidades Curriculares</h2> |
<ul> |
<logic:iterate id="courseUnitView" name="CourseView" property="courseUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
${courseUnitView.name} |
</li> |
</logic:iterate> |
</ul> |
</div> |
/impl/src/web/public/courses/courses.jsp |
---|
New file |
0,0 → 1,31 |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %> |
<%@ page import="java.util.List" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ 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" %> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
List<CourseView> courseViews = (List<CourseView>) sm.execute(RequestUtils.getRequester(request, response), "LoadCourses", args, names); |
request.setAttribute("Courses", courseViews); |
%> |
<jsp:useBean id="Courses" type="java.util.List" scope="request"/> |
<div class="linkLeftMenu"> |
<div class="listClean"> |
<ul> |
<logic:iterate id="courseView" name="Courses" type="pt.estgp.estgweb.domain.views.CourseView"> |
<li> |
<html:link action="/startLoadCourse?courseView.id=${courseView.id}">${courseView.name}</html:link> |
</li> |
</logic:iterate> |
</ul> |
</div> |
</div> |
/impl/src/web/public/courseunits/topnavCourseUnitBlog.jsp |
---|
New file |
0,0 → 1,13 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/Welcome.do", "Home"); |
topNav.addNavPlace(null, "course", CourseUnitView.getCourseName()); |
topNav.addNavPlace("/startLoadCourseUnit.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace(null, "blog"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/public/courseunits/topnavCourseUnitStudents.jsp |
---|
New file |
0,0 → 1,13 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/Welcome.do", "Home"); |
topNav.addNavPlace(null, "course", CourseUnitView.getCourseName()); |
topNav.addNavPlace("/startLoadCourseUnit.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace(null, "courseunit.students"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/public/announcements/loadTodoAnnouncement.jsp |
---|
New file |
0,0 → 1,46 |
<%@ page import="pt.estgp.estgweb.domain.UserImpl" %> |
<%@ page import="pt.estgp.estgweb.domain.UserSessionImpl" %> |
<%@ page import="pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum" %> |
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<jsp:useBean id="Announcement" type="pt.estgp.estgweb.domain.views.AnnouncementView" scope="request"/> |
<% UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response);%> |
<div class="seccao"> |
<h2>${Announcement.title} |
<baco:canManage name="Announcement"> |
<!--valid="false">--> |
<% |
String fromAction = ""; |
String user = ""; |
if(request.getParameter("from")!=null) |
{ |
user = "/user"; |
fromAction = "From" + request.getParameter("from"); |
} |
request.setAttribute("user",user); |
request.setAttribute("fromAction",fromAction); |
%> |
<html:link action="${user}/startEditAnnouncement${fromAction}?id=${Announcement.id}"> |
<bean:message key="edit"/> |
</html:link> |
<html:link action="${user}/startDeleteAnnouncement${fromAction}?id=${Announcement.id}"> |
<bean:message key="delete"/> |
</html:link> |
</baco:canManage> |
</h2> |
<table> |
<tr> |
<td valign="top"> |
<img width="150px" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imgs/todoMini.jpg"> |
</td> |
<td valign="top">${Announcement.formatedText}</td> |
</tr> |
</table> |
</div> |
/impl/src/web/user/courses/selectCourse.jsp |
---|
New file |
0,0 → 1,34 |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %> |
<%@ page import="java.util.List" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ 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" %> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
List<CourseView> courseViews = (List<CourseView>) sm.execute(RequestUtils.getRequester(request, response), "LoadCourses", args, names); |
request.setAttribute("Courses", courseViews); |
%> |
<jsp:useBean id="Courses" type="java.util.List" scope="request"/> |
<div class="seccao"> |
<h2><bean:message key="course.select.message"/> </h2> |
<div class="form"> |
<html:form action="/user/courseControllerFromServiceZone"> |
<input type="hidden" name="dispatch" value="edit"/> |
<html:select property="courseView.id"> |
<logic:iterate id="course" name="Courses" type="pt.estgp.estgweb.domain.views.CourseView"> |
<html:option value="${course.id}">(${course.code}) ${course.name}</html:option> |
</logic:iterate> |
</html:select> |
<input type="submit" value="<bean:message key="edit"/>"> |
</html:form> |
</div> |
</div> |
/impl/src/web/user/courseunits/courseunitworks.jsp |
---|
1,5 → 1,6 |
<%@ page import="pt.estgp.estgweb.domain.Teacher" %> |
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ 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" %> |
8,116 → 9,283 |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<jsp:useBean id="CourseUnitsForm" type="pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm" scope="request"/> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<div id="contentCourseUnitIntranet"> |
<div id="contentCourseUnit"> |
<html:errors/> |
<jomm:messages/> |
<div class="seccao"> |
<h2><bean:message key="courseunit.works"/></h2> |
<h2> |
<bean:message key="courseunit.works"/> |
<baco:canManage name="CourseUnitView"> |
<a href="javascript:showOrHide('assignements')"><bean:message key="new"/></a> |
</baco:canManage> |
</h2> |
<baco:canManage name="CourseUnitView"> |
<% |
String visibility; |
if(CourseUnitsForm.isShowNewWorkForm()) |
visibility = "position:relative;visibility:visible"; |
else |
visibility = "position:absolute;visibility:hidden"; |
request.setAttribute("visibility",visibility); |
%> |
<html:form styleId="assignements" style="${visibility}" action="/user/courseUnitControllerFromHome" enctype="multipart/form-data"> |
<input type="hidden" name="dispatch" value="createAssignement"> |
<html:hidden property="courseUnitView.id"/> |
<html:hidden property="courseUnitAssignementView.id"/> |
<div class="form blockForm"> |
<table> |
<tr> |
<th> |
<bean:message key="courseunit.title"/> |
</th> |
<td> |
<html:text styleClass="text" property="courseUnitAssignementView.title"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.deliver.date"/> |
</th> |
<td> |
<a href="javascript:cal.select(getObjectById('deliverDate'),'anchor1','yyyy/MM/dd')" name="anchor1" id="anchor1"><html:text styleClass="date" property="courseUnitAssignementView.deliverDate" styleId="deliverDate" readonly="true"/></a> |
<input type="button" class="removeButton" onClick="CourseUnitsForm.deliverDate.value=null"> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.deliver.type"/> |
</th> |
<td> |
<html:select property="courseUnitAssignementView.deliverType"> |
<html:option value="zipfile" key="courseunit.assignement.deliver.type.zipfile"/> |
<html:option value="nofile" key="courseunit.assignement.deliver.type.nofile"/> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.deliver.late.permission"/> |
</th> |
<td> |
<html:select property="courseUnitAssignementView.lateDelivers"> |
<html:option value="true" key="yes"/> |
<html:option value="false" key="no"/> |
</html:select> |
</td> |
</tr> |
<a href="javascript:showOrHide('assignements')">Criar Novo</a> |
<html:form styleId="assignements" style="position:absolute;visibility:hidden;" action="/user/courseUnitControllerFromHome"> |
<input type="hidden" name="dispatch" value="createAssignement"> |
<html:hidden property="courseUnitView.id"/> |
<div class="form blockForm"> |
<table> |
<tr> |
<th> |
<bean:message key="courseunit.title"/> |
</th> |
<td> |
<html:text styleClass="text" property="courseUnitAssignementView.title"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.deliver.date"/> |
</th> |
<td> |
<a href="javascript:cal.select(getObjectById('deliverDate'),'anchor1','yyyy/MM/dd')" name="anchor1" id="anchor1"><html:text styleClass="date" property="courseUnitAssignementView.deliverDate" styleId="deliverDate" readonly="true"/></a> |
<input type="button" class="removeButton" onClick="CourseUnitsForm.deliverDate.value=null"> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.deliver.type"/> |
</th> |
<td> |
<html:select property="courseUnitAssignementView.deliverType"> |
<html:option value="zipfile" key="courseunit.assignement.deliver.type.zipfile"/> |
<html:option value="nofile" key="courseunit.assignement.deliver.type.nofile"/> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.deliver.late.permission"/> |
</th> |
<td> |
<html:select property="courseUnitAssignementView.lateDelivers"> |
<html:option value="true" key="yes"/> |
<html:option value="false" key="no"/> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.description"/> |
</th> |
<td> |
<html:textarea styleClass="textarea" property="courseUnitAssignementView.description"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.status"/> |
</th> |
<td> |
<html:select property="courseUnitAssignementView.status"> |
<html:option value="true"> |
<bean:message key="status.active"/> |
</html:option> |
<html:option value="false"> |
<bean:message key="status.inactive"/> |
</html:option> |
</html:select> |
</td> |
</tr> |
<tr> |
<td colspan="2"> |
<input type="button" onclick="this.form.submit()" value="<bean:message key="confirm"/>"/> |
</td> |
</tr> |
</table> |
</div> |
</html:form> |
<p> |
<logic:notEmpty name="CourseUnitView" property="courseUnitAssignements"> |
<table class="dataTable"> |
<tr> |
<th>Trabalho</th> |
<th>Entregues</th> |
</tr> |
<logic:iterate id="work" name="CourseUnitView" property="courseUnitAssignements" type="pt.estgp.estgweb.domain.views.CourseUnitAssignementView"> |
<tr> |
<th> |
<bean:message key="courseunit.description"/> |
</th> |
<td> |
${work.title} |
<html:textarea styleClass="textarea" property="courseUnitAssignementView.description"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.file"/> |
</th> |
<td> |
${work.delivers} |
<html:file property="uploadFile"/> |
</td> |
</tr> |
</logic:iterate> |
</table> |
<tr> |
<th> |
<bean:message key="courseunit.status"/> |
</th> |
<td> |
<html:select property="courseUnitAssignementView.status"> |
<html:option value="true"> |
<bean:message key="status.active"/> |
</html:option> |
<html:option value="false"> |
<bean:message key="status.inactive"/> |
</html:option> |
</html:select> |
</td> |
</tr> |
<tr> |
<td colspan="2"> |
<input type="button" onclick="this.form.submit()" value="<bean:message key="confirm"/>"/> |
</td> |
</tr> |
</table> |
</div> |
</html:form> |
</baco:canManage> |
<p> |
<logic:notEmpty name="CourseUnitView" property="courseUnitAssignements"> |
<table class="dataTable"> |
<tr> |
<th><bean:message key="courseunit.title"/></th> |
<th><bean:message key="courseunit.assignement.file"/></th> |
<th><bean:message key="courseunit.assignement.deliver.date"/></th> |
<th><bean:message key="courseunit.assignement.deliver.late.permission"/></th> |
<th><bean:message key="courseunit.assignement.deliver.type"/></th> |
<baco:canManage name="CourseUnitView"> |
<% |
request.setAttribute("colspanAssignement",6); |
%> |
<th><bean:message key="courseunit.status"/></th> |
<th><bean:message key="courseunit.assignement.delivers"/></th> |
<th colspan="3"><bean:message key="manage"/></th> |
</baco:canManage> |
<baco:isStudentOfCourseUnit courseUnitId="${CourseUnitView.id}"> |
<% |
request.setAttribute("colspanAssignement",8); |
%> |
<th><bean:message key="courseunit.assignement.deliver"/></th> |
<th><bean:message key="courseunit.assignement.deliver.time"/></th> |
<th><bean:message key="courseunit.assignement.deliver.grade"/></th> |
<th><bean:message key="courseunit.assignement.deliver.obs"/></th> |
</baco:isStudentOfCourseUnit> |
</tr> |
<logic:iterate id="work" name="CourseUnitView" property="courseUnitAssignements" type="pt.estgp.estgweb.domain.views.CourseUnitAssignementView"> |
<tr> |
<td> |
<a href="javascript:showOrHide('assignement${work.id}')">${work.title}</a> |
</td> |
<td> |
<logic:notEmpty name="work" property="workFile"> |
<a target="_blank" href="<%=request.getContextPath()%>/repositoryStream/${work.workFile}">${work.repositoryFile.lastVersion.name} (${work.repositoryFile.lastVersion.sizeKb} Kb)</a> |
</logic:notEmpty> |
<logic:empty name="CourseUnitView" property="courseUnitAssignements"> |
<bean:message key="courseunit.works.zero"/> |
</td> |
<% |
String deliverDateStyleClass; |
if(work.isActive()) |
deliverDateStyleClass = "active"; |
else |
deliverDateStyleClass = "inactive"; |
%> |
<td class="<%=deliverDateStyleClass%> number"> |
${work.deliverDate} |
</td> |
<td> |
<logic:equal value="true" name="work" property="lateDelivers"> |
<bean:message key="yes"/> |
</logic:equal> |
<logic:notEqual value="true" name="work" property="lateDelivers"> |
<bean:message key="no"/> |
</logic:notEqual> |
</td> |
<td> |
<bean:message key="courseunit.assignement.deliver.type.${work.deliverType}"/> |
</td> |
<baco:canManage name="CourseUnitView"> |
<td> |
<logic:equal value="true" name="work" property="status"> |
<bean:message key="status.active"/> |
</logic:equal> |
<logic:notEqual value="true" name="work" property="status"> |
<bean:message key="status.inactive"/> |
</logic:notEqual> |
</td> |
<td class="number"> |
<logic:greaterThan value="0" name="work" property="delivers"> |
<html:link action="/user/startLoadCourseUnitAssignementFromHome?courseUnitAssignementView.id=${work.id}">${work.delivers}</html:link> |
</logic:greaterThan> |
<logic:equal value="0" name="work" property="delivers"> |
${work.delivers} |
</logic:equal> |
</td> |
<td> |
<html:link action="/user/startEditCourseUnitWorksFromHome?courseUnitAssignementView.id=${work.id}&courseUnitView.id=${CourseUnitView.id}"> |
<bean:message key="edit"/> |
</html:link> |
</td> |
<td> |
<a href="<%=request.getContextPath()%>/user/startValidateInvalidateCourseUnitWorksFromHome.do?courseUnitAssignementView.id=${work.id}"> |
<logic:equal value="true" name="work" property="status"> |
<bean:message key="deactivate"/> |
</logic:equal> |
<logic:notEqual value="true" name="work" property="status"> |
<bean:message key="activate"/> |
</logic:notEqual> |
</a> |
</td> |
<% |
String confirmDelete = MessageResources.getMessage(request, "courseunitwork.confirm.delete"); |
request.setAttribute("confirmDelete", confirmDelete); |
%> |
<td> |
<html:link onclick="return confirm('${confirmDelete}')" action="/user/startDeleteCourseUnitWorksFromHome?courseUnitAssignementView.id=${work.id}"> |
<bean:message key="delete"/> |
</html:link> |
</td> |
</baco:canManage> |
<baco:isStudentOfCourseUnit courseUnitId="${CourseUnitView.id}"> |
<td nowrap="nowrap"> |
<% |
if(work.canDeliver(request)) |
{ |
%> |
<html:form action="/user/courseUnitControllerFromHome" enctype="multipart/form-data"> |
<input type="hidden" name="dispatch" value="deliverWork"> |
<html:hidden property="courseUnitAssignementView.id" value="${work.id}"/> |
<html:hidden property="courseUnitView.id" value="${CourseUnitView.id}"/> |
<html:file property="uploadFile"/> |
<logic:notEmpty name="work" property="courseUnitDeliverableView"> |
<input type="submit" value="<bean:message key="replace"/>"/> |
</logic:notEmpty> |
<logic:empty name="work" property="courseUnitDeliverableView"> |
<input type="submit" value="<bean:message key="courseunit.assignement.deliver"/>"/> |
</logic:empty> |
</html:form> |
<% |
} |
%> |
</td> |
<logic:empty name="work" property="courseUnitDeliverableView"> |
<td class="statusWARNING"> |
<bean:message key="courseunit.assignement.deliver.time.no"/> |
</td> |
</logic:empty> |
<logic:notEmpty name="work" property="courseUnitDeliverableView"> |
<logic:equal name="work" property="lateDeliver" value="true"> |
<td class="statusERROR"> |
<bean:message key="courseunit.assignement.deliver.time.late"/> |
</td> |
</logic:equal> |
<logic:notEqual name="work" property="lateDeliver" value="true"> |
<td class="statusOK"> |
<bean:message key="courseunit.assignement.deliver.time.ok"/> |
</td> |
</logic:notEqual> |
</logic:notEmpty> |
<td> |
${work.courseUnitDeliverableView.grade} |
</td> |
<td> |
${work.courseUnitDeliverableView.obs} |
</td> |
</baco:isStudentOfCourseUnit> |
<logic:notEmpty name="work" property="courseUnitDeliverableView"> |
<td> |
<a target="_blank" href="<%=request.getContextPath()%>/repositoryStream/${work.courseUnitDeliverableView.fileStreamId}"><bean:message key="courseunit.assignement.deliver.version"/> (${work.courseUnitDeliverableView.deliverDateStr})</a> |
</td> |
</logic:notEmpty> |
</tr> |
<tr id="assignement${work.id}" style="position:absolute;visibility:hidden;"> |
<td colspan="${colspanAssignement}"> |
${work.description} |
</td> |
</tr> |
</logic:iterate> |
</table> |
</logic:notEmpty> |
<logic:empty name="CourseUnitView" property="courseUnitAssignements"> |
<bean:message key="courseunit.works.zero"/> |
</logic:empty> |
</p> |
</div> |
</div> |
</div> |
/impl/src/web/user/courseunits/blogIntranet.jsp |
---|
New file |
0,0 → 1,14 |
<%@ page import="pt.estgp.estgweb.domain.Teacher" %> |
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<div id="contentCourseUnitIntranet"> |
<jsp:include page="/user/courseunits/blog.jsp"/> |
</div> |
/impl/src/web/user/courseunits/loadAnnouncement.jsp |
---|
New file |
0,0 → 1,16 |
<%@ page import="pt.estgp.estgweb.domain.Teacher" %> |
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<div id="contentCourseUnitIntranet"> |
<div id="contentCourseUnit"> |
<jsp:include page="/public/announcements/loadAnnouncement.jsp"/> |
</div> |
</div> |
/impl/src/web/user/courseunits/courseunitassignement.jsp |
---|
New file |
0,0 → 1,151 |
<%@ page import="pt.estgp.estgweb.domain.Teacher" %> |
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<jsp:useBean id="CourseUnitsForm" type="pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm" scope="request"/> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<jsp:useBean id="CourseUnitAssignementView" type="pt.estgp.estgweb.domain.views.CourseUnitAssignementView" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<div id="contentCourseUnitIntranet"> |
<div id="contentCourseUnit"> |
<html:errors/> |
<jomm:messages/> |
<div class="seccao"> |
<h2> |
<bean:message key="courseunit.assignement" arg0="${CourseUnitAssignementView.title}"/> |
</h2> |
<div class="form blockForm"> |
<table> |
<tr> |
<th> |
<bean:message key="courseunit.title"/> |
</th> |
<td> |
<bean:write name="CourseUnitAssignementView" property="title"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.deliver.date"/> |
</th> |
<td> |
<bean:write name="CourseUnitAssignementView" property="deliverDate"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.deliver.type"/> |
</th> |
<td> |
<bean:message key="courseunit.assignement.deliver.type.${CourseUnitAssignementView.deliverType}"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.deliver.late.permission"/> |
</th> |
<td> |
<logic:equal value="true" name="CourseUnitAssignementView" property="lateDelivers"> |
<bean:message key="yes"/> |
</logic:equal> |
<logic:notEqual value="true" name="CourseUnitAssignementView" property="lateDelivers"> |
<bean:message key="no"/> |
</logic:notEqual> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.description"/> |
</th> |
<td> |
<bean:write name="CourseUnitAssignementView" property="description"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.status"/> |
</th> |
<td> |
<logic:equal value="true" name="CourseUnitAssignementView" property="status"> |
<bean:message key="status.active"/> |
</logic:equal> |
<logic:notEqual value="true" name="CourseUnitAssignementView" property="status"> |
<bean:message key="status.inactive"/> |
</logic:notEqual> |
</td> |
</tr> |
<logic:notEmpty name="CourseUnitAssignementView" property="workFile"> |
<tr> |
<th> |
<bean:message key="courseunit.assignement.file"/> |
</th> |
<td> |
<a target="_blank" href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitAssignementView.workFile}"><bean:message key="courseunit.assignement.file"/></a> |
</td> |
</tr> |
</logic:notEmpty> |
</table> |
</div> |
<nested:form action="/user/courseUnitControllerFromHome"> |
<input type="hidden" name="dispatch" value="updateDeliverables"> |
<html:hidden property="courseUnitAssignementView.id" value="${CourseUnitAssignementView.id}"/> |
<html:hidden property="courseUnitView.id" value="${CourseUnitView.id}"/> |
<table class="dataTable"> |
<tr> |
<th><bean:message key="courseunit.assignement.delivered.date"/></th> |
<th><bean:message key="courseunit.assignement.deliver.time"/></th> |
<th><bean:message key="number"/></th> |
<th><bean:message key="name"/></th> |
<th><bean:message key="courseunit.assignement.deliver.version"/></th> |
<th><bean:message key="courseunit.assignement.deliver.grade"/></th> |
<th><bean:message key="courseunit.assignement.deliver.obs"/></th> |
</tr> |
<nested:iterate id="deliverable" property="courseUnitAssignementView.deliverables" type="pt.estgp.estgweb.domain.views.CourseUnitDeliverableView"> |
<tr> |
<td>${deliverable.deliverDateStr} </td> |
<logic:equal name="deliverable" property="lateDeliver" value="true"> |
<td class="statusERROR"> |
<bean:message key="courseunit.assignement.deliver.time.late"/> |
</td> |
</logic:equal> |
<logic:notEqual name="deliverable" property="lateDeliver" value="true"> |
<td class="statusOK"> |
<bean:message key="courseunit.assignement.deliver.time.ok"/> |
</td> |
</logic:notEqual> |
<td>${deliverable.student.code}</td> |
<td>${deliverable.student.name}</td> |
<td><a target="_blank" href="<%=request.getContextPath()%>/repositoryStream/${deliverable.fileStreamId}"><bean:message key="courseunit.assignement.deliver.version"/> (${deliverable.deliverDateStr})</a></td> |
<td> |
<nested:hidden property="id"/> |
<nested:text property="grade"/> |
</td> |
<td> |
<%--<a href="javascript:showOrHide('obs${deliverable.id}')"><bean:message key="courseunit.assignement.deliver.show.obs"/></a>--%> |
<nested:textarea styleId="obs${deliverable.id}" styleClass="textarea" property="obs"/> |
</td> |
</tr> |
</nested:iterate> |
<tr> |
<td colspan="7"> |
<input type="button" onclick="this.form.submit()" value="<bean:message key="confirm"/>"/> |
</td> |
</tr> |
</table> |
</nested:form> |
</div> |
</div> |
</div> |
/impl/src/web/user/courseunits/topnavCreateBlog.jsp |
---|
New file |
0,0 → 1,21 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %> |
<% |
if (request.getAttribute("BlogView") != null) |
{ |
BlogView bV = (BlogView) request.getAttribute("BlogView"); |
request.setAttribute("CourseUnitView", bV.getCourseUnitView()); |
} |
%> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName()); |
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace(null, "submit.blog"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/courseunits/courseunit.jsp |
---|
11,40 → 11,92 |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<div id="contentCourseUnit"> |
<html:form styleClass="form" action="/user/courseUnitControllerFromHome" enctype="multipart/form-data"> |
<input type="hidden" name="dispatch" value="update"/> |
<html:hidden property="courseUnitView.id"/> |
<h1>${CourseUnitView.name}</h1> |
<div class="seccao"> |
<h2><bean:message key="courseunit.objectives"/></h2> |
<p> |
<baco:cantManage name="CourseUnitView"> |
<logic:present name="CourseUnitView" property="objectives"> |
${CourseUnitView.objectives} |
</logic:present> |
<logic:notPresent name="CourseUnitView" property="objectives"> |
<bean:message key="courseunit.objectives.not.available"/> |
</logic:notPresent> |
</baco:cantManage> |
<baco:canManage name="CourseUnitView"> |
<html:textarea styleClass="textarea" property="courseUnitView.objectives"/> |
</baco:canManage> |
</p> |
<p> |
<baco:canManage name="CourseUnitView"> |
<html:file property="programFile"/> |
</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:notPresent name="CourseUnitView" property="programStreamId"> |
<bean:message key="courseunit.programfilepath.not.available"/> |
</logic:notPresent> |
</p> |
</div> |
<baco:canManage name="CourseUnitView"> |
<input type="button" onclick="set(form,'update');form.submit()" value="<bean:message key="confirm"/>"> |
</baco:canManage> |
<h1>${CourseUnitView.name} (${CourseUnitView.code})</h1> |
<table width="100%" cellpadding="0" cellspacing="2" border="0"> |
<tr> |
<td valign="top" class="seccao"> |
<html:form styleClass="form" action="/user/courseUnitControllerFromHome" enctype="multipart/form-data"> |
<input type="hidden" name="dispatch" value="update"/> |
<html:hidden property="courseUnitView.id"/> |
<h2><bean:message key="courseunit.objectives"/></h2> |
<p> |
<baco:cantManage name="CourseUnitView"> |
<logic:present name="CourseUnitView" property="objectives"> |
${CourseUnitView.objectives} |
</logic:present> |
<logic:notPresent name="CourseUnitView" property="objectives"> |
<bean:message key="courseunit.objectives.not.available"/> |
</logic:notPresent> |
</baco:cantManage> |
<baco:canManage name="CourseUnitView"> |
<html:textarea styleClass="textarea" property="courseUnitView.objectives"/> |
</baco:canManage> |
</p> |
<p> |
<baco:canManage name="CourseUnitView"> |
<html:file property="programFile"/> |
</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:notPresent name="CourseUnitView" property="programStreamId"> |
<bean:message key="courseunit.programfilepath.not.available"/> |
</logic:notPresent> |
</p> |
</html:form> |
<baco:canManage name="CourseUnitView"> |
<input type="button" onclick="set(form,'update');form.submit()" value="<bean:message key="confirm"/>"> |
</baco:canManage> |
</html:form> |
</td> |
<td valign="top" class="seccao"> |
<h2><bean:message key="courseunit.teachers"/></h2> |
<table class="dataTable"> |
<tr> |
<th><bean:message key="number"/></th> |
<th><bean:message key="name"/></th> |
<th><bean:message key="email"/></th> |
</tr> |
<logic:iterate id="teacher" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<td> |
${teacher.code} |
</td> |
<td> |
${teacher.name} |
</td> |
<td> |
${teacher.email} |
</td> |
</tr> |
</logic:iterate> |
</table> |
</td> |
</tr> |
<baco:isAuthenticated> |
<tr> |
<td colspan="2" class="seccao"> |
<h2><bean:message key="module.Announcements"/></h2> |
<logic:notEmpty name="CourseUnitView" property="announcements"> |
<div class="listCircleWhite"> |
<ul> |
<logic:iterate id="announcement" name="CourseUnitView" property="announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView"> |
<li> |
<h3><html:link action="/user/startLoadAnnouncementFromCourseUnit?id=${announcement.id}">${announcement.title}</html:link></h3> |
<p>${announcement.text}</p> |
<p class="pFooterSeccao"><bean:message key="from"/>: ${announcement.owner.name} (${announcement.owner.username}) <bean:message key="at"/> ${announcement.formatedSaveDate} </p> |
</li> |
</logic:iterate> |
</ul> |
</div> |
</logic:notEmpty> |
<logic:empty name="CourseUnitView" property="announcements"> |
<p><bean:message key="announcement.zero.placed"/></p> |
</logic:empty> |
</td> |
</tr> |
</baco:isAuthenticated> |
</table> |
</div> |
/impl/src/web/user/courseunits/menu.jsp |
---|
1,36 → 1,86 |
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ 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" %> |
<% |
if (request.getAttribute("BlogView") != null) |
{ |
BlogView bV = (BlogView) request.getAttribute("BlogView"); |
request.setAttribute("CourseUnitView",bV.getCourseUnitView()); |
} |
%> |
<% |
String fromAction = ""; |
String from = ""; |
String user = ""; |
if (request.getParameter("from") != null) |
{ |
user = "/user"; |
fromAction = "From" + request.getParameter("from"); |
if(request.getParameter("from").equals("CourseUnit")) |
{ |
fromAction = "FromHome"; |
} |
} |
request.setAttribute("user", user); |
request.setAttribute("fromAction", fromAction); |
%> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<div class="linkLeftMenu"> |
<div class="listClean"> |
<ul> |
<li> |
<a href="<%=request.getContextPath()%>/">Inicio</a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/">Colocar Dúvidas</a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/">Blog</a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/user/startLoadCourseUnitWorksFromHome.do?id=${CourseUnitView.id}">Trabalhos</a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/">Notas</a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/">Corpo Docente</a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/">Conteúdos</a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/">Assiduidade</a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/">Avaliação</a> |
</li> |
</ul> |
<div class="linkMenuBlock"> |
<div class="linkMenuBlockTitle">Unidade</div> |
<div class="linkLeftMenu"> |
<div class="listClean"> |
<ul> |
<li> |
<html:link action="${user}/startLoadCourseUnit${fromAction}?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.home"/></html:link> |
</li> |
<baco:isInCourseUnit courseUnitId="${CourseUnitView.id}"> |
<li> |
<html:link action="/user/startSubmitAnnouncementFromCourseUnit?announcementView.courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.put.announcement"/></html:link> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/"><bean:message key="courseunit.menu.put.question"/></a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>${user}/startLoadCourseUnitWorks${fromAction}.do?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.assignements"/></a> |
</li> |
</baco:isInCourseUnit> |
<li> |
<html:link action="${user}/startCourseUnitBlog${fromAction}?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.blog"/></html:link> |
</li> |
<li> |
<html:link action="${user}/startLoadCourseUnitStudents${fromAction}?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.students"/></html:link> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/"><bean:message key="courseunit.menu.contents"/></a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/"><bean:message key="courseunit.menu.presences"/></a> |
</li> |
<li> |
<a href="<%=request.getContextPath()%>/"><bean:message key="courseunit.menu.grades"/></a> |
</li> |
</ul> |
</div> |
</div> |
</div> |
/impl/src/web/user/courseunits/courseunitIntranet.jsp |
---|
New file |
0,0 → 1,15 |
<%@ page import="pt.estgp.estgweb.domain.Teacher" %> |
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<div id="contentCourseUnitIntranet"> |
<jsp:include page="/user/courseunits/courseunit.jsp"/> |
</div> |
/impl/src/web/user/courseunits/topnavCreateAnnouncement.jsp |
---|
New file |
0,0 → 1,36 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<%@ page import="pt.estgp.estgweb.web.form.announcements.AnnouncementsForm" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.estgp.estgweb.domain.views.AnnouncementView" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="pt.estgp.estgweb.domain.views.CourseUnitView" %> |
<% |
if (request.getAttribute("AnnouncementsForm") != null) |
{ |
AnnouncementsForm aF = (AnnouncementsForm) request.getAttribute("AnnouncementsForm"); |
request.setAttribute("CourseUnitView", aF.getAnnouncementView().getCourseUnitView()); |
if (aF.getAnnouncementView().getCourseUnitView().getName() == null) |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{aF.getAnnouncementView().getCourseUnitView().getId(),true,false,false}; |
CourseUnitView courseUnitView = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnit", args, names); |
request.setAttribute("CourseUnitView", courseUnitView); |
} |
} |
%> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName()); |
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace(null, "submit.announcement"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/courseunits/submitBlog.jsp |
---|
New file |
0,0 → 1,16 |
<%@ page import="pt.estgp.estgweb.domain.Teacher" %> |
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<div id="contentCourseUnitIntranet"> |
<div id="contentCourseUnit"> |
<jsp:include page="/admin/blogs/submitBlog.jsp"/> |
</div> |
</div> |
/impl/src/web/user/courseunits/students.jsp |
---|
New file |
0,0 → 1,37 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<div id="contentCourseUnitIntranet"> |
<div id="contentCourseUnit"> |
<table class="dataTable"> |
<tr> |
<th><bean:message key="number"/></th> |
<th><bean:message key="name"/></th> |
<th><bean:message key="user"/></th> |
<th><bean:message key="email"/></th> |
</tr> |
<logic:iterate id="student" name="CourseUnitView" property="students" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<td> |
${student.code} |
</td> |
<td> |
${student.name} |
</td> |
<td> |
${student.username} |
</td> |
<td> |
${student.email} |
</td> |
</tr> |
</logic:iterate> |
</table> |
</div> |
</div> |
/impl/src/web/user/courseunits/topnavLoadBlog.jsp |
---|
New file |
0,0 → 1,21 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %> |
<% |
if (request.getAttribute("BlogView") != null) |
{ |
BlogView bV = (BlogView) request.getAttribute("BlogView"); |
request.setAttribute("CourseUnitView", bV.getCourseUnitView()); |
} |
%> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName()); |
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace(null, "blog"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/courseunits/submitAnnouncement.jsp |
---|
New file |
0,0 → 1,113 |
<%@ page import="pt.estgp.estgweb.Globals" %> |
<%@ page import="jomm.utils.MyCalendar" %> |
<%@ page import="pt.estgp.estgweb.web.utils.DatesUtils" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<jsp:useBean id="AnnouncementsForm" type="pt.estgp.estgweb.web.form.announcements.AnnouncementsForm" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<jomm:messages/> |
<html:errors/> |
<% |
String fromAction = ""; |
String from = ""; |
String user = ""; |
if (request.getParameter("from") != null) |
{ |
user = "/user"; |
fromAction = "From" + request.getParameter("from"); |
from = "?from=" + request.getParameter("from"); |
} |
request.setAttribute("from", from); |
request.setAttribute("user", user); |
request.setAttribute("fromAction", fromAction); |
MyCalendar calendar = new MyCalendar(); |
calendar.setYear(calendar.getYear()+1); |
%> |
<div id="contentCourseUnitIntranet"> |
<div id="contentCourseUnit"> |
<html:form action="${user}/submitAnnouncement${fromAction}${from}" enctype="multipart/form-data"> |
<html:hidden property="courseUnitView.id" value="${AnnouncementsForm.announcementView.courseUnitView.id}"/> |
<html:hidden property="role"/> |
<html:hidden property="announcementView.id"/> |
<html:hidden property="smallImageStr"/> |
<html:hidden property="bigImageStr"/> |
<html:hidden property="announcementView.internal" value="true"/> |
<html:hidden property="announcementView.courseUnitView.id"/> |
<html:hidden property="announcementView.courseUnitView.name"/> |
<input type="hidden" name="expireDate" value="<%=calendar.getWebDateString()%>"/> |
<html:hidden property="announcementView.courseUnitView.courseName"/> |
<html:hidden property="targetRolesStr" value="student"/> |
<baco:hasRole role="student"> |
<html:hidden property="announcementView.choosedOwnerRole" value="student"/> |
</baco:hasRole> |
<baco:hasRole role="teacher"> |
<html:hidden property="announcementView.choosedOwnerRole" value="teacher"/> |
</baco:hasRole> |
<input type="hidden" name="dispatch" value="removeRole"> |
<table class="form"> |
<baco:isAdmin> |
<tr> |
<th> |
<bean:message key="announcement.status"/> |
</th> |
<td> |
<html:select property="announcementView.status"> |
<html:option value="true"> |
<bean:message key="yes"/> |
</html:option> |
<html:option value="false"> |
<bean:message key="no"/> |
</html:option> |
</html:select> |
</td> |
</tr> |
</baco:isAdmin> |
<tr> |
<th> |
<bean:message key="announcement.courseunit.internal"/> |
* |
</th> |
<td> |
<html:select property="announcementView.courseUnitInternal"> |
<html:option value="true" key="announcement.internal.yes"></html:option> |
<html:option value="false" key="announcement.internal.no"></html:option> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.title"/> |
* |
</th> |
<td> |
<html:text styleClass="text" property="announcementView.title" maxlength="250"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.text"/> |
* |
</th> |
<td> |
<html:textarea styleClass="textarea" property="announcementView.text"/> |
</td> |
</tr> |
<tr class="buttons"> |
<td colspan="2"> |
<input type="button" |
onclick="set(this.form,'save');this.form.submit()" |
value="<bean:message key="confirm"/>"/> |
</td> |
</tr> |
</table> |
</html:form> |
</div> |
</div> |
/impl/src/web/user/courseunits/topnavLoadBlogMonth.jsp |
---|
New file |
0,0 → 1,18 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<jsp:useBean id="BlogView" type="pt.estgp.estgweb.domain.views.BlogView" scope="request"/> |
<% |
request.setAttribute("CourseUnitView",BlogView.getCourseUnitView()); |
%> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName()); |
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace("/user/startLoadBlogFromHome.do?id="+BlogView.getId(), "blog","(" + BlogView.getTitle() + ")"); |
topNav.addNavPlace(null, "month." + BlogView.getMonth() + ".year",""+ BlogView.getYear()); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/courseunits/topnavLoadAnnouncement.jsp |
---|
New file |
0,0 → 1,21 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<%@ page import="pt.estgp.estgweb.domain.views.AnnouncementView" %> |
<% |
if (request.getAttribute("Announcement") != null) |
{ |
AnnouncementView aV = (AnnouncementView) request.getAttribute("Announcement"); |
request.setAttribute("CourseUnitView", aV.getCourseUnitView()); |
} |
%> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName()); |
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace(null, "announcement"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/courseunits/blog.jsp |
---|
New file |
0,0 → 1,14 |
<%@ page import="pt.estgp.estgweb.domain.Teacher" %> |
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<div id="contentCourseUnit"> |
<jsp:include page="/public/blogs/blog.jsp"/> |
</div> |
/impl/src/web/user/home/topnavCourseUnitAssignement.jsp |
---|
New file |
0,0 → 1,15 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<jsp:useBean id="CourseUnitAssignementView" type="pt.estgp.estgweb.domain.views.CourseUnitAssignementView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName()); |
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace("/user/startLoadCourseUnitWorksFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "course.unit.works"); |
topNav.addNavPlace(null, "courseunit.assignement", CourseUnitAssignementView.getTitle()); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/home/todos.jsp |
---|
5,6 → 5,7 |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page import="pt.estgp.estgweb.services.common.IToDo" %> |
<%@ page import="pt.estgp.estgweb.services.common.ModuleEnum" %> |
<%@ 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" %> |
30,7 → 31,7 |
List<IToDoCat> todos = (List<IToDoCat>) sm.execute(RequestUtils.getRequester(request, response), "CommonServicesGetAllTodosCat", args, names); |
%> |
<div class="block"> |
<div class="block homebox"> |
<p> |
<bean:message key="intranet.todo"/> |
</p> |
50,42 → 51,78 |
<% |
for (IToDoCat toDoCat : todos) |
{ |
String imgClose; |
String imgOpen; |
String style; |
String img; |
String styleClass; |
if (toDoCat.getDescription().equals(ModuleEnum.TodoAnnouncements.getMessageKey())) |
{ |
styleClass = "WARNING"; |
img = "/imgs/openedboxNeg.gif"; |
style=""; |
imgClose = "/imgs/closedboxNeg.gif"; |
imgOpen = "/imgs/openedboxNeg.gif"; |
} |
else if(toDoCat.getDescription().equals(ModuleEnum.Reminders.getMessageKey()) || toDoCat.getDescription().equals(ModuleEnum.CourseUnits.getMessageKey())) |
{ |
styleClass = ""; |
img = "/imgs/openedbox.gif"; |
style= ""; |
imgClose = "/imgs/closedbox.gif"; |
imgOpen = "/imgs/openedbox.gif"; |
} |
else |
{ |
styleClass = ""; |
img = "/imgs/closedbox.gif"; |
style= "visibility:hidden;position:absolute;"; |
imgClose = "/imgs/closedbox.gif"; |
imgOpen = "/imgs/openedbox.gif"; |
} |
%> |
<li> |
<li class="<%=styleClass%>"> |
<p> |
<%=MessageResources.getMessage(request, toDoCat.getDescription())%> (<%=toDoCat.getTotalToDo()%>) |
<%=MessageResources.getMessage(request, toDoCat.getDescription())%> (<%=toDoCat.getTotalToDo()%>) <img alt="abrir" src="<%=request.getContextPath() + img%>" onclick="this.src=showOrHide('<%=toDoCat.getDescription()%>','<%=request.getContextPath() + imgClose%>','<%=request.getContextPath() + imgOpen%>')" > |
</p> |
<ul> |
<% |
for (IToDo todo : toDoCat.getAllToDos()) |
{ |
if (todo.getUrl() != null) |
<ul id="<%=toDoCat.getDescription()%>" style="<%=style%>"> |
<% |
for (IToDo todo : toDoCat.getAllToDos()) |
{ |
%> |
<li> |
<a href="<%=request.getContextPath() + todo.getUrl()%>"> |
if (todo.getUrl() != null) |
{ |
%> |
<li> |
<a href="<%=request.getContextPath() + todo.getUrl()%>"> |
<font class="<%=styleClass%>"> |
<% |
if(todo.getCatKey() != null) |
{ |
out.print(MessageResources.getMessage(request,todo.getCatKey()) + ":"); |
} |
%> |
<%=todo.getLabelInsideCat(request)%></a> |
<%=todo.getLabelInsideCat(request)%> |
</font> |
</a> |
</li> |
<% |
</li> |
<% |
} |
else |
{ |
%> |
<li> |
<%=todo.getLabelInsideCat(request)%> |
</li> |
<% |
} |
} |
else |
{ |
%> |
<li> |
<%=todo.getLabelInsideCat(request)%> |
</li> |
<% |
} |
} |
%> |
%> |
</ul> |
</li> |
<% |
/impl/src/web/user/home/topnavLoadTodoAnnouncement.jsp |
---|
New file |
0,0 → 1,10 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "todo.announcement"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/home/topnavLoadBlog.jsp |
---|
2,6 → 2,7 |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
/impl/src/web/user/home/topnavCreateTodoAnnouncement.jsp |
---|
New file |
0,0 → 1,10 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "submit.todo.announcement"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/home/topnavCourseUnitWorks.jsp |
---|
7,7 → 7,7 |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName()); |
topNav.addNavPlace(null, "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace(null, "course.unit.works"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/home/courseUnitsAnnouncements.jsp |
---|
35,7 → 35,7 |
%> |
<div class="block"> |
<div class="block homebox"> |
<p> |
<bean:message key="intranet.course.unit.announcements"/> |
</p> |
53,25 → 53,29 |
%> |
<ul> |
<% |
String img = "/imgs/openedbox.gif"; |
String imgClose = "/imgs/closedbox.gif"; |
String imgOpen = "/imgs/openedbox.gif"; |
for (ICourseUnitAnnouncements iCourseUnitAnnouncements : iCourseUnitAnnouncementsList) |
{ |
request.setAttribute("iCourseUnitAnnouncements",iCourseUnitAnnouncements); |
%> |
<li> |
<p> |
<html:link action="/user/startLoadCourseUnitFromHome?id=${iCourseUnitAnnouncements.courseUnit.id}">${iCourseUnitAnnouncements.courseUnit.name}</html:link> (<%=iCourseUnitAnnouncements.getAnnouncements().size()%>) |
<html:link action="/user/startLoadCourseUnitFromHome?id=${iCourseUnitAnnouncements.courseUnit.id}">${iCourseUnitAnnouncements.courseUnit.name}</html:link> (<%=iCourseUnitAnnouncements.getAnnouncements().size()%>) |
<img alt="abrir" src="<%=request.getContextPath() + img%>" onclick="this.src=showOrHide('<%="CourseUnitAnnouncement" + iCourseUnitAnnouncements.getCourseUnit().getId()%>','<%=request.getContextPath() + imgClose%>','<%=request.getContextPath() + imgOpen%>')" > |
</p> |
<ul> |
<% |
for (AnnouncementView courseUnitAnnouncement : iCourseUnitAnnouncements.getAnnouncements()) |
{ |
%> |
<li> |
<a href="<%=request.getContextPath()%>/user/startLoadAnnouncementFromHome.do?id=<%=courseUnitAnnouncement.getId()%>"><%=courseUnitAnnouncement.getTitle()%></a> |
</li> |
<% |
} |
%> |
<ul id="CourseUnitAnnouncement<%=iCourseUnitAnnouncements.getCourseUnit().getId()%>"> |
<% |
for (AnnouncementView courseUnitAnnouncement : iCourseUnitAnnouncements.getAnnouncements()) |
{ |
%> |
<li> |
<a href="<%=request.getContextPath()%>/user/startLoadAnnouncementFromHome.do?id=<%=courseUnitAnnouncement.getId()%>"><%=courseUnitAnnouncement.getTitle()%></a> |
</li> |
<% |
} |
%> |
</ul> |
</li> |
<% |
/impl/src/web/user/home/topnavCourseUnitStudents.jsp |
---|
New file |
0,0 → 1,13 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName()); |
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName()); |
topNav.addNavPlace(null, "courseunit.students"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/topnavSelectCourse.jsp |
---|
New file |
0,0 → 1,10 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
topNav.addNavPlace(null, "course.select"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/serviceZone.jsp |
---|
58,6 → 58,13 |
<bean:message key="submit.blog"/> |
</html:link> |
</li> |
<baco:hasRole role="admin,super,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil"> |
<li> |
<html:link action="/user/startSubmitTodoAnnouncementFromServiceZone"> |
<bean:message key="submit.todo.announcement"/> |
</html:link> |
</li> |
</baco:hasRole> |
<baco:isAdmin> |
<li> |
89,6 → 96,16 |
<bean:message key="courses"/> |
<ul> |
<li> |
<html:link action="/user/startNewCourseFromServiceZone"> |
<bean:message key="course.new"/> |
</html:link> |
</li> |
<li> |
<html:link action="/user/startSelectCourseFromServiceZone"> |
<bean:message key="course.select"/> |
</html:link> |
</li> |
<li> |
<html:link action="/user/startNewCourseUnitAdminFromServiceZone"> |
<bean:message key="courseunit.new"/> |
</html:link> |
100,22 → 117,36 |
</li> |
</ul> |
</li> |
<li> |
<bean:message key="intranet"/> |
<ul> |
<li> |
<html:link target="_blank" action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createIntranetFolders"> |
<bean:message key="intranet.create.folders"/> |
</html:link> |
</li> |
</ul> |
</li> |
</baco:isAdmin> |
</ul> |
</div> |
</td> |
<td class="column"> |
<div class="block"> |
<div class="head"> |
<bean:message key="intranet.editable.blogs"/> |
<bean:message key="intranet.my.announcements"/> |
</div> |
<% |
if (editableBlogs.size() == 0) |
if (ownerAnnouncement.size() == 0) |
{ |
%> |
<div class="zerofound"> |
<bean:message key="blog.zero.editable"/> |
<bean:message key="announcement.zero.placed"/> |
</div> |
<% |
} |
else |
123,23 → 154,23 |
%> |
<table> |
<% |
for (BlogView b : editableBlogs) |
for (AnnouncementView a : ownerAnnouncement) |
{ |
%> |
<tr> |
<td> |
<a href="<%=request.getContextPath()%>/user/startLoadBlogFromServiceZone.do?id=<%=b.getId()%>"><%=b.getTitle()%> |
<a href="<%=request.getContextPath()%>/user/startLoadAnnouncementFromServiceZone.do?id=<%=a.getId()%>"><%=a.getTitle()%> |
</a></td> |
<td> |
<% |
String message; |
if (b.isStatus()) |
message = MessageResources.getMessage(request, "blog.status.valid"); |
else |
message = MessageResources.getMessage(request, "blog.status.not.valid"); |
%> |
String message; |
if(a.isStatus()) |
message = MessageResources.getMessage(request,"announcement.status.valid"); |
else |
message = MessageResources.getMessage(request,"announcement.status.not.valid"); |
%> |
<%=message%> |
<td><%=a.getFormatedUpdateDate()%> |
</td> |
</tr> |
<% |
244,82 → 275,51 |
<div class="block"> |
<div class="head"> |
<bean:message key="intranet.my.announcements"/> |
<bean:message key="intranet.editable.blogs"/> |
</div> |
<% |
if (ownerAnnouncement.size() == 0) |
if (editableBlogs.size() == 0) |
{ |
%> |
<div class="zerofound"> |
<bean:message key="announcement.zero.placed"/> |
<bean:message key="blog.zero.editable"/> |
</div> |
</div> |
<% |
<% |
} |
else |
{ |
%> |
<table> |
<% |
for (AnnouncementView a : ownerAnnouncement) |
{ |
%> |
<tr> |
<td> |
<a href="<%=request.getContextPath()%>/user/startLoadAnnouncementFromServiceZone.do?id=<%=a.getId()%>"><%=a.getTitle()%> |
</a></td> |
<td> |
<% |
<table> |
<% |
for (BlogView b : editableBlogs) |
{ |
%> |
<tr> |
<td> |
<a href="<%=request.getContextPath()%>/user/startLoadBlogFromServiceZone.do?id=<%=b.getId()%>"><%=b.getTitle()%> |
</a></td> |
<td> |
<% |
String message; |
if (b.isStatus()) |
message = MessageResources.getMessage(request, "blog.status.valid"); |
else |
message = MessageResources.getMessage(request, "blog.status.not.valid"); |
String message; |
if(a.isStatus()) |
message = MessageResources.getMessage(request,"announcement.status.valid"); |
else |
message = MessageResources.getMessage(request,"announcement.status.not.valid"); |
%> |
<%=message%> |
<td><%=a.getFormatedUpdateDate()%> |
</td> |
</tr> |
%> |
<%=message%> |
</td> |
</tr> |
<% |
} |
%> |
</table> |
<% |
} |
%> |
</table> |
<% |
</div> |
} |
%> |
</div> |
</td> |
</tr> |
</tbody> |
/impl/src/web/user/serviceZone/topnavCreateTodoAnnouncement.jsp |
---|
New file |
0,0 → 1,10 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
topNav.addNavPlace(null, "submit.todo.announcement"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/topnavLoadTodoAnnouncement.jsp |
---|
New file |
0,0 → 1,10 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
topNav.addNavPlace(null, "todo.announcement"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/topnavSubmitCourse.jsp |
---|
New file |
0,0 → 1,17 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<jsp:useBean id="CourseView" type="pt.estgp.estgweb.domain.views.CourseView" scope="request"/> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
if(CourseView.getId() > 0) |
{ |
topNav.addNavPlace("/user/startSelectCourseFromServiceZone.do", "course.select"); |
topNav.addNavPlace(null, "course.submit.edit","(" + CourseView.getCode() + ")" + CourseView.getName()); |
} |
else |
topNav.addNavPlace(null, "course.submit.new"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/xsd/curso_EC.xml |
---|
New file |
0,0 → 1,791 |
<?xml version="1.0" encoding="UTF-8"?> |
<curso xmlns="http://www.estgp.pt/xsd/planoestudos/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/xsd/planoestudos/1.0/ planoestudos.xsd"> |
<nome>Engenharia Civil</nome> |
<area>EG</area> |
<semestre id="S1"> |
<unidade> |
<nome>Análise Matemática I</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Álgebra Linear e Geometria</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Física Geral</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Mineralogia e Geologia</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Topografia e Cartografia</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Desenho de Construção</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Unidade de Transferência I</nome> |
<area>Engenharias</area> |
<totalHoras>150</totalHoras> |
<horasContacto> |
<PL>30</PL> |
<TC>15</TC> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
</semestre> |
<!--1º semestre de EC--> |
<semestre id="S2"> |
<unidade> |
<nome>Análise Matemática II</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Mecânica</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Impacto e Gestão Ambiental</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Química Geral</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Probabilidades e Estatística</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Hidráulica Geral</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Unidade de Transferência II</nome> |
<area>Engenharias</area> |
<totalHoras>150</totalHoras> |
<horasContacto> |
<PL>30</PL> |
<TC>15</TC> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
</semestre> |
<!--2º semestre de EC--> |
<semestre id="S3"> |
<unidade> |
<nome>Análise Matemática III</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Resistência de Materiais I</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Hidráulica Aplicada</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Geologia da Engenharia</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Métodos e Tecnologias da Construção</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Planeamento Regional e Urbano</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Unidade de Transferência III</nome> |
<area>Engenharias</area> |
<totalHoras>150</totalHoras> |
<horasContacto> |
<PL>30</PL> |
<TC>15</TC> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
</semestre> |
<!--\\3º semestre de EC--> |
<semestre id="S4"> |
<perfil nome="Perfil de Estruturas e Construção"> |
<unidade> |
<nome>Análise de Estruturas</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Física das Construções</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Mecânica de Solos</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Abastecimento de Água e Saneamento</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Materiais Construção</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Resistência de Materiais II</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Unidade de Transferência IV</nome> |
<area>Engenharias</area> |
<totalHoras>150</totalHoras> |
<horasContacto> |
<PL>30</PL> |
<TC>15</TC> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
</perfil> |
<perfil nome="Planeamento e Infra-Estruturas"> |
<unidade> |
<nome>Análise de Estruturas</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Física das Construções</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Mecânica de Solos</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Abastecimento de Água e Saneamento</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Materiais Construção</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Hidrologia e Infra-Estruturas Hidráulicas</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Unidade de Transferência IV</nome> |
<area>Engenharias</area> |
<totalHoras>150</totalHoras> |
<horasContacto> |
<PL>30</PL> |
<TC>15</TC> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
</perfil> |
</semestre> |
<semestre id="S5"> |
<perfil nome="Perfil de Estruturas e Construção"> |
<unidade> |
<nome>Betão Armado</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Organização de Obras e Estaleiros</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Vias de Comunicação I</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Conservação e Reabilitação</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Estruturas Metálicas</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Engenharia Sísmica</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Unidade de Transferência V</nome> |
<area>Engenharias</area> |
<totalHoras>150</totalHoras> |
<horasContacto> |
<PL>30</PL> |
<TC>15</TC> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
</perfil> |
<perfil nome="Planeamento e Infra-Estruturas"> |
<unidade> |
<nome>Betão Armado</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Organização de Obras e Estaleiros</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Vias de Comunicação I</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Urbanização e Transportes</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Sistemas de Informação Geográfica</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Administração Pública e Gestão Municipal</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Unidade de Transferência V</nome> |
<area>Engenharias</area> |
<totalHoras>150</totalHoras> |
<horasContacto> |
<PL>30</PL> |
<TC>15</TC> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
</perfil> |
</semestre> |
<semestre id="S6"> |
<perfil nome="Perfil de Estruturas e Construção"> |
<unidade> |
<nome>Qualidade na Construção</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Qualidade na Construção</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Fundações e Estruturas de Suporte</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Betão Armado e Pré-Esforçado</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Direcção de Obras</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Economia e Gestão de Empreendimentos</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Projecto de Construção</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Unidade de Transferência VI</nome> |
<area>Engenharias</area> |
<totalHoras>150</totalHoras> |
<horasContacto> |
<PL>30</PL> |
<TC>15</TC> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
</perfil> |
<perfil nome="Planeamento e Infra-Estruturas"> |
<unidade> |
<nome>Qualidade na Construção</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Qualidade na Construção</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Equipamentos Regionais e Urbanos</nome> |
<area>Engenharias</area> |
<totalHoras>65</totalHoras> |
<horasContacto> |
<T>15</T> |
<TP>15</TP> |
<OT>15</OT> |
</horasContacto> |
<ECTS>2.5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Vias de Comunicação II</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Gestão e Avaliação de Sistemas e Projectos</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Projecto de Planeamento/Infra-Estruturas</nome> |
<area>Engenharias</area> |
<totalHoras>130</totalHoras> |
<horasContacto> |
<T>30</T> |
<TP>30</TP> |
<OT>30</OT> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
<unidade> |
<nome>Unidade de Transferência VI</nome> |
<area>Engenharias</area> |
<totalHoras>150</totalHoras> |
<horasContacto> |
<PL>30</PL> |
<TC>15</TC> |
</horasContacto> |
<ECTS>5</ECTS> |
<obs/> |
</unidade> |
</perfil> |
</semestre> |
</curso> |
/impl/src/xsd/planoestudos.xsd |
---|
1,77 → 1,82 |
<?xml version="1.0" encoding="UTF-8"?> |
<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by Jorge Machado (BN) --> |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.estgp.pt/xsd/planoestudos/1.0/" |
targetNamespace="http://www.estgp.pt/xsd/planoestudos/1.0/" elementFormDefault="qualified" |
attributeFormDefault="unqualified"> |
<xsd:element name="curso"> |
<xsd:annotation> |
<xsd:documentation></xsd:documentation> |
</xsd:annotation> |
<xsd:complexType> |
<xsd:sequence> |
<xsd:element name="nome" type="xsd:string"/> |
<xsd:element name="area"> |
<xsd:simpleType> |
<xsd:restriction base="xsd:string"> |
<xsd:enumeration value="CH"/> |
<xsd:enumeration value="CE"/> |
<xsd:enumeration value="DG"/> |
<xsd:enumeration value="EG"/> |
</xsd:restriction> |
</xsd:simpleType> |
</xsd:element> |
<xsd:element name="semestre" maxOccurs="unbounded"> |
<xsd:complexType> |
<xsd:sequence> |
<xsd:element name="unidade" maxOccurs="unbounded"> |
<xsd:complexType> |
<xsd:sequence> |
<xsd:element name="nome" type="xsd:string"/> |
<xsd:element name="area" type="xsd:string"/> |
<xsd:element name="totalHoras" type="xsd:int"/> |
<xsd:element name="horasContacto"> |
<xsd:complexType> |
<xsd:sequence> |
<xsd:element name="T" type="xsd:int" minOccurs="0"/> |
<xsd:element name="TP" type="xsd:int" minOccurs="0"/> |
<xsd:element name="P" type="xsd:int" minOccurs="0"/> |
<xsd:element name="PL" type="xsd:int" minOccurs="0"/> |
<xsd:element name="PD" type="xsd:int" minOccurs="0"/> |
<xsd:element name="OT" type="xsd:int" minOccurs="0"/> |
<xsd:element name="E" type="xsd:int" minOccurs="0"/> |
<xsd:element name="S" type="xsd:int" minOccurs="0"/> |
<xsd:element name="TC" type="xsd:int" minOccurs="0"/> |
<xsd:element name="O" type="xsd:int" minOccurs="0"/> |
</xsd:sequence> |
</xsd:complexType> |
</xsd:element> |
<xsd:element name="ECTS" type="xsd:int"/> |
<xsd:element name="obs" type="xsd:string"/> |
</xsd:sequence> |
</xsd:complexType> |
</xsd:element> |
</xsd:sequence> |
<xsd:attribute name="id" use="required"> |
<xsd:simpleType> |
<xsd:restriction base="xsd:string"> |
<xsd:enumeration value="S1"/> |
<xsd:enumeration value="S2"/> |
<xsd:enumeration value="S3"/> |
<xsd:enumeration value="S4"/> |
<xsd:enumeration value="S5"/> |
<xsd:enumeration value="S6"/> |
<xsd:enumeration value="S7"/> |
<xsd:enumeration value="S8"/> |
<xsd:enumeration value="S9"/> |
<xsd:enumeration value="S10"/> |
<xsd:enumeration value="S11"/> |
<xsd:enumeration value="S12"/> |
</xsd:restriction> |
</xsd:simpleType> |
</xsd:attribute> |
</xsd:complexType> |
</xsd:element> |
</xsd:sequence> |
</xsd:complexType> |
</xsd:element> |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.estgp.pt/xsd/planoestudos/1.0/" targetNamespace="http://www.estgp.pt/xsd/planoestudos/1.0/" elementFormDefault="qualified" attributeFormDefault="unqualified"> |
<xsd:element name="curso"> |
<xsd:annotation> |
<xsd:documentation/> |
</xsd:annotation> |
<xsd:complexType> |
<xsd:sequence> |
<xsd:element name="nome" type="xsd:string"/> |
<xsd:element name="area"> |
<xsd:simpleType> |
<xsd:restriction base="xsd:string"> |
<xsd:enumeration value="CH"/> |
<xsd:enumeration value="CE"/> |
<xsd:enumeration value="DG"/> |
<xsd:enumeration value="EG"/> |
</xsd:restriction> |
</xsd:simpleType> |
</xsd:element> |
<xsd:element name="semestre" maxOccurs="unbounded"> |
<xsd:complexType> |
<xsd:choice> |
<xsd:element name="unidade" type="unidadeType" maxOccurs="unbounded"></xsd:element> |
<xsd:element name="perfil" maxOccurs="unbounded"> |
<xsd:complexType> |
<xsd:sequence> |
<xsd:element name="unidade" type="unidadeType" maxOccurs="unbounded"/> |
</xsd:sequence> |
<xsd:attribute name="nome" use="required" type="xsd:string"/> |
</xsd:complexType> |
</xsd:element> |
</xsd:choice> |
<xsd:attribute name="id" use="required"> |
<xsd:simpleType> |
<xsd:restriction base="xsd:string"> |
<xsd:enumeration value="S1"/> |
<xsd:enumeration value="S2"/> |
<xsd:enumeration value="S3"/> |
<xsd:enumeration value="S4"/> |
<xsd:enumeration value="S5"/> |
<xsd:enumeration value="S6"/> |
<xsd:enumeration value="S7"/> |
<xsd:enumeration value="S8"/> |
<xsd:enumeration value="S9"/> |
<xsd:enumeration value="S10"/> |
<xsd:enumeration value="S11"/> |
<xsd:enumeration value="S12"/> |
</xsd:restriction> |
</xsd:simpleType> |
</xsd:attribute> |
</xsd:complexType> |
</xsd:element> |
</xsd:sequence> |
</xsd:complexType> |
</xsd:element> |
<xsd:complexType name="unidadeType"> |
<xsd:sequence> |
<xsd:element name="nome" type="xsd:string"/> |
<xsd:element name="area" type="xsd:string"/> |
<xsd:element name="totalHoras" type="xsd:int"/> |
<xsd:element name="horasContacto"> |
<xsd:complexType> |
<xsd:sequence> |
<xsd:element name="T" type="xsd:int" minOccurs="0"/> |
<xsd:element name="TP" type="xsd:int" minOccurs="0"/> |
<xsd:element name="P" type="xsd:int" minOccurs="0"/> |
<xsd:element name="PL" type="xsd:int" minOccurs="0"/> |
<xsd:element name="PD" type="xsd:int" minOccurs="0"/> |
<xsd:element name="OT" type="xsd:int" minOccurs="0"/> |
<xsd:element name="E" type="xsd:int" minOccurs="0"/> |
<xsd:element name="S" type="xsd:int" minOccurs="0"/> |
<xsd:element name="TC" type="xsd:int" minOccurs="0"/> |
<xsd:element name="O" type="xsd:int" minOccurs="0"/> |
</xsd:sequence> |
</xsd:complexType> |
</xsd:element> |
<xsd:element name="ECTS" type="xsd:float"/> |
<xsd:element name="obs" type="xsd:string"/> |
</xsd:sequence> |
</xsd:complexType> |
</xsd:schema> |
/impl/build.properties |
---|
59,6 → 59,12 |
gen.dir =gen |
gen.dir.java =${gen.dir}/java |
intranet.setup.folders.filename=mkcursos.exe |
intranet.setup.folders.file.src=etc/data/intranet/${intranet.setup.folders.filename} |
build.dir.relative.intranet.setup.folders=/etc/data/intranet |
build.dir.relative.intranet.setup.folders.file=${build.dir.relative.intranet.setup.folders}/${intranet.setup.folders.filename} |
build.dir.intranet.setup.folders.file=${build.dir.classes}${build.dir.relative.intranet.setup.folders} |
#conf files |
app.properties.filename=app.properties |
app.properties=${conf.dir}/${app.properties.filename} |
/impl/etc/data/intranet/mkcursos.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/etc/data/intranet/cursos.txt |
---|
New file |
0,0 → 1,13 |
Gestao.Controlo.Qualidade 1 rpval |
Gestao.Recursos.Humanos 1 asss |
Mecanica 1 erelvas |
Operacoes.Unitarias 1 luizrogo |
Quimica.Analitica.Instrumental 2 luizrogo rutep |
Seguranca.Trabalho 1 cameron |
Unidade.Transferencia.IV 2 rutep cameron |
Instrumentacao.Controlo.Processos 2 sousa luisilva |
Manutencao.Fiabilidade 1 rpval |
Metrologia.Normalizacao 1 rutep |
Projecto 2 pbrito cameron |
Sistemas.Gestao.Ambiental 1 fneves |
Sistemas.Gestao.Qualidade.Auditorias 1 rpval |
/impl/build.xml |
---|
246,6 → 246,7 |
<include name="**/*.properties"/> |
<include name="**/*.txt"/> |
<include name="**/*.xml"/> |
<include name="**/*.exe"/> |
</fileset> |
</copy> |
<copy todir="${build.dir.war}" overwrite="true"> |
302,6 → 303,8 |
<copy overwrite="true" todir="${jdbc.properties.build}" file="${jdbc.properties}"/> |
<copy overwrite="true" todir="${ldap.properties.build}" file="${ldap.properties}"/> |
<copy overwrite="true" todir="${build.dir.classes}" file="${log4j.properties}"/> |
<mkdir dir="${build.dir.intranet.setup.folders.file}"/> |
<copy overwrite="true" todir="${build.dir.intranet.setup.folders.file}" file="${intranet.setup.folders.file.src}"/> |
</target> |
<target name="replaceFiltersConfigurationFiles"> |
331,7 → 334,8 |
<replacefilter token="@site.url@" value="${site.url}"/> |
<replacefilter token="@ws.siges.wsdl@" value="${ws.siges.wsdl}"/> |
<replacefilter token="@ws.siges.target.namespace@" value="${ws.siges.target.namespace}"/> |
<replacefilter token="@intranet.setup.folders.file@" value="${build.dir.relative.intranet.setup.folders.file}"/> |
<replacefilter token="@intranet.setup.folders.filename@" value="${intranet.setup.folders.filename}"/> |
</replace> |
<replace file="${build.dir.classes}/${log4j.properties.filename}"> |
<replacefilter token="@log.file@" value="${log.file}"/> |