Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1337 → Rev 1338

/branches/v3/impl/src/web/admin/profile/menu.jsp
32,16 → 32,19
<html:link action="/user/startProfile"><bean:message key="profile.home"/></html:link>
</li>
<li>
<html:link action="/user/startChangeProfile"><bean:message key="profile.personal.data"/></html:link>
<baco:hasRole role="admin,services">
<html:link action="/user/startChangeProfile?id=${ProfileForm.userView.id}"><bean:message key="profile.personal.data"/></html:link>
</baco:hasRole>
</li>
<baco:isModuleOn module="profile">
<logic:equal value="${ProfileForm.userView.id}" name="UserSession" property="user.id">
<li>
<html:link action="/user/startProfileCurriculum"><bean:message key="profile.curriculum"/></html:link>
</li>
 
</logic:equal>
</baco:isModuleOn>
<baco:isModuleOn module="courseunits">
<%--Se for aluno so ve o link se forem as suas se for Admin mete-se o link do profileId em uso--%>
<!--Se for aluno so ve o link se forem as suas se for Admin mete-se o link do profileId em uso-->
<baco:hasRole role="student">
<logic:equal value="${ProfileForm.userView.id}" name="UserSession" property="user.id">
<li>
73,12 → 76,16
<html:link action="/user/startProfile"><bean:message key="profile.home"/></html:link>
</div>
<div class="col-sm-4">
<html:link action="/user/startChangeProfile"><bean:message key="profile.personal.data"/></html:link>
<baco:hasRole role="admin,services">
<html:link action="/user/startChangeProfile?id=${ProfileForm.userView.id}"><bean:message key="profile.personal.data"/></html:link>
</baco:hasRole>
</div>
<baco:isModuleOn module="profile">
<div class="col-sm-4">
<html:link action="/user/startProfileCurriculum"><bean:message key="profile.curriculum"/></html:link>
</div>
<logic:equal value="${ProfileForm.userView.id}" name="UserSession" property="user.id">
<div class="col-sm-4">
<html:link action="/user/startProfileCurriculum"><bean:message key="profile.curriculum"/></html:link>
</div>
</logic:equal>
</baco:isModuleOn>
<baco:isModuleOn module="courseunits">
<%--Se for aluno so ve o link se forem as suas se for Admin mete-se o link do profileId em uso--%>
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/courseInfoJson.jsp
New file
0,0 → 1,19
<%@ page import="jomm.dao.impl.AbstractDao"%><%@ page import="org.hibernate.Query"%><%@ page import="org.json.JSONObject"%><%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto"%><%@ page import="java.util.List"%><%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory"%><%@ page import="pt.estgp.estgweb.domain.dao.impl.QuestionarioPedagogicoCursoAfetoDaoImpl"%><%@ page contentType="application/json;charset=UTF-8" language="java" %>
<%
long cursoAfetoId = Long.parseLong(request.getParameter("cursoAfetoId"));
AbstractDao.getCurrentSession().beginTransaction();
QuestionarioPedagogicoCursoAfetoDaoImpl.CourseStatsVars stats = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().loadStats(cursoAfetoId);
 
 
JSONObject json = new JSONObject();
 
json.put("porVer",stats.porVer);
json.put("naoUsadas",stats.naoUsadas);
json.put("marcadas",stats.marcadas);
json.put("observadas",stats.observadas);
json.put("unidades",stats.unidades);
 
out.print(json.toString());
AbstractDao.getCurrentSession().getTransaction().commit();
 
