Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1336 → Rev 1337

/branches/v3/impl/src/java/pt/estgp/estgweb/Globals.java
430,4 → 430,9
 
 
public final static int CERTIFICATES_EXPIRTATION_IN_DAYS = ConfigProperties.getIntProperty("certificates.expire.in.days");
 
 
public static final String BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE = ConfigProperties.getProperty("baco.tipologia.simples");
public static final String BACO_TIPOLOGIA_SIMPLES_DS = ConfigProperties.getProperty("netpa.tipo.aula." + BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE);
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/pedagogico/UpdateCoursesAndUnitsJobService.java
602,4 → 602,35
}
}
}
 
 
/**
* SERVIÇO
* @param questionarioId
* @param cursosAfetos
* @param session
* @param questionarioCleared
* @throws IOException
* @throws TransformationException
* @throws NotAuthorizedException
*/
public void updateTipologiasPedagogico(long questionarioId, List<QuestionarioPedagogicoCursoAfeto> cursosAfetos, UserSession session,QuestionarioImpl questionarioCleared) throws IOException, TransformationException, NotAuthorizedException {
 
if(!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name()))
{
throw new NotAuthorizedException("Nao tem autorização para alterar as tipologias");
}
for(QuestionarioPedagogicoCursoAfeto cursoAfeto: cursosAfetos)
{
QuestionarioPedagogicoCursoAfeto cuAfetoPersistent = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().load(cursoAfeto.getId());
if(cuAfetoPersistent.getQuestionario().getId() == questionarioId)
{
cuAfetoPersistent.setUsarTipologias(cursoAfeto.isUsarTipologias());
}
else
logger.warn("Curso pedido no serviço não faz parte do questionario requisitado: " + cursoAfeto.getId() + " " + cursoAfeto.getQuestionario().getId() + " != " + questionarioId);
 
}
 
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
13,9 → 13,7
 
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.*;
 
