Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1685 → Rev 1686

/branches/v3/impl/conf/language/MessageResources.properties
17,8 → 17,8
 
 
#errors.header=<script>alert('Existem erros ou avisos, verifique a lista');</script><div class="web-messages">
errors.header=<div class="web-messages">
errors.prefix=<div class="alert alert-warning">
errors.header=<div class="web-messages web-messages-errors-baco">
errors.prefix=<div class="alert alert-warning web-messages-error-baco">
errors.suffix=</div>
errors.footer=</div>
 
/branches/v3/impl/conf/WEB-INF/struts/struts-courseunits.xml
77,6 → 77,16
<forward name="edit.evaluation" path="page.edit.courseunit.evaluation"/>
</action>
 
<!--Authentication-->
<action path="/user/courseUnitEvaluationControllerWidget"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsEvaluationController"
name="CourseUnitEvaluationForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.widget.json.fail.validations">
</action>
 
<!--<action path="/user/startLoadCourseUnitFromHome" forward="page.load.courseunit.from.home"/>-->
 
<action path="/user/startLoadCourseUnitRootFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadRoot&amp;from=Home"/>
/branches/v3/impl/conf/WEB-INF/struts/struts-pae.xml
71,6 → 71,17
 
 
 
<!--Authentication-->
<action path="/authenticateWidget"
type="pt.estgp.estgweb.web.controllers.authenticate.AuthenticateController"
name="WidgetModelForm"
scope="request"
parameter="dispatch"
validate="true"
input="page.widget.json.fail.validations">
</action>
 
 
</action-mappings>
 
</struts-config>
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/views/CourseView.java
224,6 → 224,7
if(department != null)
{
c.setDepartment(department);
if(department != null)
c.setInstitutionalCode(department.getCourseSchool().getInstitutionalCode());
}
 
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsEvaluationController.java
80,10 → 80,7
}
}
 
public ActionForward saveEvaluation(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
public boolean saveEvaluation(ActionForm form,HttpServletRequest request, HttpServletResponse response)
throws ServletException
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
92,28 → 89,34
boolean go = true;
long id = cUF.getCourseUnitView().getId();
CourseUnitEvaluationView cuV = cUF.getCourseUnitEvaluationView();
if(request.getParameter("json")!=null && request.getParameter("json").equals("true"))
if(request.getParameter("autosave") != null && request.getParameter("autosave").equals("true"))
{
cuV.setAutosave(true);
}
else
{
ActionErrors errors = cUF.validateSave(mapping,request);
ActionErrors errors = cUF.validateSave(null,request);
if(errors.size() > 0)
{
saveErrors(request, errors);
go = false;
}
}
 
 
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{cuV, id};
String[] names = new String[]{"evaluationView", "unitId"};
if(go)
{
cuV = (CourseUnitEvaluationView) sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args,names);
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
addMessage(request,"courseunit.evaluation.success");
}
/*CourseUnitView cV = loadCourseUnitView(id,true,false, null, request, response);
cUF.setCourseUnitView(cV);
cUF.setCourseUnitEvaluationView(cuV);
request.setAttribute("CourseUnitView", cV);
 
if(go)
addMessage(request,"courseunit.evaluation.success");
if(request.getParameter("json")!=null && request.getParameter("json").equals("true"))
124,27 → 127,20
return mapping.findForward("load");
else
return mapping.findForward("edit.evaluation");
*/
return true;
 
 
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
addError(request, "courseunit.evaluation.tryagain");
return editEvaluation(mapping,cUF,request,response);
return false;
}
}
 
 
public ActionForward teacherCompleteEvaluation(ActionMapping mapping,
public boolean teacherCompleteEvaluation(
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
154,7 → 150,7
try
{
boolean go = true;
ActionErrors errors = cUF.validateSave(mapping,request);
ActionErrors errors = cUF.validateSave(null,request);
if(errors.size() > 0)
{
saveErrors(request, errors);
170,36 → 166,37
String[] names = new String[]{"evaluationView", "unitId"};
if(go)
cuV = (CourseUnitEvaluationView) sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args,names);
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
cUF.setCourseUnitView(cV);
cUF.setCourseUnitEvaluationView(cuV);
request.setAttribute("CourseUnitView", cV);
//CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
//cUF.setCourseUnitView(cV);
//cUF.setCourseUnitEvaluationView(cuV);
//request.setAttribute("CourseUnitView", cV);
if(go)
addMessage(request,"courseunit.evaluation.success");
if(go)
return mapping.findForward("load");
else
return mapping.findForward("edit.evaluation");
//if(go)
// return mapping.findForward("load");
//else
// return mapping.findForward("edit.evaluation");
return go;
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
addErrorAsString(request,e.toString());
return false;
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
addErrorAsString(request,e.toString());
return false;
}
catch (Throwable e)
{
logger.error(e, e);
addErrorAsString(request,e.toString());
addError(request, "courseunit.evaluation.tryagain");
return editEvaluation(mapping,cUF,request,response);
//return mapping.findForward("error500");
return false;
}
}
 
public ActionForward publishEvaluation(ActionMapping mapping,
ActionForm form,
public boolean publishEvaluation(ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
208,7 → 205,7
try
{
boolean go = true;
ActionErrors errors = cUF.validateSave(mapping,request);
ActionErrors errors = cUF.validateSave(null,request);
if(errors.size() > 0)
{
saveErrors(request, errors);
223,30 → 220,34
String[] names = new String[]{"evaluationView", "unitId"};
if(go)
cuV = (CourseUnitEvaluationView) sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args,names);
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
cUF.setCourseUnitView(cV);
cUF.setCourseUnitEvaluationView(cuV);
request.setAttribute("CourseUnitView", cV);
//CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
//cUF.setCourseUnitView(cV);
//cUF.setCourseUnitEvaluationView(cuV);
//request.setAttribute("CourseUnitView", cV);
if(go)
addMessage(request,"courseunit.evaluation.success");
if(go)
return mapping.findForward("load");
else
return mapping.findForward("edit.evaluation");
//if(go)
// return mapping.findForward("load");
//else
// return mapping.findForward("edit.evaluation");
return go;
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
addErrorAsString(request,e.toString());
return false;
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
addErrorAsString(request,e.toString());
return false;
}
catch (Throwable e)
{
logger.error(e, e);
addError(request, "courseunit.evaluation.tryagain");
return editEvaluation(mapping,cUF,request,response);
addErrorAsString(request,e.toString());
return false;
}
}
 
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsProgramController.java
41,6 → 41,7
HttpServletResponse response)
throws Throwable {
 
 
CourseUnitProgramForm cUF = (CourseUnitProgramForm) form;
 
long id = cUF.getCourseUnitId();
57,6 → 58,7
request,
response);
 
 
}
 