%>
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/pedagogicoCourseCheckCursoAfeto.jsp
18,30 → 18,137
cursoAfeto = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().narrow(cursoAfeto);
request.setAttribute("CursoAfeto",cursoAfeto);
%>
<table class="tablesorter-blue">
<script>
$(document).ready(
 
function()
{
$("#cursoAfetoTable${CursoAfeto.id} .usarCheck").each(function()
{
if($(this).prop("checked"))
{
$(this).closest("td").addClass("usarChecked");
$(this).closest("td").removeClass("usarNotChecked");
}
else
{
$(this).closest("td").removeClass("usarChecked");
$(this).closest("td").addClass("usarNotChecked");
}
}
);
$("#cursoAfetoTable${CursoAfeto.id} .vistaCheck").each(function()
{
if($(this).prop("checked"))
{
$(this).closest("td").addClass("vistaChecked");
$(this).closest("td").removeClass("vistaNotChecked");
}
else
{
$(this).closest("td").removeClass("vistaChecked");
$(this).closest("td").addClass("vistaNotChecked");
}
});
 
$("#cursoAfetoTable${CursoAfeto.id} .usarCheck").on("change",function()
{
if($(this).prop("checked"))
{
$(this).closest("td").addClass("usarChecked");
$(this).closest("td").removeClass("usarNotChecked");
}
else
{
$(this).closest("td").removeClass("usarChecked");
$(this).closest("td").addClass("usarNotChecked");
}
});
 
$("#cursoAfetoTable${CursoAfeto.id} .vistaCheck").on("change",function()
{
if($(this).prop("checked"))
{
$(this).closest("td").addClass("vistaChecked");
$(this).closest("td").removeClass("vistaNotChecked");
}
else
{
$(this).closest("td").removeClass("vistaChecked");
$(this).closest("td").addClass("vistaNotChecked");
}
});
}
);
</script>
<table id="cursoAfetoTable${CursoAfeto.id}" class="tablesorter-blue">
<thead>
<tr>
<th></th>
<th>Codigo</th>
<th>Nome</th>
<th>Tipologias Manuais</th>
<%--<th>Tipologias Manuais</th>--%>
<th>Turmas</th>
<th>Docentes</th>
<th>Marcada</th>
<th>Estudantes</th>
<th>Alertas</th>
<th>Docentes s/ turma</th>
<th>Turmas s/ docente</th>
<th></th>
<th>Usar</th>
<th>Vista</th>
<th>Obs.</th>
</tr>
</thead>
<tbody>
<logic:iterate id="unidade" name="CursoAfeto" property="unidadesAfetas" type="pt.estgp.estgweb.domain.QuestionarioPedagogicoUnidadeCurricularAfetaImpl">
<tr>
<tr id="unidadeAfetaRow${unidade.id}">
<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");
});
 
$("#unidadeAfetaRow${unidade.id} .usarCheck").on("change",function(){
var val =$(this).prop("checked") ? "true" : "false";
var op = "usar";
setUnidadeAfetaVar('${CursoAfeto.id}','${unidade.id}',op,val,$(this).closest("td"));
});
$("#unidadeAfetaRow${unidade.id} .vistaCheck").on("change",function()
{
var val =$(this).prop("checked") ? "true" : "false";
var op = "vista";
setUnidadeAfetaVar('${CursoAfeto.id}','${unidade.id}',op,val,$(this).closest("td"));
});
}
 
);
</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>
<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>${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}
52,6 → 159,11
</a>
 
</td>
<td>
<a href="#" data-href="<%=request.getContextPath()%>/user/courseunits/listStudentsService.jsp?courseUnitView.id=${unidade.courseUnit.id}" data-title="Alunos da unidade de ${unidade.nome} (${unidade.codigoUnidade}) do curso de ${CursoAfeto.nome} (${CursoAfeto.codigoCurso})" data-toggle="modal" data-target="#modalAjaxRequest">
${unidade.students}
</a>
</td>
<td>
<logic:equal value="true" name="unidade" property="marked">
<span class="glyphicon glyphicon-alert"></span>
60,34 → 172,18
<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>
<html:checkbox styleClass="usarCheck" name="unidade" property="usar"/>
</td>
<td>
<html:checkbox styleClass="vistaCheck" name="unidade" property="vista"/>
</td>
<td>
<button id="obs${unidade.id}Button" class="btn btn-warning btn-small" type="button"><span class="glyphicon glyphicon-pencil"></span></button>
</td>
</tr>
<tr class="collapse" id="tipologias${unidade.id}">
<td colspan="9" class="tipologias" style="padding-left: 25px">
<td></td>
<td colspan="10" class="tipologias" style="padding-left: 25px">
 