/**
* Created by IntelliJ IDEA.
848,6 → 846,7
{
return serializeMergedList(obtainMergeTipologias());
}
 
public ArrayList<Tipologia> obtainMergeTipologias()
{
ArrayList<Tipologia> merge = new ArrayList<Tipologia>();
913,6 → 912,83
}
 
 
public ArrayList<Tipologia> obtainTipologiasSimples(CourseUnit courseUnit)
{
ArrayList<Tipologia> merge = new ArrayList<Tipologia>();
 
Map<String,Map<String,Tipologia>> docenteTurmas = new HashMap<String,Map<String,Tipologia>>();
 
fullfillTipologiasSimples(getTipologiasSumarios(), docenteTurmas);
fullfillTipologiasSimples(getTipologiasExtraAdicionadas(), docenteTurmas);
fullfillTipologiasSimples(getTipologiasHorarioReferencia(), docenteTurmas);
fullfillTipologiasSimples(getTipologiasMarcadas(), docenteTurmas);
fullfillTipologiasSimples(getTipologiasUsadas(), docenteTurmas);
 
 
if(docenteTurmas.size() == 0)
{
//NAO Há sumários vamos associar todos os docentes a todas as turmas
if(courseUnit.getTurmas() != null && courseUnit.getTeachers() != null)
{
for(CourseUnitTurma turma: courseUnit.getTurmas())
{
for(Teacher t : courseUnit.getTeachers())
{
Tipologia simples = new Tipologia();
simples.setMarkWarning(true);
simples.setCdDocente(""+t.getSigesCode());
simples.setCdTurma(turma.getTurma());
simples.setCdTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE);
simples.setDsTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_DS);
merge.add(simples);
}
}
}
}
else
{
for(Map.Entry<String,Map<String,Tipologia>> docentes: docenteTurmas.entrySet())
{
for(Tipologia tipologia: docentes.getValue().values())
{
merge.add(tipologia);
}
}
}
return merge;
}
 
private void fullfillTipologiasSimples(ArrayList<Tipologia> tipologias, Map<String, Map<String, Tipologia>> docenteTurmas) {
if(tipologias != null)
for(Tipologia tipo: tipologias)
{
Map<String,Tipologia> turmasDocente = docenteTurmas.get(tipo.getCdDocente());
if(turmasDocente == null)
turmasDocente = new HashMap<String,Tipologia>();
docenteTurmas.put(tipo.getCdDocente(),turmasDocente);
Tipologia simples = turmasDocente.get(tipo.getCdTurma());
if(simples==null)
{
simples = new Tipologia();
simples.setCdDocente(tipo.getCdDocente());
simples.setCdTurma(tipo.getCdTurma());
simples.setCdTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE);
simples.setDsTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_DS);
if(tipo.getOcorrencias() > 0)
{
simples.setOcorrencias(tipo.getOcorrencias());
}
turmasDocente.put(tipo.getCdTurma(),simples);
}
if(tipo.getOcorrencias() > 0)
{
simples.setOcorrencias(simples.getOcorrencias()+tipo.getOcorrencias());
}
 
}
}
 
 
}
 
 
/branches/v3/impl/src/java/pt/estgp/estgweb/web/form/questionarios/QuestionarioForm.java
5,9 → 5,13
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.QuestionarioImpl;
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto;
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfetoImpl;
import pt.estgp.estgweb.utils.DynamicArrayList;
import pt.estgp.estgweb.web.form.ApplicationForm;
 
import javax.servlet.http.HttpServletRequest;
import java.util.List;
 
 
/**
45,6 → 49,17
this.showQuestionarioForm = showQuestionarioForm;
}
 
public List<QuestionarioPedagogicoCursoAfeto> cursosAfetos = new DynamicArrayList<QuestionarioPedagogicoCursoAfeto>(QuestionarioPedagogicoCursoAfetoImpl.class);
 
public List<QuestionarioPedagogicoCursoAfeto> getCursosAfetos()
{
return cursosAfetos;
}
 
public void setCursosAfetos(List<QuestionarioPedagogicoCursoAfeto> cursosAfetos) {
this.cursosAfetos = cursosAfetos;
}
 
public QuestionarioForm()
{
 
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/questionarios/QuestionarioCourseSelectionController.java
69,12 → 69,29
for(ILogMessage log: logMessages.getLogMessages())
{
if(log.getType() == LogMessageTypeEnum.ERROR || log.getType() == LogMessageTypeEnum.WARNING || log.getType() == LogMessageTypeEnum.FATAL)
addError(request,log.getMsg());
addErrorAssString(request,log.getMsg());
else
addMessage(request,log.getMsg());
addMessageAsString(request,log.getMsg());
}
return mapping.findForward("coursesSelection");
return mapping.findForward("admin");
}
 
public ActionForward updateTipologias(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable
{
QuestionarioForm frm = (QuestionarioForm) form;
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"questionarioId","cursosAfetos"};
Object[] args = {frm.getQuestionario().getId(),frm.getCursosAfetos()};
 
sm.execute(RequestUtils.getRequester(request, response),"QuestionarioUpdateTipologiasPedagogico",args,names);
 
addMessage(request,"questionario.tipologias.update.success");
return mapping.findForward("coursesCheck");
}
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/ApplicationDispatchController.java
1,24 → 1,13
package pt.estgp.estgweb.web.controllers;
 
import jomm.utils.MessageResources;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.action.*;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.web.controllers.announcements.AnnouncementsController;
import pt.estgp.estgweb.web.form.announcements.AnnouncementsForm;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.domain.UserSessionImpl;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
 
import jomm.utils.MessageResources;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
54,6 → 43,13
saveMessages(request,actionMessages);
}
 
public void addMessageAsString(HttpServletRequest request, String message)
{
ActionMessages actionMessages = getMessages(request);
actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new StringMessage(message));
saveMessages(request,actionMessages);
}
 
public void addMessage(HttpServletRequest request, String message, String arg0)
{
ActionMessages actionMessages = getMessages(request);
139,6 → 135,13
saveErrors(request,actionMessages);
}
 
public void addErrorAssString(HttpServletRequest request, String message)
{
ActionMessages actionMessages = getErrors(request);
actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new StringMessage(message));
saveErrors(request,actionMessages);
}
 
public void addError(HttpServletRequest request, String message, String arg0)
{
ActionMessages actionMessages = getErrors(request);
213,5 → 216,24
saveErrors(request,actionMessages);
}
 
public static class StringMessage extends ActionMessage
{
String message;
public StringMessage(String message)
{
super(message);
this.message = message;
}
 
@Override
public boolean isResource() {
return false;
}
 
@Override
public String toString() {
return message;
}
}
 
}
/branches/v3/impl/src/doc/estgweb.eap
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/branches/v3/impl/src/hbm/pt/estgp/estgweb/domain/Questionarios.hbm.xml
187,6 → 187,10
</property>
<property name="substate" type="string"/>
 
<property name="answerGenerationTaskId" type="long">
<column name="answer_generation_task_id" default="0"/>
</property>
 
<!--Modulo de Pedagogico-->
<property name="courseSelectionTaskId" type="long">
<column name="course_selection_task_id" default="0"/>
460,6 → 464,9
<property name="nome" type="string"/>
<property name="marcadas" type="int"/>
<property name="obs" type="string"/>
<property name="usarTipologias" type="boolean">
<column name="usarTipologias" default="false"/>
</property>
<many-to-one name="questionario" class="pt.estgp.estgweb.domain.Questionario" lazy="proxy" outer-join="false"/>
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="proxy" outer-join="false"/>
<set name="unidadesAfetas" lazy="true">
/branches/v3/impl/src/web/admin/questionarios/questionarioAdmin.jsp
15,7 → 15,10
 
 
<%
long questionarioId = Long.parseLong(request.getParameter("questionario.id"));
String qId = request.getParameter("questionarioId");
if(qId == null)
qId = request.getParameter("questionario.id");
long questionarioId = Long.parseLong(qId);
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"questionarioId"};
Object[] args = {questionarioId};
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/pedagogicoEstudanteCoursesSelection.jsp
20,7 → 20,11
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%
long questionarioId = Long.parseLong(request.getParameter("questionarioId"));
String qId = request.getParameter("questionarioId");
if(qId == null)
qId = request.getParameter("questionario.id");
Long questionarioId = Long.parseLong(qId);
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"questionarioId"};
Object[] args = {questionarioId};
55,15 → 59,14
function()
{
<baco:clearOperation name="Questionario" op="QUESTIONARIO_SCHEDULLE_SELECT_COURSES">
$(".courseCheck").attr("data-toogle","toggle")
 
$(".courseCheck").attr("data-toogle","toggle");
$('.courseCheck').bootstrapToggle({
on: 'Sim',
off: 'Não'
on: 'Sim',
off: 'Não'
});
$('.checkAll').bootstrapToggle({
on: 'Sim',
off: 'Não'
on: 'Sim',
off: 'Não'
});
</baco:clearOperation>
<baco:notClearOperation name="Questionario" op="QUESTIONARIO_SCHEDULLE_SELECT_COURSES">
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/topnavQuestionarioPedagogicoCoursesAdmin.jsp
7,7 → 7,11
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%
Long questionarioId = Long.parseLong(request.getParameter("questionarioId"));
String qId = request.getParameter("questionarioId");
if(qId == null)
qId = request.getParameter("questionario.id");
Long questionarioId = Long.parseLong(qId);
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"questionarioId"};
Object[] args = {questionarioId};
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/pedagogicoCourseCheckCursoAfeto.jsp
New file
0,0 → 1,109
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnitImpl" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.util.List" %>
<%@ 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" %>
<%
long cursoAfetoId = Long.parseLong(request.getParameter("cursoAfetoId"));
AbstractDao.getCurrentSession().beginTransaction();
QuestionarioPedagogicoCursoAfeto cursoAfeto = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().load(cursoAfetoId);
cursoAfeto = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().narrow(cursoAfeto);
request.setAttribute("CursoAfeto",cursoAfeto);
%>
<table class="tablesorter-blue">
<thead>
<tr>
<th>Codigo</th>
<th>Nome</th>
<th>Tipologias Manuais</th>
<th>Turmas</th>
<th>Docentes</th>
<th>Marcada</th>
<th>Docentes s/ turma</th>
<th>Turmas s/ docente</th>
<th></th>
</tr>
</thead>
<tbody>
<logic:iterate id="unidade" name="CursoAfeto" property="unidadesAfetas" type="pt.estgp.estgweb.domain.QuestionarioPedagogicoUnidadeCurricularAfetaImpl">
<tr>
<td>${unidade.codigoUnidade}</td>
<td>
<html:link target="_blank" action="/user/startLoadCourseUnitFromHome.do?id=${unidade.courseUnit.id}">
${unidade.nome}
</html:link>
</td>
<td>${unidade.addedTipologias}</td>
<td>
<a href="#" data-href="<%=request.getContextPath()%>/admin/questionarios/pedagogicoEstudante/listCunitTurmas.jsp?courseUnitId=${unidade.courseUnit.id}" data-title="Turmas da Unidade ${unidade.nome} (${unidade.codigoUnidade}) do curso de ${CursoAfeto.nome} (${CursoAfeto.codigoCurso})" data-toggle="modal" data-target="#modalAjaxRequest">
${unidade.turmas}
</a>
<td>
<a href="#" data-href="<%=request.getContextPath()%>/user/courseunits/teachersInfo.jsp?courseUnitId=${unidade.courseUnit.id}" data-title="Docentes da unidade de ${unidade.nome} (${unidade.codigoUnidade}) do curso de ${CursoAfeto.nome} (${CursoAfeto.codigoCurso})" data-toggle="modal" data-target="#modalAjaxRequest">
${unidade.profs}
</a>
 
</td>
<td>
<logic:equal value="true" name="unidade" property="marked">
<span class="glyphicon glyphicon-alert"></span>
</logic:equal>
</td>
<td>${unidade.profsWithoutTurma}</td>
<td>${unidade.turmaWithoutProf}</td>
<td>
<script>
$(document).ready(
function(){
$('#tipologias${unidade.id}').on('shown.bs.collapse', function () {
$("#tipologias${unidade.id}Button .glyphicon").removeClass("glyphicon-zoom-in").addClass("glyphicon-zoom-out");
});
$('#tipologias${unidade.id}').on('hidden.bs.collapse', function () {
$("#tipologias${unidade.id}Button .glyphicon").removeClass("glyphicon-zoom-out").addClass("glyphicon-zoom-in");
});
}
);
</script>
<button id="tipologias${unidade.id}Button" class="btn btn-default btn-small" type="button" data-toggle="collapse" data-target="#tipologias${unidade.id}"><span class="glyphicon glyphicon-zoom-in"></span></button>
<script>
$(document).ready(
function(){
$.post("<%=request.getContextPath()%>/admin/questionarios/pedagogicoEstudante/pedagogicoCourseCheckUnidadeAfeta.jsp?unidadeAfetaId=${unidade.id}", function(data) {
$("#tipologias${unidade.id} .tipologias")
.html(data);
evaluateTableSortersInside("#tipologias${unidade.id} .tipologias");
});
}
);
</script>
</td>
</tr>
<tr class="collapse" id="tipologias${unidade.id}">
<td colspan="9" class="tipologias" style="padding-left: 25px">
 
<div class="panel panel-default">
<div class="panel-body">
<p>Por favor aguarde um momento, o sistema está a carregar as tipologias <img src="<%=request.getContextPath()%>/imgs/wait.gif"/></p>
</div>
</div>
</td>
</tr>
<%
DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().evict(unidade);
%>
</logic:iterate>
</tbody>
</table>
 
<%
DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().evict(cursoAfeto);
AbstractDao.getCurrentSession().getTransaction().commit();
%>
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/pedagogicoCourseCheckUnidadeAfeta.jsp
New file
0,0 → 1,99
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnitImpl" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoUnidadeCurricularAfeta" %>
<%@ 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" %>
<%
long unidadeAfetaId = Long.parseLong(request.getParameter("unidadeAfetaId"));
AbstractDao.getCurrentSession().beginTransaction();
QuestionarioPedagogicoUnidadeCurricularAfeta unidade = DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().load(unidadeAfetaId);
unidade = DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().narrow(unidade);
request.setAttribute("unidade",unidade);
%>
 
<%
CourseUnitImpl courseUnit = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().narrow(unidade.getCourseUnit());
List<CourseUnitImpl.Tipologia> tipologias;
 
if(unidade.getCursoAfeto().isUsarTipologias())
{
tipologias = courseUnit.getTipologiasClass().obtainMergeTipologias();
}
else
{
tipologias = courseUnit.getTipologiasClass().obtainTipologiasSimples(courseUnit);
}
request.setAttribute("tipologias",tipologias);
 
%>
<table class="tablesorterfiltered">
<thead>
<tr>
<th class="filter-name filter-select">Código Docente</th>
<th class="filter-name filter-select">Docente</th>
<th class="filter-name filter-select">Tipologia</th>
<th>Sumariadas</th>
<th class="filter-name filter-select">Turma</th>
<th>Estudantes</th>
<th>Tip. Manual</th>
<th>Tip. Horário Ref.</th>
<th>Tip. Sumário</th>
<th>Usar</th>
</tr>
</thead>
<tbody>
<logic:iterate id="tipologia" name="tipologias" type="pt.estgp.estgweb.domain.CourseUnitImpl.Tipologia">
<%
CourseUnitImpl.TipologiaPersistent tipoPersistente = courseUnit.loadPersistent(tipologia);
request.setAttribute("tipoPersistente",tipoPersistente);
%>
<tr>
<td>${tipologia.cdDocente}</td>
<td>${tipoPersistente.teacher.name}</td>
<td>${tipologia.dsTipologia}</td>
<td>${tipologia.ocorrencias}</td>
<td>${tipologia.cdTurma}</td>
<td><%=tipoPersistente.getCourseUnitTurma().getStudents().size()%></td>
<td>
<logic:equal value="true" name="tipologia" property="extra">
<span class="glyphicon glyphicon-asterisk"></span>
</logic:equal>
</td>
<td>
<logic:equal value="true" name="tipologia" property="horRef">
<span class="glyphicon glyphicon-asterisk"></span>
</logic:equal>
</td>
<td>
<logic:equal value="true" name="tipologia" property="sumario">
<span class="glyphicon glyphicon-asterisk"></span>
</logic:equal>
</td>
 
<td>
<logic:equal value="true" name="tipologia" property="sumario">
<span class="glyphicon glyphicon-ok"></span>
</logic:equal>
</td>
</tr>
<%
DaoFactory.getCourseUnitDaoImpl().evict(unidade.getCourseUnit());
%>
</logic:iterate>
</tbody>
</table>
 
 
<%
DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().evict(unidade);
AbstractDao.getCurrentSession().getTransaction().commit();
%>
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/questionarioAdminPanel.jsp
139,8 → 139,7
<div class="col-md-3 col-sm-3">
<div class="list-group">
<div class="list-group-item">
<html:link styleClass="btn btn-warning" action="/admin/questionarioPedagogicoStartChooseCourses?questionarioId=${Questionario.id}">
 
<html:link styleClass="btn btn-warning" action="/admin/questionarioPedagogicoStartCheckCourses?questionarioId=${Questionario.id}">
Verificar Atribuições
</html:link>
</div>
163,9 → 162,9
<hr/>
<div class="row">
<div class="col-md-12 col-sm-12">
<%--<baco:notClearOperation name="Questionario" op="QUESTIONARIO_REVERT_ALL_ASSIGNEMENTS">--%>
<button class="btn btn-danger" type="button" data-toggle="modal" data-target="#confirm-ModalGeneric" data-message="Esta operação irá anular os cursos e unidades atribuidos anteriormente!! Tem a certeza que deseja prosseguir?" data-href="<%=request.getContextPath()%>/admin/questionariosPaeSelectCourses.do?dispatch=revertAssignements&questionario.id=${Questionario.id}">Anular Atribuições</button>
<%--</baco:notClearOperation>--%>
<baco:clearOperation name="Questionario" op="QUESTIONARIO_REVERT_ALL_ASSIGNEMENTS">
<button class="btn btn-danger" type="button" data-toggle="modal" data-target="#confirm-ModalGeneric" data-message="Esta operação irá anular os cursos e unidades atribuidos anteriormente!! Tem a certeza que deseja prosseguir?" data-href="<%=request.getContextPath()%>/admin/questionariosPaeSelectCourses.do?dispatch=revertAssignements&questionario.id=${Questionario.id}#NOWTASK">Anular Atribuições</button>
</baco:clearOperation>
</div>
</div>
</baco:clearOperation>
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/topnavQuestionarioPedagogicoCoursesCheck.jsp
New file
0,0 → 1,27
<%@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.QuestionarioImpl" %>
<%@ 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" %>
<%
String qId = request.getParameter("questionarioId");
if(qId == null)
qId = request.getParameter("questionario.id");
Long questionarioId = Long.parseLong(qId);
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"questionarioId"};
Object[] args = {questionarioId};
QuestionarioImpl questionario = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"loadQuestionarioAdmin",args,names);
 
 
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/homePae.do", "intranet.separator.home.back");
topNav.addNavPlace("/admin/listQuestionarios.do", "surveys");
topNav.addNavPlace("/admin/adminQuestionario.do?questionario.id=" + questionarioId, "survey.admin",""+questionario.getId());
topNav.addNavPlace(null, "questionarios.check.courses",questionario.getSemestre(),questionario.getYear());
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/pedagogicoEstudanteCoursesCheck.jsp
New file
0,0 → 1,350
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnitImpl" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioImpl" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %>
<%@ page import="pt.estgp.estgweb.utils.ConfigProperties" %>
<%@ 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 import="pt.estgp.estgweb.utils.DynamicArrayList" %>
<%@ 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" %>
<%
String qId = request.getParameter("questionarioId");
if(qId == null)
qId = request.getParameter("questionario.id");
Long questionarioId = Long.parseLong(qId);
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"questionarioId"};
Object[] args = {questionarioId};
QuestionarioImpl questionario = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"loadQuestionarioAdmin",args,names);
 
 
request.setAttribute("Questionario", questionario);
 
List<String> institutionCodes = ConfigProperties.getListValues("questionario.instituition.");
 
AbstractDao.getCurrentSession().beginTransaction();
 
 
%>
<jsp:useBean id="Questionario" type="pt.estgp.estgweb.domain.QuestionarioImpl" scope="request"/>
 
 
<jsp:include page="/layout/pleaseWait.jsp"/>
 
<html:form action="/admin/questionariosPaeSelectCourses">
<html:hidden property="questionario.id" value="${Questionario.id}"/>
<input type="hidden" name="dispatch" value="updateTipologias"/>
 
<jsp:useBean id="QuestionarioForm" type="pt.estgp.estgweb.web.form.questionarios.QuestionarioForm" scope="request"/>
<%
//Variavel iniciada no serviço de load por chamada do IAnswerProcessor respectivo para inicializar
//as variaveis especificas
List<QuestionarioPedagogicoCursoAfeto> cursosAfetados = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().find(questionario.getId());
QuestionarioForm.setCursosAfetos(cursosAfetados);
%>
<div class="container-fluid">
 
<style>
td.unidades
{
background-color: dimgray !important;
}
 
td.tipologias
{
background-color: #baffdc !important;
}
 
</style>
<div class="panel panel-primary">
<div class="panel-heading">
Selecção de Cursos para o Questionário ${Questionario.id} - Periodo: ${Questionario.semestre} de ${Questionario.year}
</div>
<div class="panel-body">
<html:errors/>
<jomm:messages/>
 
 
<div class="baco-please-wait-target">
 
<ul class="nav nav-tabs">
<li id="institutionsSeparatorsGerarFinal"><a href="javascript:showInstitutionCode('GerarFinal')"><strong><u>Operações</u></strong></a></li>
<%
for(String institutionCode: institutionCodes)
{
String institutionName = ConfigProperties.getProperty("institution.code." + institutionCode);
%>
<li id="institutionsSeparators<%=institutionCode%>"><a href="javascript:showInstitutionCode('<%=institutionCode%>')"><%=institutionName%></a></li>
<%
}
%>
 
</ul>
<script>
$(document).ready(
function(){
showInstitutionCode('GerarFinal');
 
 
$(".courseCheck").attr("data-toogle","toggle");
$('.courseCheck').bootstrapToggle({
on: 'Tipologias',
off: 'Simples'
});
$('.checkAll').bootstrapToggle({
on: 'Tipologias',
off: 'Simples'
});
}
 
);
 
function selectAll(code,source)
{
 
$('#institution' + code).find('.courseCheck').each(
function()
{
if($(source).prop("checked"))
$(this).bootstrapToggle('on');
else
$(this).bootstrapToggle('off');
});
}
 
 
function showInstitutionCode(institutionCode)
{
<%
for(String institutionCode: institutionCodes)
{
%>
if(institutionCode == '<%=institutionCode%>')
{
$("#institution<%=institutionCode%>").show();
$("#institutionsSeparators<%=institutionCode%>").addClass("active");
}
else
{
$("#institution<%=institutionCode%>").hide();
$("#institutionsSeparators<%=institutionCode%>").removeClass("active");
}
<%
}
%>
if(institutionCode == 'GerarFinal')
{
$("#institutionGerarFinal").show();
$("#institutionsSeparatorsGerarFinal").addClass("active");
}
else
{
$("#institutionGerarFinal").hide();
$("#institutionsSeparatorsGerarFinal").removeClass("active");
}
}
 
 
</script>
 
<%
for(String institutionCode: institutionCodes)
{
String institutionName = ConfigProperties.getProperty("institution.code." + institutionCode);
 
%>
 
 
<div class="panel panel-default" id="institution<%=institutionCode%>" style="display: none">
<div class="panel-heading">
Cursos da <%=institutionName%>
</div>
<div class="panel-body">
<table class="tablesorter-blue">
<thead>
<tr>
<th>Codigo</th>
<th>Tipo de Curso</th>
<th>Curso</th>
<th>Papel Comissão Curso</th>
<th>Unidades</th>
<th>Marcadas </th>
<th>Turmas</th>
<th></th>
<th class="filter-false" data-sorter="false">
<input class="checkAll" type="checkbox" onchange="selectAll('<%=institutionCode%>',this)">
</th>
 
</tr>
</thead>
<tbody>
<nested:iterate id="cursoAfeto" name="QuestionarioForm" property="cursosAfetos" type="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfetoImpl" scope="request">
<%
if(cursoAfeto.getCodigoInstituicao().equals(institutionCode))
{
int turmasSize = DaoFactory.getCourseDaoImpl().countCoursesUnitsTurmas(questionario.getYear(), cursoAfeto.getCourse().getId());
CourseView cv = new CourseView(cursoAfeto.getCourse());
request.setAttribute("CourseView",cv);
request.setAttribute("CursoAfeto",cursoAfeto);
 
%>
<tr>
<td>
<nested:hidden property="id"/>
${CourseView.code}
</td>
<td><bean:message key="course.${CourseView.degreeCleanCode}"/></td>
<td>${CourseView.name}</td>
<td>
<logic:notEmpty name="CourseView" property="validationRole">
<bean:message key="user.role.${CourseView.validationRole}"/>
</logic:notEmpty>
<logic:empty name="CourseView" property="validationRole">
Papel não atribuido (Corrigir Situação)
</logic:empty>
</td>
<td>
<a href="#" data-href="<%=request.getContextPath()%>/admin/questionarios/pedagogicoEstudante/listCourseUnits.jsp?importYear=${CourseView.importYear}&courseId=${CourseView.id}" data-title="Unidades do Curso de ${CourseView.name} (${CourseView.code})" data-toggle="modal" data-target="#modalAjaxRequest">
<%=cursoAfeto.getUnidadesAfetas().size()%>
</a>
</td>
<td>
${CursoAfeto.marcadas}
<logic:greaterThan value="0" name="CursoAfeto" property="marcadas">
<span class="glyphicon glyphicon-alert"></span>
</logic:greaterThan>
</td>
<td>
<a href="#" data-href="<%=request.getContextPath()%>/admin/questionarios/pedagogicoEstudante/listCourseUnitsTurmas.jsp?importYear=${CourseView.importYear}&courseId=${CourseView.id}" data-title="Turmas do Curso de ${CourseView.name} (${CourseView.code})" data-toggle="modal" data-target="#modalAjaxRequest">
<%=turmasSize%>
</a>
</td>
<td>
<script>
$(document).ready(
function(){
$('#${CursoAfeto.codigoCurso}unidades').on('shown.bs.collapse', function () {
$("#${CursoAfeto.codigoCurso}unidadesButton .glyphicon").removeClass("glyphicon-folder-close").addClass("glyphicon-folder-open");
});
$('#${CursoAfeto.codigoCurso}unidades').on('hidden.bs.collapse', function () {
$("#${CursoAfeto.codigoCurso}unidadesButton .glyphicon").removeClass("glyphicon-folder-open").addClass("glyphicon-folder-close");
});
}
);
</script>
<button id="${CursoAfeto.codigoCurso}unidadesButton" class="btn btn-default btn-small" type="button" data-toggle="collapse" data-target="#${CursoAfeto.codigoCurso}unidades"><span class="glyphicon glyphicon-folder-close"></span></button>
<script>
$(document).ready(
function(){
$.post("<%=request.getContextPath()%>/admin/questionarios/pedagogicoEstudante/pedagogicoCourseCheckCursoAfeto.jsp?cursoAfetoId=${CursoAfeto.id}", function(data) {
$("#${CursoAfeto.codigoCurso}unidades .unidades")
.html(data);
evaluateTableSortersInside("#${CursoAfeto.codigoCurso}unidades .unidades");
});
}
);
</script>
</td>
<td>
<nested:checkbox property="usarTipologias" styleClass="courseCheck"/>
</td>
</tr>
<tr id="${CursoAfeto.codigoCurso}unidades" class="collapse">
<td colspan="9" class="unidades" style="padding-left: 25px">
<div class="panel panel-default">
<div class="panel-body">
<p>Por favor aguarde um momento, o sistema está a carregar as unidades curriculares <img src="<%=request.getContextPath()%>/imgs/wait.gif"/></p>
</div>
</div>
</td>
</tr>
<%
}
//DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().evict(cursoAfeto);
%>
</nested:iterate>
</tbody>
</table>
</div>
</div>
<%
}
%>
 
 
<div class="panel panel-primary" id="institutionGerarFinal">
<div class="panel-heading">
Atribuição de Cursos e Unidades ao Questionário
</div>
<div class="panel-body">
 
 
<div class="col-sm-6">
<baco:clearOperation name="Questionario" op="QUESTIONARIO_SCHEDULLE_SELECT_COURSES">
<div class="alert alert-warning">Esta operação vai associar todos os cursos seleccionados e respectivas unidades curriculares
ao questionário ${Questionario.id} criado para o periodo ${Questionario.semestre} de ${Questionario.year}</div>
<div class="alert alert-info alert-small">Esta operação poderá ser revertida ou então repetida para atualizar os cursos alvo do questionário</div>
<div class="alert alert-info alert-small">Esta operação poderá demorar alguns instantes</div>
<html:hidden property="questionario.id" value="${Questionario.id}"/>
<input type="hidden" name="questionarioId" value="${Questionario.id}"/>
<input type="hidden" name="dispatch" value="selectCourses"/>
</baco:clearOperation>
 
 
 
<baco:clearOperation name="Questionario" op="QUESTIONARIO_SCHEDULLE_SELECT_COURSES">
<button class="btn btn-warning" type="button" onclick="this.form.submit()">Associar Cursos e Unidades Curriculares</button>
</baco:clearOperation>
<baco:notClearOperation name="Questionario" op="QUESTIONARIO_SCHEDULLE_SELECT_COURSES">
<baco:clearOperation name="Questionario" op="QUESTIONARIO_SCHEDULLE_SEE_SELECT_COURSES">
<div class="alert alert-warning">O sistema agendou a atribuição de cursos e unidades ao questionário ${Questionario.id} criado para o periodo ${Questionario.semestre} de ${Questionario.year}. Veja o progresso em baixo, caso não termine no final de 30 minutos esta tarefa ficará de novo disponivel</div>
</baco:clearOperation>
<baco:notClearOperation name="Questionario" op="QUESTIONARIO_SCHEDULLE_SEE_SELECT_COURSES">
<div class="alert alert-warning">Não têm autorização para ver esta secção</div>
</baco:notClearOperation>
 
</baco:notClearOperation>
<a class="btn btn-default" href="#" data-href="<%=request.getContextPath()%>/admin/questionarios/pedagogicoEstudante/questionarioLogState.jsp?questionarioId=${Questionario.id}" data-title="Registo de mudanças de estado do questionario ${Questionario.id}" data-toggle="modal" data-target="#modalAjaxRequest">
Registo de Mudanças de Estado
</a>
</div>
<div class="col-sm-6">
 
</div>
 
 
</div>
 
</div>
<div class="col-sm-12">
<button class="btn btn-success">Atualizar Tipologias</button>
<html:link action="/admin/adminQuestionario?questionario.id=${Questionario.id}#NOWTASK" styleClass="btn btn-danger">Voltar à administração</html:link>
</div>
</div>
 
 
</div>
</div>
</div>
<%
AbstractDao.getCurrentSession().getTransaction().commit();
%>
 
 
</html:form>
/branches/v3/impl/src/web/layout/themes/scripts-default.jsp
77,7 → 77,7
"<p>Por favor aguarde um momento, o sistema está a carregar <img src=\"<%=request.getContextPath()%>/imgs/wait.gif\"/></p>" +
"</div>" +
"</div>");
setTimeout("removeBacoWait()", 2000);
setTimeout("removeBacoWait()", 500);
 
}
);
/branches/v3/impl/src/web/layout/headerTools.jsp
154,7 → 154,7
 
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<div class="modal-header clearfix">
<h3 class="modal-title">
<label class="title-wrap"></label>
<button type="button" class="btn btn-danger btn-xs pull-right" data-dismiss="modal"><span class="glyphicon glyphicon-remove small"></span></button>
/branches/v3/impl/src/web/layout/errorLayout.jsp
18,26 → 18,20
<jsp:include page="/layout/scripts.jsp"/>
</head>
<body>
<table width="100%">
<tr>
<td align="center">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
</div>
<table id="page" width="100%">
<tr>
<td id="content" class="errorPage">
<tiles:insert attribute="body"/>
</td>
</tr>
</table>
<div id="footer">
<tiles:insert attribute="footer"/>
</div>
<tiles:insert attribute="header"/>
<!-- SHORTCUTS MENU -->
 
<div class="container" style="padding-left: 0;padding-right: 0; padding-top: 20px; border-top: 1px solid #323431">
<!-- BODY -->
<div class="panel panel-default">
<div class="panel-body">
<tiles:insert attribute="body"/>
</div>
</td>
</tr>
</table>
</div>
</div>
<!-- FOOTER -->
 
<tiles:insert attribute="footer"/>
 
</body>
</html:html>
/branches/v3/impl/src/web/layout/layout0.jsp
12,19 → 12,19
</head>
<body id="public" onload="horizontal();" >
<!-- HEADER -->
<tiles:insert attribute="header"/>
<!-- SHORTCUTS MENU -->
<tiles:insert attribute="navigationTop"/>
<tiles:insert attribute="header"/>
<!-- SHORTCUTS MENU -->
<tiles:insert attribute="navigationTop"/>
 
<div class="container" style="padding-left: 0;padding-right: 0; padding-top: 20px; border-top: 1px solid #323431">
<!-- TOP NAV -->
<tiles:insert attribute="topnav"/>
<!-- BODY -->
<tiles:insert attribute="body"/>
<div class="container" style="padding-left: 0;padding-right: 0; padding-top: 20px; border-top: 1px solid #323431">
<!-- TOP NAV -->
<tiles:insert attribute="topnav"/>
<!-- BODY -->
<tiles:insert attribute="body"/>
 
</div>
<!-- FOOTER -->
<tiles:insert attribute="footer"/>
</div>
<!-- FOOTER -->
<tiles:insert attribute="footer"/>
 
</body>
</html:html>
/branches/v3/impl/src/web/layout/pleaseWait.jsp
New file
0,0 → 1,8
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div class="baco-please-wait">
<div class="panel panel-info">
<div class="panel-body">
<p>Por favor aguarde um momento, o sistema está a carregar <img src="<%=request.getContextPath()%>/imgs/wait.gif"/></p>
</div>
</div>
</div>
/branches/v3/impl/src/web/user/courseunits/courseunit.jsp
244,8 → 244,11
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="courseunit.teachers"/>
<a href="#" data-toggle="modal" data-target="#teachersInfo" class="pull-right">
Mais Info. <span class="glyphicon glyphicon-info-sign"> </span>
<!--<a href="#" data-toggle="modal" data-target="#teachersInfo" class="pull-right">
Mais Info. <span class="glyphicon glyphicon-info-sign"> </span>
</a>-->
<a href="javascript:return false;" class="pull-right" data-href="<%=request.getContextPath()%>/user/courseunits/teachersInfo.jsp?courseUnitId=${CourseUnitView.id}" data-title="<bean:message key="courseunit.teachers"/>" data-toggle="modal" data-target="#modalAjaxRequest">
Mais Info. <span class="glyphicon glyphicon-info-sign small"> </span>
</a>
</div>
<div class="panel-body">
/branches/v3/impl/src/web/user/courseunits/teachersInfo.jsp
New file
0,0 → 1,69
<%@ page import="pt.estgp.estgweb.domain.views.CourseUnitView" %>
<%@ 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 import="java.util.Map" %>
<%@ 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" %>
 
<%
long unitId = Long.parseLong(request.getParameter("courseUnitId"));
 
IServiceManager sm = ServiceManager.getInstance();
 
 
String[] names = new String[]{};
Object[] args = new Object[]{unitId, true,false,false};//teachers,students,blog
 
CourseUnitView courseUnitView = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnit", args, names);
request.setAttribute("CourseUnitView",courseUnitView);
%>
 
<div>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<div class="well well-sm"><bean:message key="courseunit.responsable"/></div>
 
<logic:lessEqual value="0" name="CourseUnitView" property="responsableTeacher.id">
<p> Não existe informação disponivel.</p>
</logic:lessEqual>
<logic:greaterThan value="0" name="CourseUnitView" property="responsableTeacher.id">
<p class="lead"><strong><bean:message key="name"/></strong>: ${CourseUnitView.responsableTeacher.name}</p>
<p><strong><bean:message key="profile.siges.code.public"/></strong>: ${CourseUnitView.responsableTeacher.code}</p>
<p><label class=""><bean:message key="email"/></label>: ${CourseUnitView.responsableTeacher.email}</p>
</logic:greaterThan>
 
<div class="well well-sm"><bean:message key="courseunit.teachers.teaching"/></div>
<logic:iterate id="teacher" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
 
<p class="lead"><strong><bean:message key="name"/></strong>: ${teacher.name}</p>
<p><strong><bean:message key="profile.siges.code.public"/></strong>: ${teacher.code}</p>
<p><label class=""><bean:message key="email"/></label>: ${teacher.email}</p>
<logic:present name="CourseUnitView" property="tipologias">
<%
Map<String,List<String>> mapa = CourseUnitView.getTipologiasTurmas(""+teacher.getCode());
for(Map.Entry<String,List<String>> entry: mapa.entrySet())
{
String tipologia = entry.getKey();
List<String> turmas = entry.getValue();
request.setAttribute("turmas", turmas);
request.setAttribute("tipologia", tipologia);
%>
<p>${tipologia}:
<logic:iterate id="turma" name="turmas" type="java.lang.String" scope="request">
${turma}
</logic:iterate>
</p>
<%
}
%>
 
</logic:present>
</logic:iterate>
</div>