Rev 1326 | Rev 1572 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.IAnswersProcessor" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioHistoryDrive" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioImpl" %>
<%@ 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" %>
<html:form styleClass="form-horizontal" action="/user/questionariosPae" enctype="multipart/form-data" onsubmit="updateIntroHtml()">
<input type="hidden" name="dispatch" value="save">
<html:hidden property="questionario.id"/>
<jsp:useBean id="QuestionarioForm" type="pt.estgp.estgweb.web.form.questionarios.QuestionarioForm" scope="request"/>
<script>
function submitQuestionarioForm(form)
{
updateIntroHtml();
form.submit();
}
function updateIntroHtml()
{
$('#introHtml').val($('#editor').html());
}
$(document).ready(
function(){
setText();
$(".perguntaGroup").each(
function(){
if($(this).val() == "")
{
$(this).css({
"background-color":"orange"
});
}
}
);
}
);
function setText()
{
$("#editor").html('<bean:write name="QuestionarioForm" property="questionario.introHtml" filter="false"/>');
}
</script>
<style>
.dropable
{
border: 1px dashed blue;
}
.dropable .toDrop
{
border: 2px solid blue !important;
}
</style>
<div class="panel panel-default">
<div class="panel-heading">
<logic:lessEqual name="QuestionarioForm" property="questionario.id" value="0">
Novo Questionário
</logic:lessEqual>
<logic:notEqual name="QuestionarioForm" property="questionario.id" value="0">
Questionário (Número Controlo - ${QuestionarioForm.questionario.id})
</logic:notEqual>
<a class="pull-right" href="javascript:$('#diagrama').animate({height:'toggle'},200);">Ver Diagrama de Estados dos Questionários</a>
</div>
<div class="panel-body">
<%--##################################################--%>
<%--################ INPUT START #############--%>
<%--##################################################--%>
<div id="allInputs">
<html:errors/>
<jomm:messages/>
<div id="diagrama" style="display: none" class="panel panel-default">
<div class="panel-body">
<div class="row-centered">
<img src="<%=request.getContextPath()%>/user/questionarios/QuestionarioState.bmp"/>
</div>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
Dados Administrativos
</div>
<div class="panel-body">
<baco:notClearOperation name="QuestionarioForm" property="questionario" op="QUESTIONARIO_SAVE_FORM">
<div class="alert alert-warning">
Formulário Trancado - Estado do Questionário ${QuestionarioForm.questionario.state}
</div>
</baco:notClearOperation>
<%
List<IAnswersProcessor> answersProcessors = QuestionarioImpl.getIAnswerProcessors();
request.setAttribute("answersProcessors",answersProcessors);
AbstractDao.getCurrentSession().beginTransaction();
List<QuestionarioHistoryDrive> historyDrives = DaoFactory.getQuestionarioHistoryDriveDaoImpl().getHistoryDrivesList();
request.setAttribute("historyDrives",historyDrives);
AbstractDao.getCurrentSession().getTransaction().commit();
%>
<script>
$(document).ready( function()
{
<logic:lessEqual value="0" name="QuestionarioForm" property="questionario.id">
$("#answProc").val("pt.estgp.estgweb.services.questionarios.PedagogicoAlunosProcessor");
</logic:lessEqual>
<baco:notClearOperation name="QuestionarioForm" property="questionario" op="QUESTIONARIO_SAVE_ANSWER_PROCESSOR">
$("#histDrives").prop( "disabled", true );
$("#histDrivesHidden").prop( "disabled", false );
$("#answProc").prop( "disabled", true );
$("#answProcHidden").prop( "disabled", false );
</baco:notClearOperation>
//set history allays after answerproc defined
setHistoryDrive($("#answProc").val());
<baco:notClearOperation name="QuestionarioForm" property="questionario" op="QUESTIONARIO_SAVE_FORM">
$('#allInputs').find('input, textarea, button, select, #editor').attr('disabled','disabled');
</baco:notClearOperation>
}
);
//Metodo para alterar a History dado o AnswerProcessor
//Usa o Answer Processor Contraint
function setHistoryDrive(answerProcessor)
{
<baco:clearOperation name="QuestionarioForm" property="questionario" op="QUESTIONARIO_SAVE_ANSWER_PROCESSOR">
$("#histDrivesHidden").prop( "disabled", true );
$("#histDrives").removeAttr( "disabled");
$("#histDrives").val("");
<%
for(IAnswersProcessor iAnswersProcessor: answersProcessors)
{
if(iAnswersProcessor.getHistoryDriveConstraint() != null)
{
for(QuestionarioHistoryDrive hD: historyDrives)
{
if(hD.getCodeName().equals(iAnswersProcessor.getHistoryDriveConstraint()))
{
%>
if(answerProcessor == '<%=iAnswersProcessor.getClass().getName()%>')
{
$("#histDrives").val('<%=hD.getId()%>');
$("#histDrivesHidden").val('<%=hD.getId()%>');
$("#histDrives").prop("disabled",true);
$("#histDrivesHidden").prop( "disabled", false );
}
<%
break;
}
}
}
}
%>
</baco:clearOperation>
}
</script>
<baco:notClearOperation name="QuestionarioForm" property="questionario" op="QUESTIONARIO_SAVE_ANSWER_PROCESSOR">
<p>
Estado: <label class="alert alert-warning alert-small">
<bean:message key="questionario.state.${QuestionarioForm.questionario.state}"/>
</label>
</p>
<div class="alert alert-danger alert-small">A alteração do processador de respostas está trancado devido ao estado em que o questionário se encontra</div>
</baco:notClearOperation>
<div class="form-group">
<label class="control-label col-sm-2">Processador de Respostas</label>
<div class="col-sm-10">
<html:hidden styleId="answProcHidden" styleClass="form-control" property="questionario.iAnswersProcessor" disabled="true"/>
<html:select styleId="answProc" styleClass="form-control" property="questionario.iAnswersProcessor" onchange="setHistoryDrive($(this).val());">
<option value=""></option>
<html:optionsCollection name="answersProcessors" label="title" value="class.name"/>
</html:select>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Categoria Histórica de Análise de Dados</label>
<div class="col-sm-10">
<html:hidden styleId="histDrivesHidden" styleClass="form-control" property="questionario.questionarioHistoryDrive.id" disabled="true"/>
<html:select styleId="histDrives" styleClass="form-control" property="questionario.questionarioHistoryDrive.id">
<option value=""></option>
<html:optionsCollection name="historyDrives" label="codeName" value="id"/>
</html:select>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Descrição Administrativa</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" property="questionario.description"/>
</div>
</div>
<h3><a href="javascript:$('#groupAdmin').animate({height:'toggle'},200);">Administração de Grupos</a></h3>
<div id="groupAdmin" style="display: none" class="panel panel-default">
<div class="panel-body">
<div class="alert alert-warning">
ATENÇÃO: A alteração dos códigos dos grupos vai afetar os resultados históricos e o processamento de resultados. Não altere os códigos dos grupos
já existentes sem coordenação com a equipa de desenvolvimento.
</div>
<button type="button" class="btn btn-warning" onclick="$('.textGroupDisab').removeAttr('disabled');$(this).hide()">Ativar edição de códigos</button>
<%
for(int g = 1; g <= 10; g ++)
{
request.setAttribute("g",g);
%>
<div class="form-group">
<label class="control-label col-sm-2" for="g${g}">Grupo ${g}:</label>
<div class="col-sm-10">
<html:text styleClass="form-control" property="questionario.group${g}Title" styleId="g${p}" onchange="set(this.form,'refresh');submitQuestionarioForm(form);"/>
</div>
<label class="control-label col-sm-2" for="g${g}">Código do Grupo ${g}:</label>
<div class="col-sm-4">
<html:text styleClass="form-control textGroupDisab" disabled="true" property="questionario.group${g}Code" onchange="set(this.form,'refresh');submitQuestionarioForm(form);"/>
</div>
</div>
<%
}
%>
</div>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-sm-12">
<h3>Texto Introdutório do Questionário</h3>
<baco:notClearOperation name="QuestionarioForm" property="questionario" op="QUESTIONARIO_SAVE_FORM">
<div style="border:1px solid gray">
${QuestionarioForm.questionario.introHtml}
</div>
</baco:notClearOperation>
<baco:clearOperation name="QuestionarioForm" property="questionario" op="QUESTIONARIO_SAVE_FORM">
<div class="btn-toolbar" data-role="editor-toolbar" data-target="#editor">
<!-- <div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" title="Font"><i class="aweicon-font"></i><b class="caret"></b></a>
<ul class="dropdown-menu">
</ul>
</div>-->
<div class="btn-group">
<a class="btn btn-default" data-toggle="dropdown" title="Font Size"><i class="aweicon-text-height"></i> <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a data-edit="fontSize 5"><font size="5">Grande</font></a></li>
<li><a data-edit="fontSize 4"><font size="4">Maior</font></a></li>
<li><a data-edit="fontSize 3"><font size="3">Normal</font></a></li>
<li><a data-edit="fontSize 2"><font size="2">Menor</font></a></li>
<li><a data-edit="fontSize 1"><font size="1">Pequeno</font></a></li>
</ul>
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="bold" title="Bold (Ctrl/Cmd+B)"><i class="aweicon-bold"></i></a>
<a class="btn btn-default" data-edit="italic" title="Italic (Ctrl/Cmd+I)"><i class="aweicon-italic"></i></a>
<a class="btn btn-default" data-edit="strikethrough" title="Strikethrough"><i class="aweicon-strikethrough"></i></a>
<a class="btn btn-default" data-edit="underline" title="Underline (Ctrl/Cmd+U)"><i class="aweicon-underline"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="insertunorderedlist" title="Bullet list"><i class="aweicon-list-ul"></i></a>
<a class="btn btn-default" data-edit="insertorderedlist" title="Number list"><i class="aweicon-list-ol"></i></a>
<a class="btn btn-default" data-edit="outdent" title="Reduce indent (Shift+Tab)"><i class="aweicon-indent-left"></i></a>
<a class="btn btn-default" data-edit="indent" title="Indent (Tab)"><i class="aweicon-indent-right"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="justifyleft" title="Align Left (Ctrl/Cmd+L)"><i class="aweicon-align-left"></i></a>
<a class="btn btn-default" data-edit="justifycenter" title="Center (Ctrl/Cmd+E)"><i class="aweicon-align-center"></i></a>
<a class="btn btn-default" data-edit="justifyright" title="Align Right (Ctrl/Cmd+R)"><i class="aweicon-align-right"></i></a>
<a class="btn btn-default" data-edit="justifyfull" title="Justify (Ctrl/Cmd+J)"><i class="aweicon-align-justify"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default dropdown-toggle" data-toggle="dropdown" title="Hyperlink"><i class="aweicon-link"></i></a>
<div class="dropdown-menu input-append">
<input class="span2" placeholder="URL" type="text" data-edit="createLink"/>
<button class="btn" type="button">Add</button>
</div>
<a class="btn btn-default" data-edit="unlink" title="Remove Hyperlink"><i class="aweicon-cut"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default" title="Insert picture (or just drag & drop)" id="pictureBtn"><i class="aweicon-picture"></i></a>
<input type="file" data-role="magic-overlay" data-target="#pictureBtn" data-edit="insertImage" />
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="undo" title="Undo (Ctrl/Cmd+Z)"><i class="aweicon-undo"></i></a>
<a class="btn btn-default" data-edit="redo" title="Redo (Ctrl/Cmd+Y)"><i class="aweicon-repeat"></i></a>
</div>
<!--
<div class="btn-group">
<img style="width:20px" draggable="true" src="<%=request.getContextPath()%>/imgs/grafico.gif" class="bacoTemplate" template-target="template1"/>
<img style="width:20px" draggable="true" src="<%=request.getContextPath()%>/imgs/grafico.gif" class="bacoTemplate" template-target="template2"/>
<img style="width:20px" draggable="true" src="<%=request.getContextPath()%>/imgs/grafico.gif" class="bacoTemplate" template-target="template3"/>
<img style="width:20px" draggable="true" src="<%=request.getContextPath()%>/imgs/grafico.gif" class="bacoTemplate" template-target="template4"/>
</div>-->
<!-- <script>
var emEdicao;
function setupPalete()
{
$(".meupanel").click(
function(){
emEdicao = this;
$(emEdicao).css({border:"3px solid yellow"});
}
);
}
$(document).ready(function(){
$(".bacoTemplate").on("dragstart",
function(e){
e.originalEvent.dataTransfer.setData("template", $(e.target).attr("template-target"));
}
);
});
</script>-->
</div>
<div id="editor" class="dropable">
</div>
</baco:clearOperation>
</div>
</div>
<html:hidden styleId="introHtml" property="questionario.introHtml"/>
<hr/>
<%
for(int i = 1; i <= 40; i ++)
{
request.setAttribute("p",i);
request.setAttribute("pBefore",i-1);
%>
<logic:present name="QuestionarioForm" property="questionario.p${p}Group">
<logic:equal value="1" name="p">
<h3>
<logic:equal value="1" name="QuestionarioForm" property="questionario.p${p}Group">
1 - ${QuestionarioForm.questionario.group1Title}
</logic:equal>
<logic:equal value="2" name="QuestionarioForm" property="questionario.p${p}Group">
2 - ${QuestionarioForm.questionario.group2Title}
</logic:equal>
<logic:equal value="3" name="QuestionarioForm" property="questionario.p${p}Group">
3 - ${QuestionarioForm.questionario.group3Title}
</logic:equal>
<logic:equal value="4" name="QuestionarioForm" property="questionario.p${p}Group">
4 - ${QuestionarioForm.questionario.group4Title}
</logic:equal>
<logic:equal value="5" name="QuestionarioForm" property="questionario.p${p}Group">
5 - ${QuestionarioForm.questionario.group5Title}
</logic:equal>
<logic:equal value="6" name="QuestionarioForm" property="questionario.p${p}Group">
6 - ${QuestionarioForm.questionario.group6Title}
</logic:equal>
<logic:equal value="7" name="QuestionarioForm" property="questionario.p${p}Group">
7 - ${QuestionarioForm.questionario.group7Title}
</logic:equal>
<logic:equal value="8" name="QuestionarioForm" property="questionario.p${p}Group">
8 - ${QuestionarioForm.questionario.group8Title}
</logic:equal>
<logic:equal value="9" name="QuestionarioForm" property="questionario.p${p}Group">
9 - ${QuestionarioForm.questionario.group9Title}
</logic:equal>
<logic:equal value="10" name="QuestionarioForm" property="questionario.p${p}Group">
10 - ${QuestionarioForm.questionario.group10Title}
</logic:equal>
</h3>
</logic:equal>
<logic:greaterThan value="1" name="p">
<jomm:notEqualBeans name1="QuestionarioForm" property1="questionario.p${p}Group" name2="QuestionarioForm" property2="questionario.p${pBefore}Group">
<hr/>
<h3>
<logic:equal value="1" name="QuestionarioForm" property="questionario.p${p}Group">
1 - ${QuestionarioForm.questionario.group1Title}
</logic:equal>
<logic:equal value="2" name="QuestionarioForm" property="questionario.p${p}Group">
2 - ${QuestionarioForm.questionario.group2Title}
</logic:equal>
<logic:equal value="3" name="QuestionarioForm" property="questionario.p${p}Group">
3 - ${QuestionarioForm.questionario.group3Title}
</logic:equal>
<logic:equal value="4" name="QuestionarioForm" property="questionario.p${p}Group">
4 - ${QuestionarioForm.questionario.group4Title}
</logic:equal>
<logic:equal value="5" name="QuestionarioForm" property="questionario.p${p}Group">
5 - ${QuestionarioForm.questionario.group5Title}
</logic:equal>
<logic:equal value="6" name="QuestionarioForm" property="questionario.p${p}Group">
6 - ${QuestionarioForm.questionario.group6Title}
</logic:equal>
<logic:equal value="7" name="QuestionarioForm" property="questionario.p${p}Group">
7 - ${QuestionarioForm.questionario.group7Title}
</logic:equal>
<logic:equal value="8" name="QuestionarioForm" property="questionario.p${p}Group">
8 - ${QuestionarioForm.questionario.group8Title}
</logic:equal>
<logic:equal value="9" name="QuestionarioForm" property="questionario.p${p}Group">
9 - ${QuestionarioForm.questionario.group9Title}
</logic:equal>
<logic:equal value="10" name="QuestionarioForm" property="questionario.p${p}Group">
10 - ${QuestionarioForm.questionario.group10Title}
</logic:equal>
</h3>
</jomm:notEqualBeans>
</logic:greaterThan>
</logic:present>
<div class="form-group">
<label class="control-label col-sm-2" for="p${p}">Pergunta ${p}:</label>
<div class="col-sm-8">
<html:textarea styleClass="form-control" property="questionario.p${p}" styleId="p${p}"/>
</div>
<div class="col-sm-2">
<html:select styleClass="form-control perguntaGroup" property="questionario.p${p}Group" onchange="set(this.form,'refresh');submitQuestionarioForm(form);">
<html:option value="">Nenhum</html:option>
<%
for(int a = 1;a<10;a++)
{
request.setAttribute("a",a);
%>
<logic:notEmpty name="QuestionarioForm" property="questionario.group${a}Title">
<html:option value="${a}"><bean:write name="QuestionarioForm" property="questionario.group${a}Title"/></html:option>
</logic:notEmpty>
<%
}
%>
</html:select>
</div>
</div>
<%
}
%>
</div>
<baco:clearOperation name="QuestionarioForm" property="questionario" op="QUESTIONARIO_SAVE_FORM">
<button type="button" class="btn btn-success" onclick="submitQuestionarioForm(form);"><bean:message key="confirm"/></button>
</baco:clearOperation>
<html:link action="/user/listQuestionarios" styleClass="btn btn-danger"><bean:message key="cancel"/></html:link>
</div>
</div>
</html:form>