<div class="panel panel-default">
<div class="panel-body">
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/pedagogicoCourseCheckUnidadeAfeta.jsp
54,16 → 54,56
<logic:iterate id="tipologia" name="tipologias" type="pt.estgp.estgweb.domain.CourseUnitImpl.Tipologia">
<%
CourseUnitImpl.TipologiaPersistent tipoPersistente = courseUnit.loadPersistent(tipologia);
request.setAttribute("tipoPersistente",tipoPersistente);
if(tipoPersistente == null)
{
%>
<tr>
<td>${tipologia.cdDocente}</td>
<td>ERRO PROFESSOR NAO SINCRONIZADO</td>
<td>${tipologia.dsTipologia}</td>
<td>${tipologia.ocorrencias}</td>
<td>${tipologia.cdTurma}</td>
<td>ERRO TURMA NAO SINCRONIZADA TENTE CORRER AS IMPORTACOES ALUNOS E DOCENTES</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>
<%
}
else
{
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>
<a href="#" data-href="<%=request.getContextPath()%>/user/courseunits/listStudentsService.jsp?courseUnitView.id=${unidade.courseUnit.id}&filterTurma=${tipologia.cdTurma}" data-title="Alunos da turma ${tipologia.cdTurma} da unidade de ${unidade.nome} (${unidade.codigoUnidade}) do curso de ${unidade.cursoAfeto.nome} (${unidade.cursoAfeto.codigoCurso})" data-toggle="modal" data-target="#modalAjaxRequest">
<%=tipoPersistente.getCourseUnitTurma().getStudents().size()%>
</a>
</td>
<td>
<logic:equal value="true" name="tipologia" property="extra">
<span class="glyphicon glyphicon-asterisk"></span>
</logic:equal>
86,6 → 126,7
</td>
</tr>
<%
}
DaoFactory.getCourseUnitDaoImpl().evict(unidade.getCourseUnit());
%>
</logic:iterate>
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/setUnidadeAfetaVar.jsp
New file
0,0 → 1,20
<%@ page import="org.json.JSONObject"%><%@ 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 contentType="application/json;charset=UTF-8" language="java" %>
<%
String questionarioId = request.getParameter("questionarioId");
String unidadeAfetaId = request.getParameter("unidadeAfetaId");
String op = request.getParameter("op");
String val = request.getParameter("val");
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"questionarioId","cursosAfetos"};
Object[] args = {Long.parseLong(questionarioId),Long.parseLong(unidadeAfetaId),op,val};
 
sm.execute(RequestUtils.getRequester(request, response),"QuestionarioUpdateCheckVarPedagogico",args,names);
 
 
JSONObject json = new JSONObject();
 
json.put("ok","ok");
out.print(json.toString());
%>
 
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/pedagogicoEstudanteCoursesCheck.jsp
67,7 → 67,43
background-color: #baffdc !important;
}
 
