/impl/conf/language/MessageResources.properties |
---|
573,6 → 573,7 |
job.status.FAILED=Falhado |
job.status.UNKNOWN_ERROR=Erro Desconhecido |
close=Fechar |
611,3 → 612,5 |
/impl/conf/language/MessageResourcesCourseUnits.properties |
---|
11,6 → 11,7 |
course.nav.without.arrow={0} |
courseunit.security.not.implemented=N\u00e3o implementado por raz\u00f5es de seguran\u00e7a |
courseunit.removed=Unidade Removida com sucesso |
courseunit.cant.be.removed=N\u00e3o pode remover esta unidade |
courseunit.menu.unit.old.units=Anos anteriores |
courseunit.menu.unit.other.units=Outros Anos |
courseunit.menu.unit=Unidade |
196,3 → 197,8 |
courseunit.dossier.tecnico.pedagogico=Dossier T\u00E9cnico Pedag\u00F3gico |
courseunit.delete.administration=Apagar Unidades Curriculares Administra\u00e7\u00e3o |
courseunit.canDelete.true=Permitido |
courseunit.canDelete.false=Não Permitido |
/impl/conf/berserk/sd.xml |
---|
813,7 → 813,7 |
</filterChains> |
</service> |
<service> |
<!--<service> |
<name>DeleteCourseUnit</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.UpdateCourseUnitService</implementationClass> |
<description>Update course unit objectives and program file</description> |
824,7 → 824,7 |
<chain name="Session"/> |
<chain name="Supers"/> |
</filterChains> |
</service> |
</service>--> |
<service> |
<name>LoadCourseUnit</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitService</implementationClass> |
2237,12 → 2237,40 |
<chain name="Admins"/> |
</filterChains> |
</service> |
saveJobServiceTaskScheduler |
<service> |
<name>TryDeleteCourseUnitService</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService</implementationClass> |
<description></description> |
<isTransactional>true</isTransactional> |
<defaultMethod>tryDelete</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Admins"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCandidatesDeleteCourseUnitService</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService</implementationClass> |
<description></description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadDeleteCandidates</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Admins"/> |
</filterChains> |
</service> |
</serviceDefinitions> |
/impl/src/java/pt/estgp/estgweb/services/courseunits/DeleteCourseUnitService.java |
---|
New file |
0,0 → 1,208 |
package pt.estgp.estgweb.services.courseunits; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import org.hibernate.Query; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Set; |
/** |
* Created by jorgemachado on 15/12/15. |
*/ |
public class DeleteCourseUnitService implements IService |
{ |
private static final Logger logger = Logger.getLogger(DeleteCourseUnitService.class); |
public static class CourseUnitContentsInfo |
{ |
public List<String> warnings = new ArrayList<String>(); |
public String messageResult = ""; |
boolean canDelete = false; |
public CourseUnitView cuv; |
public List<String> getWarnings() { |
return warnings; |
} |
public String getMessageResult() { |
return messageResult; |
} |
public boolean isCanDelete() { |
return canDelete; |
} |
public CourseUnitView getCuv() { |
return cuv; |
} |
} |
/** |
* |
* @param courseUnitId |
* @return a list of warnings |
* |
*/ |
public CourseUnitContentsInfo checkDelete(long courseUnitId,UserSession session) |
{ |
CourseUnitContentsInfo result = new CourseUnitContentsInfo(); |
result.canDelete = true; |
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId); |
boolean alert = false; |
if(cu.getStudents() != null && cu.getStudents().size() > 0) |
{ |
result.warnings.add("ALERT - Tem Alunos (NAO PODE APAGAR, remova os alunos primeiro)"); |
result.canDelete = false; |
} |
if(cu.getTeachers() != null && cu.getTeachers().size() > 0) |
{ |
result.warnings.add("ALERT - Tem Professores"); |
} |
if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0) |
{ |
result.warnings.add("ALERT - Tem Anuncios"); |
} |
if(cu.getAssignements() != null && cu.getAssignements().size() > 0) |
{ |
result.warnings.add("ALERT - Tem Trabalhos (NAO PODE APAGAR, remova os trabalhos primeiro (tarefa do professor))"); |
} |
if(cu.getBlogs() != null && cu.getBlogs().size() > 0) |
{ |
result.warnings.add("ALERT - Tem BLOGS"); |
} |
if(cu.getCourseUnitEvaluation() != null) |
{ |
result.warnings.add("ALERT - Tem Relatorio de Avaliacao (NAO PODE APAGAR, contacte a equipa de desenvolvimento para encontrar solucao)"); |
result.canDelete = true; |
} |
if(cu.getCourseUnitProgram() != null) |
{ |
result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup"); |
} |
if(cu.getSummaries() != null && cu.getSummaries().size() > 0) |
{ |
result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente"); |
} |
if(result.canDelete) |
{ |
result.messageResult ="Pode Apagar"; |
} |
else |
{ |
result.messageResult ="Não é permitido apagar esta unidade"; |
} |
result.cuv = new CourseUnitView(cu,false,false,false,false); |
return result; |
} |
/** |
* |
* @param courseUnitId |
* @return a list of warnings |
* |
*/ |
public CourseUnitContentsInfo tryDelete(long courseUnitId,UserSession session) |
{ |
CourseUnitContentsInfo result = checkDelete(courseUnitId,session); |
if(result.canDelete) |
{ |
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId); |
logger.warn("Will Delete courseUnit: " + cu.getImportYear() + ";" + cu.getSemestre() + ";" + cu.getCode() + ";" + cu.getName() + ";" + cu.getCourseCode() + ";" + cu.getCourseName()); |
if(cu.getTeachers() != null && cu.getTeachers().size() > 0) |
{ |
Iterator<TeacherImpl> teachers = cu.getTeachers().iterator(); |
while(teachers.hasNext()) |
{ |
Teacher t = teachers.next(); |
teachers.remove(); |
t.getTeachedUnits().remove(cu); |
logger.warn("Removing Teacher: " + t.getSigesCode() + " - id:" + t.getId() + " name:" + t.getName()); |
} |
} |
if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0) |
{ |
Iterator<CourseUnitAnnouncement> annoucements = cu.getAnnouncements().iterator(); |
while(annoucements.hasNext()) |
{ |
CourseUnitAnnouncement a = annoucements.next(); |
annoucements.remove(); |
a.setCourseUnit(null); |
logger.warn("Removing Annoucement: " + a.getId()); |
DaoFactory.getAnnouncementDaoImpl().delete(a); |
} |
} |
if(cu.getBlogs() != null && cu.getBlogs().size() > 0) |
{ |
Iterator<CourseUnitBlog> blogs = cu.getBlogs().iterator(); |
while(blogs.hasNext()) |
{ |
CourseUnitBlog a = blogs.next(); |
blogs.remove(); |
Set<BlogPost> posts = a.getPosts(); |
Iterator<BlogPost> postsIter = posts.iterator(); |
while(postsIter.hasNext()) |
{ |
BlogPost bp = postsIter.next(); |
a.getPosts().remove(bp); |
bp.setBlog(null); |
DaoFactory.getBlogPostDaoImpl().delete(bp); |
} |
a.setCourseUnit(null); |
logger.warn("Removing Blog: " + a.getId()); |
DaoFactory.getCourseUnitBlogDaoImpl().delete(a); |
} |
} |
if(cu.getCourseUnitProgram() != null) |
{ |
result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup"); |
cu.setCourseUnitProgram(null); |
} |
if(cu.getSummaries() != null && cu.getSummaries().size() > 0) |
{ |
result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente"); |
Iterator<CourseUnitSummary> summaries = cu.getSummaries().iterator(); |
while(summaries.hasNext()) |
{ |
CourseUnitSummary a = summaries.next(); |
summaries.remove(); |
a.setCourseUnit(null); |
logger.warn("Removing Summary: " + a.getId()); |
DaoFactory.getCourseUnitSummaryDaoImpl().delete(a); |
} |
} |
DaoFactory.getCourseUnitDaoImpl().delete(cu); |
result.messageResult = "Unidade Apagada"; |
} |
return result; |
} |
public List<CourseUnitContentsInfo> loadDeleteCandidates(String importYear,UserSession session) |
{ |
List<CourseUnitContentsInfo> courseUnitContentsInfos = new ArrayList<CourseUnitContentsInfo>(); |
Query q = AbstractDao.getCurrentSession().createQuery("select c.id from c in class " + CourseUnit.class.getName() + |
" where size(c.students) = 0 and c.importYear = ? order by c.importYear, c.semestre, c.code"); |
q.setString(0,importYear); |
Iterator iter = q.iterate(); |
while(iter.hasNext()) |
{ |
Long id = (Long) iter.next(); |
CourseUnitContentsInfo cuInfo = checkDelete(id,session); |
courseUnitContentsInfos.add(cuInfo); |
} |
return courseUnitContentsInfos; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitEvaluation.java |
---|
71,15 → 71,17 |
(c.getResponsableTeacher()!=null && usession.getUser().getId() == c.getResponsableTeacher().getId()) |
)) |
{ |
//PROF OU RESPONSAVEL |
cupv.persistViewInObjectTeacher(evaluation); |
cupv.setCourseUnitEvaluation(evaluation); |
} |
if(usession.getUser() instanceof Teacher |
else if(usession.getUser() instanceof Teacher |
&& (((usession.getUser())).hasRole(c.getCourse().getValidationRole()) |
|| |
((usession.getUser()) == c.getCourse().getCoordinator())) |
) |
{ |
//COMISSAO DE CURSO |
cupv.persistViewInObjectTeacher(evaluation); |
cupv.setCourseUnitEvaluation(evaluation); |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java |
---|
447,7 → 447,9 |
for (Disciplina disciplina : disciplinas.getDisciplina()) |
{ |
BigDecimal codigoDoCursoReal = disciplina.getCodigoCurso(); |
if(disciplina.getCdTipoDisciplina() != null && disciplina.getCdTipoDisciplina().intValue() == ImportCourseService.SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR) |
if(disciplina.getCdTipoDisciplina() != null |
&& disciplina.getCdTipoDisciplina().intValue() |
== ImportCourseService.SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR) |
{ |
codigoDoCursoReal = getRealCourse(disciplina.getCdTurma(),year,disciplina.getCdDuracao(),service); |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java |
---|
213,6 → 213,19 |
.list(); |
} |
public List<Course> findAllStatus(String importYear,boolean status) |
{ |
return createCriteria() |
.add(eq("importYear", importYear)) |
.add(eq("status", status)) |
.list(); |
} |
public List<Course> findActiveCourses(String importYear) |
{ |
return findAllStatus(importYear,true); |
} |
public List<Course> findAllNotIn(String importYear) |
{ |
return createCriteria().add(not(eq("importYear", importYear))) |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
449,6 → 449,8 |
{ |
//todo falta a projeccao do teacher id |
return createCriteria() |
.createAlias("course","c") |
.add(eq("c.status", true)) |
.add(eq("importYear", DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear())) |
.add((or(isNull("programStreamId"), eq("programStreamId", "")))) |
.createAlias("teachers", "th") |
550,10 → 552,16 |
public Course course; |
public List<CourseUnit> courseUnits; |
} |
/** |
* Load all programs from active courses that are for validation |
* @param userSession |
* @return |
*/ |
public List<CourseMissingValidationProgram> loadMissingProgramValidate(UserSession userSession) |
{ |
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCourses(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()); |
for(Course course: courses) |
{ |
if(userSession.getUser().hasRole(course.getValidationRole()) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
571,11 → 579,15 |
return result; |
} |
/** |
* Load all programs missing from active courses |
* @param userSession |
* @return |
*/ |
public List<CourseMissingValidationProgram> loadMissingPrograms(UserSession userSession) |
{ |
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCourses(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()); |
for(Course course: courses) |
{ |
if(userSession.getUser().hasRole(course.getValidationRole()) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsAdminController.java |
---|
8,6 → 8,7 |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.filters.exceptions.NotFoundException; |
import pt.estgp.estgweb.services.common.ISearchResults; |
import pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService; |
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
370,23 → 371,25 |
{ |
try { |
// long id = Long.parseLong(request.getParameter("id")); |
// IServiceManager sm = null; |
// sm = ServiceManager.getInstance(); |
// String[] names = new String[]{}; |
// Object[] args = new Object[]{id}; |
long id = Long.parseLong(request.getParameter("id")); |
IServiceManager sm = null; |
sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{id}; |
// sm.execute(RequestUtils.getRequester(request, response), "DeleteCourseUnit", args, names); |
// addMessage(request,"courseunit.removed"); |
logger.info("Não implementado por razoes de segurança"); |
addMessage(request,"courseunit.security.not.implemented"); |
DeleteCourseUnitService.CourseUnitContentsInfo result = (DeleteCourseUnitService.CourseUnitContentsInfo) sm.execute(RequestUtils.getRequester(request, response), "TryDeleteCourseUnitService", args, names); |
if(result.isCanDelete()) |
addMessage(request,"courseunit.removed"); |
else |
addError(request,"courseunit.cant.be.removed"); |
//logger.info("Não implementado por razoes de segurança"); |
//addMessage(request,"courseunit.security.not.implemented"); |
return mapping.findForward("delete"); |
} catch (Throwable e) { |
addMessage(request,"error.500"); |
logger.error(e,e); |
return mapping.findForward("error500"); |
} |
return mapping.getInputForward(); |
} |
public ActionForward search(ActionMapping mapping, |
/impl/src/web/admin/courseunits/topnavEditCourseUnitFromDelete.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" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace("/admin/courseUnitsDeleteAdmin.do", "courseunit.delete.administration"); |
topNav.addNavPlace(null, "courseunit.edit"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
Property changes: |
Added: svn:executable |
+ * |
/impl/src/web/admin/courseunits/courseUnitDeleteAdministration.jsp |
---|
New file |
0,0 → 1,204 |
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %> |
<%@ page import="pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService" %> |
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="java.util.List" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<% |
String importYear = request.getParameter("importYear"); |
if(importYear == null) |
importYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYearCreateTransaction(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{importYear}; |
List<DeleteCourseUnitService.CourseUnitContentsInfo> courseUnitContentsInfos = (List<DeleteCourseUnitService.CourseUnitContentsInfo>) sm.execute(RequestUtils.getRequester(request, response), "LoadCandidatesDeleteCourseUnitService", args, names); |
request.setAttribute("CourseUnitContentsInfos", courseUnitContentsInfos); |
%> |
<style> |
.modal-dialog{ |
position: absolute; |
left: 0; |
//now you must set a margin left under zero - value is a half width your window |
} |
</style> |
<div class="container"> |
<div class="row"> |
<div class="col-sm-12 col-md-6"> |
<div class="panel panel-primary"> |
<div class="panel-heading"><bean:message key="course.pedagogic.contents.admin"/> - <%=importYear%></div> |
<div class="panel-body"> |
<form role="form" action="<%=request.getContextPath()%>/admin/courseUnitsDeleteAdmin.do" method="post"> |
<div class="form-group"> |
<label for="importYear"><bean:message key="courseunit.importYear"/></label> |
<select name="importYear" id="importYear" class="form-control" onchange="this.form.submit()"> |
<% |
List<String> years = DatesUtils.getImportYears(10); |
for(String year: years) |
{ |
String activo = year.equals(importYear)?"selected":""; |
%> |
<option value="<%=year%>" <%=activo%>><%=year%></option> |
<% |
} |
%> |
</select> |
</div> |
</form> |
</div> |
</div> |
</div> |
</div> |
<script> |
$(document).ready(function(){ |
$('.deleteModal').on('show.bs.modal', function(e) { |
$(this).find('.btn-ok').attr('href', $(e.relatedTarget).data('href')); |
}); |
}); |
</script> |
<logic:iterate id="contentsInfo" name="CourseUnitContentsInfos" type="pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService.CourseUnitContentsInfo"> |
<div id="info${contentsInfo.cuv.id}" class="modal fade" role="dialog"> |
<div class="modal-dialog modal-sm"> |
<!-- Modal content--> |
<div class="modal-content"> |
<div class="modal-header"> |
<button type="button" class="close" data-dismiss="modal">×</button> |
<h4 class="modal-title">${contentsInfo.cuv.name}/${contentsInfo.cuv.code} - ${contentsInfo.cuv.courseName}/${contentsInfo.cuv.courseCode} - ${contentsInfo.cuv.semestre} - ${contentsInfo.cuv.importYear}</h4> |
</div> |
<div class="modal-body"> |
<logic:iterate id="msgWarn" name="contentsInfo" property="warnings"> |
<p>${msgWarn}</p> |
</logic:iterate> |
</div> |
<div class="modal-footer"> |
<logic:equal value="true" name="contentsInfo" property="canDelete"> |
<button class="btn btn-danger" data-href="<%=request.getContextPath()%>/user/startDeleteCourseUnitAdminFromUnitsDeleteAdministration.do?dispatch=delete&id=${contentsInfo.cuv.id}" data-toggle="modal" data-target="#confirm-delete${contentsInfo.cuv.id}"> |
<bean:message key="delete"/> |
</button> |
</logic:equal> |
<html:link styleClass="btn btn-default" action="/user/startLoadCourseUnitFromHome?id=${contentsInfo.cuv.id}" target="_blank">Ir para a página</html:link> |
<button type="button" class="btn btn-default" data-dismiss="modal"><bean:message key="close"/></button> |
</div> |
</div> |
</div> |
</div> |
<div class="modal fade deleteModal" id="confirm-delete${contentsInfo.cuv.id}" tabindex="-1" role="dialog" > |
<div class="modal-dialog"> |
<div class="modal-content"> |
<div class="modal-header"> |
<h4 class="modal-title">${contentsInfo.cuv.name}/${contentsInfo.cuv.code} - ${contentsInfo.cuv.courseName}/${contentsInfo.cuv.courseCode} - ${contentsInfo.cuv.semestre} - ${contentsInfo.cuv.importYear}</h4> |
</div> |
<div class="modal-body"> |
<logic:iterate id="msgWarn" name="contentsInfo" property="warnings"> |
<p>${msgWarn}</p> |
</logic:iterate> |
<logic:empty name="contentsInfo" property="warnings"> |
Não tem avisos nesta unidade. |
</logic:empty> |
</div> |
<div class="modal-footer"> |
Tem a certeza que desja apagar esta unidade curricular? |
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> |
<a class="btn btn-danger btn-ok">Delete</a> |
</div> |
</div> |
</div> |
</div> |
</logic:iterate> |
<!--Modais de iformação com avisos de conteudo da unidade--> |
<jomm:messages/> |
<html:errors/> |
<div class="row"> |
<div class="col-sm-12 col-md-12"> |
<div class="panel panel-default"> |
<div class="panel-heading"> |
Administração de Unidades Candidatas a Apagar com Zero Estudantes |
<a href="<%=request.getContextPath()%>/admin/courseUnitsDeleteAdmin.do" class="btn btn-info"><span class="glyphicon glyphicon-refresh"></span></a> |
</div> |
<div class="panel-body"> |
<table class="tablesorter tablesorterfiltered"> |
<thead> |
<tr> |
<th>Código</th> |
<th>Nome</th> |
<th>Código Curso</th> |
<th class="filter-name filter-select">Curso</th> |
<th class="filter-name filter-select">Grau Curso</th> |
<th>Ano</th> |
<th class="filter-name filter-select">Semestre</th> |
<th class="filter-name filter-select">Apagar</th> |
<th>Apagar</th> |
<th>Editar</th> |
<th>Info</th> |
</tr> |
</thead> |
<tbody> |
<logic:iterate id="contentsInfo" name="CourseUnitContentsInfos" type="pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService.CourseUnitContentsInfo"> |
<tr> |
<td>${contentsInfo.cuv.code}</td> |
<td>${contentsInfo.cuv.name}</td> |
<td>${contentsInfo.cuv.courseCode}</td> |
<td>${contentsInfo.cuv.courseName}</td> |
<td><bean:message key="course.${contentsInfo.cuv.courseView.degreeCleanCode}"/></td> |
<td>${contentsInfo.cuv.importYear}</td> |
<td><bean:message key="courseunit.${contentsInfo.cuv.semestre}"/></td> |
<td> |
<bean:message key="courseunit.canDelete.${contentsInfo.canDelete}"/> |
</td> |
<td> |
<logic:equal value="true" name="contentsInfo" property="canDelete"> |
<button class="btn btn-danger" data-href="<%=request.getContextPath()%>/user/startDeleteCourseUnitAdminFromUnitsDeleteAdministration.do?dispatch=delete&id=${contentsInfo.cuv.id}" data-toggle="modal" data-target="#confirm-delete${contentsInfo.cuv.id}"> |
<bean:message key="delete"/> |
</button> |
</logic:equal> |
</td> |
<td> |
<html:link styleClass="btn btn-warning" action="/user/startEditCourseUnitAdminFromUnitsDeleteAdministration?id=${contentsInfo.cuv.id}"><bean:message key="edit"/><span class="glyphicon glyphicon-pencil"></span></html:link> |
</td> |
<td> |
<logic:notEmpty name="contentsInfo" property="warnings"> |
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#info${contentsInfo.cuv.id}"><span class="glyphicon glyphicon-alert"></span></button> |
</logic:notEmpty> |
</td> |
</tr> |
</logic:iterate> |
</tbody> |
</table> |
</div> |
</div> |
</div> |
</div> |
</div> |
/impl/src/web/admin/courseunits/courseunit.jsp |
---|
55,7 → 55,23 |
<li><html:link action="/user/startLoadCourseUnitFromHome.do?id=${CourseUnitView.id}">Página da Unidade</html:link></li> |
<li><html:link action="/startLoadCourseUnitProgram.do?courseUnitId=${CourseUnitView.id}">Ficha Curricular</html:link></li> |
</ul> |
<html:form styleClass="form" action="/user/courseUnitControllerAdminFromServiceZone" enctype="multipart/form-data"> |
<% |
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 styleClass="form" action="${user}/courseUnitControllerAdmin${fromAction}${from}" enctype="multipart/form-data"> |
<%--<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"/> |
/impl/src/web/admin/courseunits/topnavCourseUnitDeleteAdministration.jsp |
---|
New file |
0,0 → 1,16 |
<%@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" %> |
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%--<baco:object2Request beanIdName="id" classname="pt.estgp.estgweb.domain.CourseUnit" useBean="CourseUnitView"/>--%> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "courseunit.delete.administration"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
Property changes: |
Added: svn:executable |
+ * |