Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1170 → Rev 1171

/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">&times;</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
+ *