Rev 1688 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@ page import="pt.estgp.estgweb.domain.Teacher" %>
<%@ page import="pt.estgp.estgweb.domain.views.UserView" %>
<%@ 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.ArrayList" %>
<%@ 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" %>
<jsp:useBean id="CourseUnitProgramForm" type="pt.estgp.estgweb.web.form.courseunits.CourseUnitProgramForm" scope="request"/>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%--<jsp:useBean id="CourseUnitProgramView" type="pt.estgp.estgweb.domain.views.CourseUnitProgramView" scope="request"/>--%>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<div class="panel panel-default">
<div class="panel-heading">
<span class="icon icon-library"></span> <bean:message key="courseunit.program"/>
</div>
<div class="panel-body">
<html:errors/>
<jomm:messages/>
<div class="web-messages">
</div>
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_INFO_VALID_NOT_ACTIVE">
<div class="alert alert-warning">
O programa não está aberto para edição. A comissão de curso terá de invalidar o programa para que este possa ser alterado.
</div>
</baco:clearOperation>
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_CAN_VALIDATE">
<logic:equal name="CourseUnitView" property="validProgram" value="true">
<html:link styleClass="btn btn-warning" action="/user/invalidateAndLoadCourseUnitProgram?courseUnitId=${CourseUnitView.id}">Invalidar</html:link>
</logic:equal>
</baco:clearOperation>
<script>
//Manter a sessão activa para os docentes não perderem os dados
ping();
</script>
<%
IServiceManager sm = ServiceManager.getInstance();
List<pt.estgp.estgweb.domain.views.CourseUnitView> otherYearUnits;
otherYearUnits = new ArrayList<pt.estgp.estgweb.domain.views.CourseUnitView>();
try{
String[] names = new String[]{};
Object[] args = new Object[]{new Long(CourseUnitView.getId())};
otherYearUnits =
(List<pt.estgp.estgweb.domain.views.CourseUnitView>)
sm.execute(RequestUtils.getRequester(request, response), "LoadUnitOtherYearsWithProgram", args, names);
request.setAttribute("OtherYearUnits", otherYearUnits);
names = new String[]{};
args = new Object[]{};
List<Teacher> teachers = (List<Teacher>)
sm.execute(RequestUtils.getRequester(request, response), "LoadTeachers", args, names);
request.setAttribute("teachers", teachers);
}catch(Exception e)
{
System.err.print(e.toString());
e.printStackTrace();
}
%>
<baco:notClearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_COORDINATOR_PART">
<script>
$(document).ready(
function(){
$(".editCoordinatorPart *").prop('disabled',true);
}
);
</script>
</baco:notClearOperation>
<baco:notClearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_TEACHER_PART">
<script>
$(document).ready(
function(){
$(".editTeacherPart *").prop('disabled',true);
}
);
</script>
</baco:notClearOperation>
<html:form styleId="ProgramForm" styleClass="form-horizontal" action="/user/courseUnitProgramController">
<input type="hidden" name="dispatch" value="saveProgram">
<html:hidden property="id"/>
<html:hidden property="courseUnitView.id"/>
<h3>Dados alterados pelo Coordenador de curso</h3>
<div class="editCoordinatorPart">
<div class="form-group">
<label class="control-label col-sm-3">
Importar programa a partir de outro ano
</label>
<div class="col-sm-3">
<select class="form-control col-sm-3" name="cloneFromUnitId">
<logic:iterate id="other" name="OtherYearUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView">
<option value="<%=other.getId()%>"><%=other.getImportYear()%> - <%=other.getSemestre()%></option>
</logic:iterate>
</select>
</div>
<div class="col-sm-3">
<input class="form-control" type="button" value="Clonar a partir deste programa" onclick="if(confirm('<bean:message key="courseunit.confirmaclonagem"/>')){set(form,'cloneProgram');form.submit()}"/>
</div>
</div>
</div>
<div class="alert alert-info">
<bean:message key="courseunit.consultaroutros"/>:
<logic:iterate id="other" name="OtherYearUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView">
<a href="<%=request.getContextPath()%>/repositoryStream/<%=other.getProgramStreamId()%>" target="_blank"> <%=other.getImportYear()%> - <%=other.getSemestre()%></a>
</logic:iterate>
</div>
<div class="editCoordinatorPart">
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.responsable"/>
</label>
<div class="col-sm-10">
<html:select styleClass="form-control" property="courseUnitView.responsableId">
<html:option value="0"></html:option>
<logic:iterate id="teacher" name="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<html:option value="${teacher.id}">${teacher.name} (${teacher.code})</html:option>
</logic:iterate>
</html:select>
</div>
</div>
<baco:isAdmin>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.teachers"/>
</label>
<div class="col-sm-8">
<logic:lessEqual value="0" name="CourseUnitView" property="id">
<i><bean:message key="courseunit.to.add.teachers.save.first"/></i>
</logic:lessEqual>
<html:select styleClass="form-control" property="teacherId">
<logic:present name="teachers">
<logic:iterate id="teacher" name="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<html:option value="${teacher.id}">${teacher.name} (${teacher.code})</html:option>
</logic:iterate>
</logic:present>
</html:select>
</div>
<div class="col-sm-2">
<button class="form-control" type="button" onclick="set(this.form,'addTeacher');this.form.submit();">
<bean:message key="add"/>
</button>
</div>
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0">
<label class="col-sm-2">
</label>
<div class="col-sm-10">
<div class="list-group">
<logic:iterate id="userView" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<div class="list-group-item">
${userView.name} (${userView.code})
<button class="btn btn-danger btn-xs" type="button" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai remover o docente da unidade localmente, a sincronização com o sistema do IPP não voltará a colocar o docente neste unidade!! Tem a certeza que deseja prosseguir?" data-script="CourseUnitProgramForm.id.value='${userView.id}';set($('#ProgramForm').get(0),'removeTeacher');$('#ProgramForm').get(0).submit();">
<span class="glyphicon glyphicon-remove small"></span>
</button>
</div>
</logic:iterate>
</div>
</div>
</logic:greaterThan>
</div>
</baco:isAdmin>
<baco:isNotAdmin>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.teachers"/>
</label>
<div class="col-sm-10">
<div class="list-group">
<logic:iterate id="prof" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<div class="list-group-item"> ${prof.name} (${prof.code})</div>
</logic:iterate>
</div>
</div>
</div>
</baco:isNotAdmin>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.ects.title"/>
</label>
<div class="col-sm-10">
<div>
<div class="form-group">
<label class="control-label col-sm-1">
<bean:message key="courseunit.program.ects"/>
</label>
<div class="col-sm-11">
<html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.ects"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-1">
<bean:message key="courseunit.program.ects.cargaHorariaTotal"/>
</label>
<div class="col-sm-11">
<html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaTotal"/>
</div>
</div>
</div>
<div>
<div class="form-group">
<div class="col-sm-12">
<table>
<tr>
<th><bean:message key="courseunit.program.cargaHorariaT"/></th>
<th><bean:message key="courseunit.program.cargaHorariaTP"/></th>
<th><bean:message key="courseunit.program.cargaHorariaPL"/></th>
<th><bean:message key="courseunit.program.cargaHorariaS"/></th>
<th><bean:message key="courseunit.program.cargaHorariaTC"/></th>
<th><bean:message key="courseunit.program.cargaHorariaO"/></th>
<th><bean:message key="courseunit.program.cargaHorariaOT"/></th>
</tr>
<tr>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaT"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaTP"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaPL"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaS"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaTC"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaO"/></td>
<td><html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.cargaHorariaOT"/></td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<h3>Dados alterados pelo Docente da Unidade</h3>
<div class="editTeacherPart">
<%//TODO adicionar workflow e inicializações para a função addTeacher%>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.objectivos"/>
</label>
<div class="col-sm-10">
<html:textarea rows="10" styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.objectivos" />
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.prerequisitos"/>
</label>
<div class="col-sm-10">
<html:textarea rows="10" styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.prerequisitos" />
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.lingua1"/>
</label>
<div class="col-sm-10">
<html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.lingua1" />
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.lingua2"/>
</label>
<div class="col-sm-10">
<html:text styleClass="form-control" property="courseUnitProgramView.courseUnitProgram.lingua2" />
</div>
</div>
<!--Conteudos-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.conteudosProgramaticos"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.conteudos" />
</div>
</div>
<!--demonstracaoCoerenciaConteudos-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.demonstracaoCoerenciaConteudosObjectivos"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.demonstracaoCoerenciaConteudos" />
</div>
</div>
<!--metodologiasEnsino-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.metodologiasEnsino"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.metodologiasEnsino" />
</div>
</div>
<!--demonstracaoObjectivosMetodologia-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.demonstracaoDaCoerenciaMetodologiasObjectivos"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.demonstracaoObjectivosMetodologia" />
</div>
</div>
<h4><bean:message key="courseunit.program.avaliacao"/></h4>
<!--avaliacaoOrdinariosFrequencia-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.alunosOrdinariosPorFrequencia"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoOrdinariosFrequencia" />
</div>
</div>
<!--avaliacaoOrdinariosExame-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.alunosOrdinariosPorExame"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoOrdinariosExame" />
</div>
</div>
<!--avaliacaoEspeciaisFrequencia-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoEspeciaisFrequencia" />
</div>
</div>
<!--avaliacaoEspeciaissExame-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorExame"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.courseUnitProgramPart2.avaliacaoEspeciaissExame" />
</div>
</div>
<h4><bean:message key="courseunit.program.bibliografia"/></h4>
<!--bibliografia-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.bibliografiaPrincipal"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.bibliografia" />
</div>
</div>
<!--bibliografiaComplementar-->
<div class="form-group">
<label class="control-label col-sm-2">
<bean:message key="courseunit.program.bibliografiaComplementar"/>
</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="10" property="courseUnitProgramView.courseUnitProgram.bibliografiaComplementar" />
</div>
</div>
</div>
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_TEACHER_PART,PROGRAM_COORDINATOR_PART">
<button id="saveButton" class="btn btn-success" type="button" onclick="saveData('saveProgram');"><bean:message key="save"/></button>
</baco:clearOperation>
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_CAN_VALIDATE">
<logic:equal name="CourseUnitView" property="validProgram" value="false">
<button id="validateButton" class="btn btn-success" type="button" onclick="saveData('validateProgram');">Salvar e Validar</button>
</logic:equal>
</baco:clearOperation>
<a id="exitButton" class="hidden btn btn-danger" href="<%=request.getContextPath()%>/user/startLoadCourseUnitFromHome.do?courseUnitView.id=${CourseUnitView.id}&pos=2" class="btn btn-danger" type="button" >Sair</a>
</html:form>
</div><!--Panel body-->
</div><!--Panel-->
<script>
function saveData(action)
{
$('#programSendingModal').modal({
show: 'true'
});
$("#ProgramForm input[name='dispatch']").val(action);
var data = $("#ProgramForm").serialize().replace(/%0D%0A/g, '%0A').replace(/\r?\n/g, "\r\n");
//alert(data);
//alert($("#dispatch").val())
$(".web-messages").html('<div class="alert alert-info">Enviando ...</div>');
$.ajax({
url: "<%=request.getContextPath()%>/user/courseUnitProgramController.do",
type: "POST",
data: data + "&json=true",
dataType: "json",
statusCode: {
401:function() {
$('.modal').modal("hide");
$("#modalAuthentication").modal({ show : 'true'});
}
},
success: function(resposta) {
if(resposta.service && resposta.service == "ok")
{
$(".web-messages").html('<div class="alert alert-success">Programa Salvo com Sucesso, pode rever o seu trabalho ou Sair</div>');
modalWebMessages("");
$("#exitButton").removeClass("hidden");
$("#saveButton").hide();
if(action == "validateProgram")
{
$("#validateButton").hide();
}
}
else
{
if($(resposta.responseText).find(".web-messages").length)
{
$(".web-messages").html($(resposta.responseText).find(".web-messages").html());
modalWebMessages("Aviso");
}
else
{
if($(resposta.responseText).find(".errorContent").length)
{
$(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor aguarde uns minutos tente novamente, se não conseguir copie manualmente os seus dados para um documento para não perder o seu trabalho e contacte a administração de sistemas</div>');
modalWebMessages("Existem Erros",$(resposta.responseText).find(".errorContent").html());
}
else
{
$(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor aguarde uns minutos e tente novamente, se não conseguir copie manualmente os seus dados para um documento para não perder o seu trabalho e contacte a administração de sistemas</div>');
modalWebMessages("Aviso");
}
}
}
},
error: function(resposta, b, errorThrown)
{
if(resposta.status != 401)
{
if($(resposta.responseText).find(".errorContent").length)
{
$(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor aguarde uns minutos e tente novamente, se não conseguir copie manualmente os seus dados para um documento para não perder o seu trabalho e contacte a administração de sistemas</div>');
modalWebMessages("Existem Erros",$(resposta.responseText).find(".errorContent").html());
}
else
{
$(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor aguarde uns minutos e tente novamente, se não conseguir copie manualmente os seus dados para um documento para não perder o seu trabalho e contacte a administração de sistemas</div>');
modalWebMessages("Aviso");
}
}
}
});
}
</script>
<div class="modal fade" id="programSendingModal" role="dialog" >
<div class="modal-dialog" data-width="760" style="display: block; width: 760px; margin-top: 50px;" aria-hidden="false">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title"><bean:message key="courseunit.program.sending"/></h1>
</div>
<div class="modal-body">
<p>
<bean:message key="courseunit.program.sending.text"/> <img src="<%=request.getContextPath()%>/imgs/wait.gif"/>
</p>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
Generated by GNU Enscript 1.6.5.2.