td.vistaChecked
{
background-color: #20ff05 !important;
}
td.vistaNotChecked
{
background-color: gray !important;
}
td.usarNotChecked
{
background-color: red !important;
}
td.usarChecked
{
 
}
 
 
@keyframes waitPost {
from { opacity: 1; }
to { opacity: 0; }
}
td.waitPost
{
background-color: yellow !important;
animation: waitPost 0.5s cubic-bezier(.2, 0, 1, 1) infinite alternate;
 
/*
-webkit-animation-name: waitPost !important;
-webkit-animation-iteration-count: infinite !important;
-webkit-animation-timing-function: cubic-bezier(.5, 0, 1, 1) !important;
-webkit-animation-duration: 1.7s !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}
98,17 → 134,29
showInstitutionCode('GerarFinal');
 
 
<baco:notClearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
$(".checkAll").remove();
</baco:notClearOperation>
 
$(".courseCheck").attr("data-toogle","toggle");
$('.courseCheck').bootstrapToggle({
on: 'Tipologias',
off: 'Simples'
});
$('.checkAll').bootstrapToggle({
on: 'Tipologias',
off: 'Simples'
});
 
<baco:clearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
$('.checkAll').bootstrapToggle({
on: 'Tipologias',
off: 'Simples'
});
</baco:clearOperation>
<baco:notClearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
$(".courseCheck").prop("disabled",true);
$("#updateTipologiasButton").prop("disabled",true);
</baco:notClearOperation>
}
 
 
);
 
function selectAll(code,source)
157,6 → 205,67
}
 
 
function setUnidadeAfetaVar(cursoAfetoId,unidadeAfetaId,op,val,targetObject)
{
$(targetObject).addClass("waitPost");
$.post("<%=request.getContextPath()%>/admin/questionarios/pedagogicoEstudante/setUnidadeAfetaVar.jsp",
{
"questionarioId" : ${Questionario.id},
"unidadeAfetaId":unidadeAfetaId,
"op":op,
"val": val
},
function(data, textStatus)
{
if(data.ok == "ok")
{
$(targetObject).removeClass("waitPost");
reloadCursoStats(cursoAfetoId);
}
},
"json");
}
function reloadCursoStats(cursoAfetoId)
{
 
$.getJSON("<%=request.getContextPath()%>/admin/questionarios/pedagogicoEstudante/courseInfoJson.jsp?cursoAfetoId="+cursoAfetoId,
function(dataJson)
{
 
var porVer = dataJson.porVer + " ";
if(dataJson.porVer > 0)
{
porVer += "<span class=\"glyphicon glyphicon-alert\"></span>";
}
$("#cursoAfetoRow" + cursoAfetoId + " .porVerCount").html(porVer);
 
var marcadas = dataJson.marcadas + " ";
if(dataJson.marcadas > 0)
{
marcadas += "<span class=\"glyphicon glyphicon-alert\"></span>";
}
$("#cursoAfetoRow" + cursoAfetoId + " .marcadasCount").html(marcadas);
 
var observadas = dataJson.observadas + " ";
if(dataJson.observadas > 0)
{
observadas += "<span class=\"glyphicon glyphicon-alert\"></span>";
}
$("#cursoAfetoRow" + cursoAfetoId + " .observadasCount").html(observadas);
 
var naoUsadas = dataJson.naoUsadas + " ";
if(dataJson.naoUsadas > 0)
{
naoUsadas += "<span class=\"glyphicon glyphicon-alert\"></span>";
}
$("#cursoAfetoRow" + cursoAfetoId + " .naoUsadasCount").html(naoUsadas)
 
$("#cursoAfetoRow" + cursoAfetoId + " .unidadesCount").html(dataJson.unidades);
 
}
);
}
 
</script>
 
<%
176,14 → 285,18
<table class="tablesorter-blue">
<thead>
<tr>
<th></th>
<th>Codigo</th>
<th>Tipo de Curso</th>
<th>Curso</th>
<th>Papel Comissão Curso</th>
<th>Unidades</th>
<th>Marcadas </th>
<th>Alertas </th>
<th>Por Ver</th>
<th>Não Usadas</th>
<th>Observadas</th>
<th>Turmas</th>
<th></th>
 
<th class="filter-false" data-sorter="false">
<input class="checkAll" type="checkbox" onchange="selectAll('<%=institutionCode%>',this)">
</th>
202,8 → 315,41
request.setAttribute("CursoAfeto",cursoAfeto);
 
%>
<tr>
<tr id="cursoAfetoRow${cursoAfeto.id}">
<td>
<script>
$(document).ready(
 
function(){
reloadCursoStats("${cursoAfeto.id}");
 
$('#${CursoAfeto.codigoCurso}unidades').on('shown.bs.collapse', function (e) {
if ($(this).is(e.target)) {
$("#${CursoAfeto.codigoCurso}unidadesButton .glyphicon").removeClass("glyphicon-folder-close").addClass("glyphicon-folder-open");
}
});
$('#${CursoAfeto.codigoCurso}unidades').on('hidden.bs.collapse', function (e) {
if ($(this).is(e.target)) {
$("#${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:hidden property="id"/>
${CourseView.code}
</td>
217,54 → 363,33
Papel não atribuido (Corrigir Situação)
</logic:empty>
</td>
<td>
<td class="unidadesCount">
<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>
<td class="marcadasCount">
${CursoAfeto.marcadas}
<logic:greaterThan value="0" name="CursoAfeto" property="marcadas">
<span class="glyphicon glyphicon-alert"></span>
</logic:greaterThan>
</td>
<td class="porVerCount"> ... </td>
<td class="naoUsadasCount"> ... </td>
<td class="observadasCount"> ... </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">
<td></td>
<td colspan="11" 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>
290,36 → 415,19
 
<div class="panel panel-primary" id="institutionGerarFinal">
<div class="panel-heading">
Atribuição de Cursos e Unidades ao Questionário
Verificação de Atribuições
</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 name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
<div class="alert alert-warning">Está neste momento no painel de verificações do questionário ${Questionario.id} criado para o periodo ${Questionario.semestre} de ${Questionario.year}</div>
</baco:clearOperation>
<baco:notClearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
<div class="alert alert-warning">Não tem permissão para verificar atribuições no questionário ${Questionario.id} criado para o periodo ${Questionario.semestre} de ${Questionario.year}</div>
</baco:notClearOperation>
 
 
 
<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>
333,7 → 441,8
 
</div>
<div class="col-sm-12">
<button class="btn btn-success">Atualizar Tipologias</button>
 
<button id="updateTipologiasButton" 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>
/branches/v3/impl/src/web/css/ipp/style.css
27,7 → 27,22
width: 1%;
}
 
h1 {
font-size: 1.3em !important;
margin: 5;
color: #808081;
}
 
h3 {
font-size: 1.1em !important;
 
}
h2 {
font-size: 1.2em !important;
 
}
 
 
/*********************************************************************************/
 
/****************** topnav **********************/
321,7 → 336,66
 
 
 
.listClean UL, .files UL /*Lista sem nada*/
{
LIST-STYLE-TYPE: none;
padding: 0;
/*margin-left: 5px;*/
}
 
.linkMenuBlock .linkLeftMenu li
{
border-bottom: 1px solid #808081;
}
.linkMenuBlock
{
margin-top: 15px;
}
.linkMenuBlock .linkLeftMenu{
 
border-left: 1px solid #808081;
}
.linkMenuBlockRight {
margin-top: 15px;
border-right: 1px solid #808081;
color:#323431;
}
 
.linkMenuBlock .linkMenuBlockTitle
{
border-top-left-radius: 4px !important;
border-right: 0 !important;
}
.linkMenuBlock .linkMenuBlockTitle, .linkMenuBlockRight .linkMenuBlockTitle {
border-bottom: 0px solid #323431;
background-color: #faf2cc;
color: #323431;
white-space: nowrap;
text-align: right;
padding: 4px;
margin: 0;
border: 1px solid #808081;
}
 
.linkLeftMenu ul,.linkRightMenu ul {
margin:0;
LIST-STYLE-TYPE: none;
}
 
.linkLeftMenu
{
margin-bottom:15px;
border-bottom: 1px solid #808081;
}
.linkLeftMenu li, .linkRightMenu li {
border-bottom: 1px solid #FFFFFF;
white-space: nowrap;
padding:5px;
margin:0;
}
 
 
 
/*************************************************
BOOTSTRAP OVERRIDES
*************************************************/
/branches/v3/impl/src/web/public/profile/profileGrades.jsp
13,8 → 13,11
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<jsp:useBean id="ProfileForm" type="pt.estgp.estgweb.web.form.profile.ProfileForm" scope="request"/>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<div id="contentIntranet">
<div id="contentPane">
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="profile.grades"/>
</div>
<div class="panel-body">
 
<jomm:messages/>
<%--<jsp:useBean id="ProfileForm" class="pt.estgp.estgweb.web.form.profile.ProfileForm"/>--%>
/branches/v3/impl/src/web/user/courseunits/listStudentsService.jsp
New file
0,0 → 1,48
<%@ 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 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" %>
<%
if(request.getAttribute("CourseUnitView") != null)
{
%>
<jsp:include page="students.jsp"/>
<%
}
else
{
long courseUnitId = 0;
if(request.getParameter("courseUnitId")!=null)
courseUnitId = Long.parseLong(request.getParameter("courseUnitId"));
else if(request.getParameter("courseUnitView.id")!=null)
courseUnitId = Long.parseLong(request.getParameter("courseUnitView.id"));
else if(request.getParameter("courseUnit.id")!=null)
courseUnitId = Long.parseLong(request.getParameter("courseUnit.id"));
 
if(courseUnitId == 0)
{
response.sendError(404);
}
else
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{courseUnitId,false,true,false};//unitId,teachers,students,blog
 
pt.estgp.estgweb.domain.views.CourseUnitView courseUnitView = (pt.estgp.estgweb.domain.views.CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnit", args, names);
request.setAttribute("CourseUnitView",courseUnitView);
%>
<jsp:include page="students.jsp"/>
<%
}
 
 
}
%>
/branches/v3/impl/src/web/user/courseunits/students.jsp
1,3 → 1,5
<%@ page import="pt.estgp.estgweb.domain.views.UserView" %>
<%@ 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" %>
9,6 → 11,10
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
 
<%
String turma = request.getParameter("filterTurma");
if(turma == null && request.getAttribute("filterTurma")!=null)
turma = (String) request.getAttribute("filterTurma");
 
String fromAction = "";
String user = "";
if (request.getParameter("from") != null)
24,15 → 30,37
request.setAttribute("fromAction", fromAction);
 
String orderBy = request.getParameter("order");
if(orderBy != null && orderBy.equals("byNumber"))
request.setAttribute("students",CourseUnitView.getStudentsOrderedByNumber());
 
List<UserView> students = null;
if(turma != null)
{
if(orderBy != null && orderBy.equals("byNumber"))
students = CourseUnitView.getStudentsTurmaOrderedByNumber(turma);
else
students = CourseUnitView.getStudentsTurmaOrderedByName(turma);
}
else
request.setAttribute("students",CourseUnitView.getStudentsOrderedByName());
{
if(orderBy != null && orderBy.equals("byNumber"))
students = CourseUnitView.getStudentsOrderedByNumber();
else
students = CourseUnitView.getStudentsOrderedByName();
}
 
request.setAttribute("turma",turma);
request.setAttribute("students",students);
request.setAttribute("studentsSize",students.size());
 
 
%>
<div class="panel panel-default">
<div class="panel-body">
<p><bean:message key="courseunit.students.count"/>: ${CourseUnitView.studentsSize}</p>
<p>
<logic:notEmpty name="turma">
(${turma})
</logic:notEmpty>
<bean:message key="courseunit.students.count"/>: ${studentsSize}
</p>
<table id="myTable" class="tablesorterfiltered">
<thead>
<tr>
60,13 → 88,23
${student.code}
</td>
<td>
<logic:notEmpty name="fromAction">
<html:link action="${user}/startLoadStudentCourseUnit${fromAction}?code=${student.code}&courseUnitView.id=${CourseUnitView.id}">${student.name}</html:link>
</logic:notEmpty>
<logic:empty name="fromAction">
<html:link target="_blank" action="/user/startProfileFromHome.do?userView.id=${student.id}">${student.name}</html:link>
</logic:empty>
</td>
<td>
${student.username}
</td>
<td>
<logic:empty name="UserSession" property="user">
${student.safeEmail}
</logic:empty>
<logic:notEmpty name="UserSession" property="user">
${student.email}
</logic:notEmpty>
</td>
<baco:hasRole role="teacher">
<td>${student.phonenumber} </td>