public ActionForward invalidateProgram(ActionMapping mapping,
65,22 → 67,25
HttpServletResponse response)
throws Throwable {
 
CourseUnitProgramForm cUF = (CourseUnitProgramForm) form;
 
long id = cUF.getCourseUnitId();
if(id <= 0)
id = cUF.getCourseUnitView().getId();
CourseUnitProgramForm cUF = (CourseUnitProgramForm) form;
 
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{id};
String[] names = new String[]{"unitId"};
sm.execute(RequestUtils.getRequester(request, response), "InvalidateCourseUnitProgram", args,names);
long id = cUF.getCourseUnitId();
if(id <= 0)
id = cUF.getCourseUnitView().getId();
 
return editProgram(mapping,
form,
request,
response);
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{id};
String[] names = new String[]{"unitId"};
sm.execute(RequestUtils.getRequester(request, response), "InvalidateCourseUnitProgram", args,names);
 
return editProgram(mapping,
form,
request,
response);
 
 
 
}
 
public ActionForward editProgram(ActionMapping mapping,
153,7 → 158,13
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
return mapping.findForward("load");
 
if(request.getParameter("json")!=null && request.getParameter("json").equals("true"))
{
return mapping.findForward("jsonOk");
}
else
return mapping.findForward("load");
}
catch (FilterChainFailedException e)
{
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/authenticate/AuthenticateController.java
9,7 → 9,7
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.services.authenticate.AuthenticateException;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.web.form.profile.ProfileForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
27,11 → 27,36
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class AuthenticateController extends ApplicationDispatchController
public class AuthenticateController extends AbstractWidgetAjaxController
{
 
private static final Logger logger = Logger.getLogger(AuthenticateController.class);
 
public boolean loginWidget(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable
{
try
{
String username = request.getParameter("username");
String password = request.getParameter("password");
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{username,password};
UserSession userSession = (UserSession) sm.execute(RequestUtils.getRequester(request, response),Globals.AUTHENTICATE_SERVICE,args);
request.setAttribute(Globals.USER_SESSION_KEY,userSession);
return true;
}
catch (AuthenticateException e)
{
ActionMessages actionMessages = new ActionMessages();
actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(e.getMessage()));
saveErrors(request, actionMessages);
return false;
}
catch (Throwable e)
{
return false;
}
}
 
public ActionForward login(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
270,4 → 295,6
}
 
 
 
 
}
/branches/v3/impl/src/web/auth/loginWidget.jsp
New file
0,0 → 1,93
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ 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" %>
<script>
var actionAuthenticate = "<%=request.getContextPath()%>/authenticateWidget.do";
function authenticateWidget()
{
var username = $("#formAuthenticationWidget input[name='username']").val();
var password = $("#formAuthenticationWidget input[name='password']").val();
widgetSimpleCallWithActionParameters(
"<%=request.getContextPath()%>/authenticateWidget.do",
"loginWidget",
{
"username" : username,
"password" : password
},
"#formAuthenticationWidget",
function()
{
$('#modalAuthentication').modal('hide');
},
function()
{
//fail
}
);
}
</script>
 
 
 
<!--AUTENTICATION MODAL-->
<script>
$(document).ready(function(){
$('#modalAuthentication').on('show.bs.modal', function(e)
{
$("#modalAuthentication .web-messages").html("");
});
});
</script>
<div class="modal fade" id="modalAuthentication" role="dialog" >
<div class="modal-dialog" data-width="960" style="display: block; width: 960px; margin-top: 50px;" aria-hidden="false">
 
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title">Formulário de Autenticação</h1>
</div>
 
<div class="modal-body">
<div class="alert alert-info">
Caro utilizador, a sessão expirou, por favor introduza as suas credênciais
para voltar a autênticar-se no sistema
e poder repetir a última operação. Obrigado.
</div>
 
<div id="formAuthenticationWidget" class="clearfix">
 
<div class="web-messages" style="margin-bottom: 5px"></div>
 
<div class="form-horizontal col-md-12 clearfix">
<div class="form-group clearfix">
<label class="col-md-12" style="margin-bottom: 10px"><jomm:messageConfigKey config="authentication.policy.username.msg.key"/></label>
<div class="col-md-6">
<input type="text" class="form-control" name="username"/>
</div>
</div>
<div class="form-group clearfix">
<label class="col-md-12" style="margin-bottom: 10px"><jomm:messageConfigKey config="authentication.policy.password.msg.key"/></label>
<div class="col-md-6">
<input type="password" class="form-control" name="password"/>
</div>
</div>
<div class="col-sm-2">
<button type="button" class="btn btn-success" onclick="authenticateWidget()"><bean:message key="submit"/></button>
</div>
</div>
</div>
 
 
</div>
</div>
 
</div>
</div>
 
 
/branches/v3/impl/src/web/errors/401.jsp
9,7 → 9,7
<%
response.sendError(401);
%>
<div class="container-fluid">
<div class="container-fluid errorContent">
 
<h3 class="statusWARNING">
<baco:isNotAuthenticated>
/branches/v3/impl/src/web/errors/500.jsp
9,7 → 9,7
response.sendError(500);
%>
 
<div class="container-fluid">
<div class="container-fluid errorContent">
<div class="alert alert-danger"><bean:message key="error.500"/></div>
<div class="alert alert-info"><bean:message key="admin.contact"/>
<ul>
/branches/v3/impl/src/web/errors/404.jsp
8,7 → 8,7
<%
response.sendError(404);
%>
<div class="container-fluid">
<div class="container-fluid errorContent">
<div class="alert alert-warning"><bean:message key="error.404"/></div>
<p><bean:message key="error.404.explain"/></p>
<ul>
/branches/v3/impl/src/web/errors/503.jsp
8,7 → 8,7
<%
response.sendError(500);
%>
<div class="container-fluid">
<div class="container-fluid errorContent">
<div class="alert alert-danger"><bean:message key="error.503"/></div>
<div class="alert alert-info"><bean:message key="admin.contact"/>
<ul>
/branches/v3/impl/src/web/errors/noCookies.jsp
6,5 → 6,7
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
 
 
<div class="container-fluid errorContent">
<h3 class="statusWARNING"><bean:message key="error.no.cookies"/></h3>
<p><bean:message key="admin.contact"/> webmaster [AT] estgp [DOT] pt</p>
<p><bean:message key="admin.contact"/> webmaster [AT] estgp [DOT] pt</p>
</div>
/branches/v3/impl/src/web/errors/408.jsp
8,6 → 8,7
<%
response.sendError(404);
%>
<div class="container-fluid errorContent">
<h3 class="statusWARNING"><bean:message key="error.404"/></h3>
<p><bean:message key="error.408.explain"/></p>
 
17,3 → 18,4
<li><%=ConfigProperties.getProperty("admin.email.2")%></li>
</ul>
</p>
</div>
/branches/v3/impl/src/web/js/baco-widgets.js
12,7 → 12,7
{
var data = $(form).serialize().replace(/%0D%0A/g, '%0A').replace(/\r?\n/g, "\r\n");
 
widgetCallWithActionParameters(form.action,serviceName,data,form,handlerOk,handlerFail);
widgetCallWithActionParameters($(form).attr("action"),serviceName,data,form,handlerOk,handlerFail);
}
 
/**
25,7 → 25,7
*/
function widgetCallWithParameters(serviceName,parameters,form,handlerOk,handlerFail)
{
widgetCallWithActionParameters(form.action,serviceName,parameters,form,handlerOk,handlerFail);
widgetCallWithActionParameters($(form).attr("action"),serviceName,parameters,form,handlerOk,handlerFail);
}
 
/**
48,6 → 48,11
type: "POST",
data: data,
dataType: "json",
statusCode: {
401:function() {
$("#modalAuthentication").modal({ show : 'true'});
}
},
success: function(resposta)
{
 
90,7 → 95,7
 
function widgetSimpleCall(serviceName,form,handlerOk,handlerFail){
var data = $(form).serialize().replace(/%0D%0A/g, '%0A').replace(/\r?\n/g, "\r\n");
widgetSimpleCallWithActionParameters(form.action,serviceName,data,form,handlerOk,handlerFail);
widgetSimpleCallWithActionParameters($(form).attr("action"),serviceName,data,form,handlerOk,handlerFail);
}
/**
*
108,6 → 113,12
type: "POST",
data: data,
dataType: "json",
statusCode: {
401:function() {
$('.modal').modal("hide");
$("#modalAuthentication").modal({ show : 'true'});
}
},
success: function(resposta)
{
$(webMessagesContainer).find(".web-messages").html("");
136,11 → 147,16
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
}
for(var error in resposta.errors)
{
$(webMessagesContainer).find(".web-messages").append('<div class="alert alert-warning">' + resposta.errors[error] + '</div>');
}
if(handlerOk != undefined)
handlerOk();
}
},
error: function() {
error: function(resposta)
{
$(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor tente novamente</div>');
}
});
/branches/v3/impl/src/web/layout/themes/scripts-default.jsp
741,3 → 741,5
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/bpmn/css/bpmn.css" />
 
 
 
 
/branches/v3/impl/src/web/layout/headerTools.jsp
323,4 → 323,129
<jsp:include page="intranetTools/files-upload-form.jsp"/>
 
<link rel="stylesheet" href="<%=request.getContextPath()%>/js/angularjs/angular-ui-tree/angular-ui-tree.min.css">
<script type="text/javascript" src="<%=request.getContextPath()%>/js/angularjs/angular-ui-tree/angular-ui-tree.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/angularjs/angular-ui-tree/angular-ui-tree.js"></script>
 
 
 
 
 
 
 
<script>
//COLOCAR WEB-MESSAGES WARNING E ERROR NUMA MODAL DEPOIS DE CARREGAR A PAGINA
$(document).ready(function()
{
if($(".web-messages-errors-baco").length)
{
$('#errorsBacoModal .content-errors').html($(".web-messages-errors-baco").html());
$('#errorsBacoModal').modal({
show: 'true'
});
}
});
function modalWebMessages(title)
{
if($(".web-messages").length)
{
$("#modalWebMessages modal-title").html(title);
$('#modalWebMessages .content-web-messages').html( $(".web-messages").html());
$('#modalWebMessages .content-aditional').html( "");
$('#modalWebMessages').modal({
show: 'true'
});
}
}
function modalWebMessages(title,aditionalHtml)
{
if($(".web-messages").length)
{
$("#modalWebMessages .modal-title").html(title);
$('#modalWebMessages .content-web-messages').html( $(".web-messages").html());
$('#modalWebMessages .content-aditional').html( aditionalHtml);
$('#modalWebMessages').modal({
show: 'true'
});
}
}
function modalWebMessagesGivenContainer(title,refContainer)
{
if($(refContainer + " .web-messages").length)
{
$("#modalWebMessages .modal-title").html(title);
$('#modalWebMessages .content-web-messages').html($(refContainer + " .web-messages").html());
$('#modalWebMessages .content-aditional').html( "");
$('#modalWebMessages').modal({
show: 'true'
});
}
}
function modalWebMessagesGivenContainer(title,refContainer,targetOkUrl)
{
if($(refContainer + " .web-messages").length)
{
$("#modalWebMessages .modal-title").html(title);
$('#modalWebMessages .content-web-messages').html($(refContainer + " .web-messages").html());
$('#modalWebMessages .content-aditional').html( "");
$('#modalWebMessages').modal({
show: 'true'
});
$("#modalWebMessages button[data-dismiss='modal']").unbind( "click" );
$("#modalWebMessages button[data-dismiss='modal']").click(
function()
{
window.location.href = targetOkUrl;
}
);
}
}
</script>
 
<div class="modal fade" id="errorsBacoModal" role="dialog" >
<div class="modal-dialog" data-width="960" style="display: block; width: 960px; margin-top: 50px;" aria-hidden="false">
 
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title">Existem Avisos</h1>
</div>
<div class="modal-body">
<div class="panel panel-default">
<div class="panel-body content-errors" >
 
</div>
</div>
 
<button type="button" class="btn btn-default" data-dismiss="modal">Entendi</button>
</div>
</div>
 
</div>
</div>
 
<div class="modal fade" id="modalWebMessages" role="dialog" >
<div class="modal-dialog" data-width="960" style="display: block; width: 960px; margin-top: 50px;" aria-hidden="false">
 
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title"></h1>
</div>
<div class="modal-body">
<div class="panel panel-default">
<div class="panel-body content-web-messages" >
 
</div>
</div>
<div class="content-aditional" >
 
</div>
<button type="button" class="btn btn-default" data-dismiss="modal">Entendi</button>
</div>
</div>
 
</div>
</div>
 
 
 
<jsp:include page="/auth/loginWidget.jsp"/>
/branches/v3/impl/src/web/user/courseunits/courseunitEvaluation.jsp
370,6 → 370,7
<html:errors/>
<jomm:messages/>
 
 
<baco:notClearOperation name="CourseUnitView" property="courseUnit" op="EVALUATION_INFO_ACTIVE">
<div class="alert alert-info">
<bean:message key="courseunit.evaluation.period.inactive"/>
471,13 → 472,16
 
 
 
<html:form styleId="formEval" styleClass="form-horizontal" action="/user/courseUnitEvaluationController">
<html:form styleId="formEval" styleClass="form-horizontal" action="/user/courseUnitEvaluationControllerWidget">
<input type="hidden" id="dispatch" name="dispatch" value="saveEvaluation">
<html:hidden property="id"/>
<html:hidden property="courseUnitView.id"/>
<input type="hidden" name="autosave" value="true"/>
 
 
<div class="web-messages"></div>
 
 
<div class="panel panel-default">
<div class="panel-heading">
Dados alterados pelo Docente da Unidade
631,15 → 635,15
</table>
 
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="EVALUATION_EDITSAVE">
<button type="button" class="btn btn-default" onclick="set(form,'saveEvaluation');submitFormWaitAutoSave(form);"><bean:message key="save"/></button>
<button type="button" class="btn btn-default" onclick="submitFormWaitAutoSave(form,'saveEvaluation');"><bean:message key="save"/></button>
</baco:clearOperation>
 
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="EVALUATION_TRANSITATE_TO_COMPLETE">
<button type="button" id="buttonTeacherCompleteEvaluation" class="btn btn-default" onclick="set(form,'teacherCompleteEvaluation');submitFormWaitAutoSave(form);"><bean:message key="courseunit.evaluation.transit.to.complete"/></button>
<button type="button" id="buttonTeacherCompleteEvaluation" class="btn btn-default" onclick="submitFormWaitAutoSave(form,'teacherCompleteEvaluation');"><bean:message key="courseunit.evaluation.transit.to.complete"/></button>
</baco:clearOperation>
 
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="EVALUATION_TRANSITATE_TO_CLOSE">
<button type="button" id="buttonPublishEvaluation" class="btn btn-default" onclick="set(form,'publishEvaluation');submitFormWaitAutoSave(form);"><bean:message key="courseunit.evaluation.transit.to.closed"/></button>
<button type="button" id="buttonPublishEvaluation" class="btn btn-default" onclick="submitFormWaitAutoSave(form,'publishEvaluation');"><bean:message key="courseunit.evaluation.transit.to.closed"/></button>
</baco:clearOperation>
 
 
684,21 → 688,7
</div>
 
<script>
function submitFormWaitAutoSave()
{
stopAutoSave = true;
$('#myModal').modal({
show: 'true'
});
//esperar se houver algum update a executar 1500 segundos é o maximo de espera
//se a pagina não recarregar e porque a thread parou
setTimeout("submitForm()",40000);
}
 
function submitForm()
{
$("#formEdit").submit();
}
 
$( document ).ready(function() {
 
717,46 → 707,77
</baco:notClearOperation>
 
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="EVALUATION_EDITSAVE">
setTimeout("serData()",5000);
setTimeout("autoSaveStart()",5000);
</baco:clearOperation>
 
});
 
 
var stopAutoSave = false;
function autoSaveStart()
{
if(!stopAutoSave)
sendEvaluation(true,"saveEvaluation");
 
function serData()
}
 
function submitFormWaitAutoSave(form,service)
{
if(stopAutoSave)
stopAutoSave = true;
$('#myModal').modal({
show: 'true'
});
//esperar se houver algum update a executar 1500 segundos é o maximo de espera
//se a pagina não recarregar e porque a thread parou
setTimeout("submitForm('" + service + "')",2000);
}
 
function submitForm(service)
{
//Para Submeter sem o JSON = true
 
sendEvaluation(false,service);
}
 
 
 
 
 
function sendEvaluation(autosave,service)
{
 
 
if(autosave)
{
$("#formEval").submit();
return;
$("#dispatch").val("saveEvaluation");
$("#autosave").html('<div class="alert alert-info">Enviando ...</div>');
$("#formEval input[name='autosave']").val("true");
}
else
{
$("#dispatch").val("saveEvaluation");
var data = $("#formEval").serialize().replace(/%0D%0A/g, '%0A').replace(/\r?\n/g, "\r\n");
//alert(data);
$("#formEval input[name='autosave']").val("false");
 
//alert($("#dispatch").val())
$("#autosave").html('<div class="alert alert-info">Enviando ...</div>');
$.ajax({
url: "<%=request.getContextPath()%>/user/courseUnitEvaluationController.do",
type: "POST",
data: data + "&json=true",
dataType: "json",
success: function(resposta) {
if(resposta.service && resposta.service == "ok")
widgetSimpleCall(
service,
$("#formEval"),
function()
{
$('#myModal').modal("hide");
//ok
if(autosave)
{
$("#autosave").html('<div class="alert alert-success">Salvo Automaticamente (Apenas Dados, não gerou PDF, para gerar PDF terá de salvar o docente)</div>');
}
else
$("#autosave").html('<div class="alert alert-warning">Deve salvar o seu relatório periodicamente</div>');
setTimeout("serData()",5000);
{
modalWebMessagesGivenContainer("Avaliação Salva","#formEval","<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=${CourseUnitView.id}");
}
},
error: function() {
$("#autosave").html('<div class="alert alert-danger">Erro de comunicação, tentando novamente em 5 segundos</div>');
setTimeout("serData()",5000);
function()
{
$('#myModal').modal("hide");
modalWebMessagesGivenContainer("Avaliação Salva","#formEval");
}
});
}
);
}
 
</script>
/branches/v3/impl/src/web/user/courseunits/courseunitProgram.jsp
27,7 → 27,10
 
<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.
413,18 → 416,104
 
 
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="PROGRAM_TEACHER_PART,PROGRAM_COORDINATOR_PART">
<button class="btn btn-success" type="button" onclick="set(form,'saveProgram');form.submit()"><bean:message key="save"/></button>
<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 class="btn btn-success" type="button" onclick="set(form,'validateProgram');form.submit()">Salvar e Validar</button>
<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-->
</div><!--Panel-->
 
 
<script>
function saveData(action)
{
 
$("#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() {
$("#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>