Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 856 → Rev 857

/impl/conf/language/MessageResourcesProcesses.properties
3,12 → 3,20
# PROCESSES MESSAGE RESOURCES
#
################################################################################
processes=Pocessos de Expediente
processes.list=Ver Processos
processes.list.processes=Ver Processos
processes.new.meta.process=Criar Meta-Processo
processes.new.process=Criar novo processo
 
 
 
processes.list.meta.processes=Listar processos de expedição
processes.new.process=Expedir de Pedido
 
 
process.submited=Processo submetido com sucesso
 
processes.list.processes=Listagem de Processos
 
processes.opening.process=Processo em Vizualização
 
module.Processes=Processos requerendo a sua intervenção
37,3 → 45,8
process.event.state.ACCEPTED=Aceite
process.event.state.FINNISH_TRANSITATED=Transitado
process.event.state.FINNISH_CLOSED=Fechado
 
 
 
 
metaprocess.created=MetaProcesso {0} criado com sucesso
/impl/conf/language/MessageResources.properties
76,8 → 76,8
area.ch=Área de Ciencias Humanas
area.ce=Área de Ciencias Empresariais
area.dg=Área de Design
area.td=Departamento de Tecnologia e Design
area.cesh=Departamento de Ciencias Empresariais Sociais e Humanas
area.td=Departamento de TD
area.cesh=Departamento de CESH
 
top.menu.area.eg=Engenharias
top.menu.area.dg=Design
99,8 → 99,8
user.role.teacher.ce=Professor da Área de Ciencias Empresariais
user.role.teacher.ch=Professor da Área de Ciencias Humanas
 
user.role.teacher.td=Professor do Departamento de Tecnologia e Design
user.role.teacher.cesh=Professor do Departamento de Ciencias Empresariais Sociais e Humanas
user.role.teacher.td=Professor do DTD
user.role.teacher.cesh=Professor do DCESH
 
 
user.role.student.eg=Aluno da Área de Engenharia
108,8 → 108,8
user.role.student.ce=Aluno da Área de Ciencias Empresariais
user.role.student.ch=Aluno da Área de Ciencias Humanas
 
user.role.student.td=Aluno do Departamento de Tecnologia e Design
user.role.student.cesh=Aluno do Departamento de Ciencias Empresariais Sociais e Humanas
user.role.student.td=Aluno do DTD
user.role.student.cesh=Aluno do DCESH
 
user.role.ci=Centro Informático
user.role.worker=Funcionário
125,10 → 125,10
user.role.schoolSecretary=Secretário da Escola
user.role.administrativeCouncilSecretariat=Secretaria da Direcção
user.role.teachersSecretariat=Secretaria de Pessoal Docente
user.role.dtd.president=Presidente do departamento de Tecnologia e Design
user.role.cesh.president=Presidente do departamento de Ciências Empresariais Sociais e Humanas
user.role.dtd.presidency=Membro da Presidencia do departamento de Tecnologia e Design
user.role.cesh.presidency=Membro da Presidencia do departamento de Ciências Empresariais Sociais e Humanas
user.role.dtd.president=Presidente do DTD
user.role.cesh.president=Presidente do DCESH
user.role.dtd.presidency=Membro da Presidencia do DTD
user.role.cesh.presidency=Membro da Presidencia do DCESH
user.role.scientificCouncil.president=Presidente do Conselho Científico
user.role.representativeCouncil.president=Presidente do Conselho de Representantes
user.role.pedagogicCouncil.president=Presidente do Conselho Pedagógico
/impl/conf/WEB-INF/struts/tiles-processes.xml
8,6 → 8,12
<tiles-definitions>
 
 
<definition name="page.new.meta.process" extends="page.separators.serviceZone">
<put name="title" value="Criar MetaProcesso" />
<put name="topnav" value="/user/processes/topnavNewMetaProcess.jsp"/>
<put name="body" value="/user/processes/createMetaProcess.jsp" />
</definition>
 
<definition name="page.open.process" extends="page.separators.home">
<put name="title" value="Ver Processo" />
<put name="topnav" value="/user/processes/topnavOpenProcess.jsp"/>
/impl/conf/WEB-INF/struts/struts-processes.xml
22,6 → 22,8
 
 
 
<action path="/user/startNewMetaProcess" forward="page.new.meta.process"/>
 
<action path="/user/openProcess" forward="page.open.process"/>
<action path="/user/listProcesses" forward="page.list.processes"/>
<action path="/user/listMetaProcesses" forward="page.list.meta.processes"/>
49,5 → 51,17
<forward name="process.submited" path="page.separators.home"/>
</action>
 
 
<action path="/user/metaProcessesController"
type="pt.estgp.estgweb.web.controllers.processes.MetaProcessesController"
name="NewMetaProcessForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.new.meta.process">
 
<forward name="process.submited" path="page.separators.serviceZone"/>
</action>
 
</action-mappings>
</struts-config>
/impl/src/java/pt/estgp/estgweb/web/form/processes/NewMetaProcessForm.java
1,11 → 1,16
package pt.estgp.estgweb.web.form.processes;
 
import org.apache.struts.action.ActionErrors;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.MetaProcess;
import pt.estgp.estgweb.domain.MetaProcessImpl;
import pt.estgp.estgweb.utils.StringsUtils;
import pt.estgp.estgweb.web.form.ApplicationForm;
 
import java.util.ArrayList;
import java.util.List;
 
/**
* @author Jorge Machado
* @date 25/Jun/2008
16,14 → 21,30
 
private MetaProcessImpl metaProcess;
private FormFile file;
private String fileName;
 
 
private String personToAdd;
private String personToRemove;
private String roleToAdd;
private String roleToRemove;
 
 
 
public NewMetaProcessForm()
{
metaProcess = DomainObjectFactory.createMetaProcessImpl();
}
 
public String getFileName() {
return fileName;
}
 
public void setFileName(String fileName) {
this.fileName = fileName;
}
 
 
public FormFile getFile() {
return file;
}
39,4 → 60,107
public void setMetaProcess(MetaProcessImpl metaProcess) {
this.metaProcess = metaProcess;
}
 
 
public String getPersonToRemove() {
return personToRemove;
}
 
public void setPersonToRemove(String personToRemove) {
this.personToRemove = personToRemove;
}
 
public String getRoleToRemove() {
return roleToRemove;
}
 
public void setRoleToRemove(String roleToRemove) {
this.roleToRemove = roleToRemove;
}
 
public List<String> getPossiblePersons()
{
if(metaProcess.getPossiblePersons() != null && metaProcess.getPossiblePersons().length()>0)
{
return StringsUtils.getStringsFromSerial(metaProcess.getPossiblePersons(),";");
}
return new ArrayList<String>();
}
 
public List<String> getPossibleTargets()
{
if(metaProcess.getPossibleTargets() != null && metaProcess.getPossibleTargets().length()>0)
{
return StringsUtils.getStringsFromSerial(metaProcess.getPossibleTargets(),";");
}
return new ArrayList<String>();
}
 
public String getPersonToAdd() {
return personToAdd;
}
 
public void setPersonToAdd(String personToAdd) {
this.personToAdd = personToAdd;
}
public List<String> getAddedPersonsList()
{
return StringsUtils.getStringsFromSerial(getMetaProcess().getPossiblePersons(),";");
}
 
 
public String getRoleToAdd() {
return roleToAdd;
}
 
public void setRoleToAdd(String roleToAdd) {
this.roleToAdd = roleToAdd;
}
 
 
 
public List<String> getAddedRolesList()
{
return StringsUtils.getStringsFromSerial(getMetaProcess().getPossibleTargets(),";");
}
 
public ActionErrors validate(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest)
{
ActionErrors errors = new ActionErrors();
if(fileName==null || fileName.length()==0)
{
addMessage(errors, httpServletRequest, "errors.required","ficheiro");
}
if(metaProcess.getCategory()==null || metaProcess.getCategory().length()==0)
{
addMessage(errors, httpServletRequest, "errors.required","categoria");
}
if(metaProcess.getSubCategory()==null || metaProcess.getSubCategory().length()==0)
{
addMessage(errors, httpServletRequest, "errors.required","subcategoria");
}
if(metaProcess.getTargetRole()==null || metaProcess.getTargetRole().length()==0)
{
addMessage(errors, httpServletRequest, "errors.required","Atendido por");
}
if(metaProcess.getSrcRole()==null || metaProcess.getSrcRole().length()==0)
{
addMessage(errors, httpServletRequest, "errors.required","Tipo de requerente");
}
if(metaProcess.getName()==null || metaProcess.getName().length()==0)
{
addMessage(errors, httpServletRequest, "errors.required","Nome do MetaProcesso");
}
 
if((metaProcess.getPossiblePersons()==null || metaProcess.getPossibleTargets().length()==0)
&&
( metaProcess.getPossibleTargets()==null || metaProcess.getPossibleTargets().length()==0))
{
addMessage(errors, httpServletRequest, "errors.required","Intervenientes");
}
 
 
return errors;
}
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/processes/MetaProcessesController.java
New file
0,0 → 1,257
package pt.estgp.estgweb.web.controllers.processes;
 
import jomm.dao.utils.HibernateUtils;
import jomm.utils.FilesUtils;
import org.apache.log4j.Logger;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.MetaProcess;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.utils.StringsUtils;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.processes.NewMetaProcessForm;
import pt.estgp.estgweb.web.form.processes.NewProcessForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class MetaProcessesController extends ApplicationDispatchController
{
 
private static final Logger logger = Logger.getLogger(MetaProcessesController.class);
 
 
public ActionForward update(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isSuperuser() && UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole(Globals.ROLE_PROCESSES_ADMIN))
return mapping.findForward("error401");
NewMetaProcessForm f = (NewMetaProcessForm)form;
 
FormFile file = f.getFile();
RepositoryService repositoryService = new RepositoryService();
 
if(file != null && file.getFileSize()>0)
{
System.out.println("FileName:"+file.getFileName());
 
try {
HibernateUtils.getCurrentSession().beginTransaction();
if(f.getMetaProcess().getRepositoryStream() == null || f.getMetaProcess().getRepositoryStream().length() == 0)
{
System.out.println("AQUI");
String repositoryId = repositoryService.storeRepositoryFile(file.getInputStream(),file.getContentType(), FilesUtils.getExtension(file.getFileName()),file.getFileSize(),file.getFileName(),"MetaProcess Template file", ResourceAccessControlEnum.authenticatedDomain, UserSessionProxy.loadUserSessionFromRequest(request));
System.out.println(repositoryId);
f.getMetaProcess().setRepositoryStream(repositoryId);
f.setFileName(file.getFileName());
}
else
{
repositoryService.updateRepositoryFile(f.getMetaProcess().getRepositoryStream(),file.getInputStream(),file.getContentType(),FilesUtils.getExtension(file.getFileName()),file.getFileSize(),file.getFileName(),"MetaProcess Template file",ResourceAccessControlEnum.authenticatedDomain);
f.setFileName(file.getFileName());
}
HibernateUtils.getCurrentSession().getTransaction().commit();
 
}catch(Exception e)
{
logger.error(e,e);
}
}
String personToAdd = f.getPersonToAdd();
 
if(personToAdd.trim().length() > 0)
{
if(f.getMetaProcess().getPossiblePersons() == null)
f.getMetaProcess().setPossiblePersons("");
List<String> persons = StringsUtils.getStringsFromSerial(f.getMetaProcess().getPossiblePersons(), ";");
if(persons == null)
persons = new ArrayList<String>();
if(!persons.contains(personToAdd))
{
f.getMetaProcess().setPossiblePersons(f.getMetaProcess().getPossiblePersons() + personToAdd + ";");
}
 
}
 
String roleToAdd = f.getRoleToAdd();
 
if(roleToAdd.trim().length() > 0)
{
if(f.getMetaProcess().getPossibleTargets() == null)
f.getMetaProcess().setPossibleTargets("");
List<String> roles = StringsUtils.getStringsFromSerial(f.getMetaProcess().getPossibleTargets(), ";");
if(roles == null)
roles = new ArrayList<String>();
if(!roles.contains(roleToAdd))
{
f.getMetaProcess().setPossibleTargets(f.getMetaProcess().getPossibleTargets() + roleToAdd + ";");
}
}
f.setRoleToRemove("");
f.setRoleToAdd("");
f.setPersonToRemove("");
f.setPersonToAdd("");
 
return mapping.getInputForward();
 
}
//catch (FilterChainFailedException e)
//{
// return mapping.findForward("error401");
//}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
}
 
 
public ActionForward create(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isSuperuser() && UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole(Globals.ROLE_PROCESSES_ADMIN))
return mapping.findForward("error401");
try
{
NewMetaProcessForm f = (NewMetaProcessForm)form;
HibernateUtils.getCurrentSession().beginTransaction();
 
ActionMessages errors = f.validate(mapping,request);
if(!errors.isEmpty())
{
saveErrors(request, errors);
return mapping.getInputForward();
}
 
MetaProcess metaProcess = f.getMetaProcess();
if(metaProcess.getId() == 0)
{
metaProcess.setSaveDate(new Date());
DaoFactory.getMetaProcessDaoImpl().save(metaProcess);
}
else
{
MetaProcess db = DaoFactory.getMetaProcessDaoImpl().load(metaProcess.getId());
db.setCategory(metaProcess.getCategory());
db.setSubCategory(metaProcess.getSubCategory());
db.setRepositoryStream(f.getMetaProcess().getRepositoryStream());
db.setDescription(metaProcess.getDescription());
db.setPossiblePersons(metaProcess.getPossiblePersons());
db.setPossibleTargets(metaProcess.getPossibleTargets());
db.setName(metaProcess.getName());
db.setSrcRole(metaProcess.getSrcRole());
db.setTargetRole(metaProcess.getTargetRole());
}
 
 
HibernateUtils.getCurrentSession().getTransaction().commit();
addMessage(request,"metaprocess.created",metaProcess.getName());
return mapping.findForward("process.submited");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
}
 
public ActionForward delete(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isSuperuser() && UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole(Globals.ROLE_PROCESSES_ADMIN))
return mapping.findForward("error401");
try
{
 
NewMetaProcessForm f = (NewMetaProcessForm)form;
 
String personToRemove = f.getPersonToRemove();
 
 
if(personToRemove.trim().length() > 0)
{
if(f.getMetaProcess().getPossiblePersons() == null)
f.getMetaProcess().setPossiblePersons("");
List<String> persons = StringsUtils.getStringsFromSerial(f.getMetaProcess().getPossiblePersons(), ";");
if(persons == null)
persons = new ArrayList<String>();
if(persons.contains(personToRemove))
{
persons.remove(personToRemove);
f.getMetaProcess().setPossiblePersons("");
for(String p: persons)
f.getMetaProcess().setPossiblePersons(f.getMetaProcess().getPossiblePersons() + p + ";");
}
 
}
 
String roleToRemove = f.getRoleToRemove();
 
if(roleToRemove.trim().length() > 0)
{
if(f.getMetaProcess().getPossibleTargets() == null)
f.getMetaProcess().setPossibleTargets("");
List<String> roles = StringsUtils.getStringsFromSerial(f.getMetaProcess().getPossibleTargets(), ";");
if(roles == null)
roles = new ArrayList<String>();
if(roles.contains(roleToRemove))
{
roles.remove(roleToRemove);
f.getMetaProcess().setPossibleTargets("");
for(String r: roles)
f.getMetaProcess().setPossibleTargets(f.getMetaProcess().getPossibleTargets() + r + ";");
}
}
 
f.setRoleToRemove("");
f.setRoleToAdd("");
f.setPersonToRemove("");
f.setPersonToAdd("");
return mapping.getInputForward();
 
}
//catch (FilterChainFailedException e)
//{
// return mapping.findForward("error401");
//}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
}
 
 
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/processes/ProcessesController.java
55,7 → 55,6
{
try
{
System.out.println("AQUI");
NewProcessForm f = (NewProcessForm)form;
System.out.println(f.getNotes());
System.out.println(f.getMetaProcessId());
/impl/src/web/imgs/process/down_arrow.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/src/web/user/serviceZone/serviceZone.jsp
75,11 → 75,28
<ul>
 
 
<baco:isModuleOn module="processes">
 
<ul>
<li><bean:message key="processes"/>
 
<ul>
<li><a href="<%=request.getContextPath()%>/user/listProcesses.do?target=participation"><bean:message key="processes.list"/></a></li>
<baco:hasRole role="all,processes.admin">
<li><a href="<%=request.getContextPath()%>/user/startNewMetaProcess.do"><bean:message key="processes.new.meta.process"/></a></li>
</baco:hasRole>
<li><a href="<%=request.getContextPath()%>/user/listMetaProcesses.do"><bean:message key="processes.new.process"/></a></li>
</ul>
</li>
</ul>
</baco:isModuleOn>
 
 
<!-- Filipe Matos -->
<baco:isModuleOn module="assessments">
<baco:hasRole role="teacher">
<baco:hasRole role="assessementsTester">
 
<ul>
<li>
<bean:message key="assessments"/>
<ul>
95,6 → 112,7
</li>
</ul>
</li>
</ul>
</baco:hasRole>
</baco:hasRole>
<baco:hasRole role="student">
/impl/src/web/user/processes/topnavNewMetaProcess.jsp
New file
0,0 → 1,10
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back");
topNav.addNavPlace(null, "processes.new.meta.process");
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/user/processes/createMetaProcess.jsp
1,16 → 1,314
<%--
Created by IntelliJ IDEA.
User: jorgemachado
Date: 13/01/14
Time: 09:55
To change this template use File | Settings | File Templates.
--%>
<%@ page import="jomm.dao.utils.HibernateUtils" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.domain.*" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.services.data.RepositoryService" %>
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %>
<%@ page import="java.util.List" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<%
if(!UserSession.getUser().hasRole(Globals.ROLE_PROCESSES_ADMIN) && !UserSession.getUser().isSuperuser())
{
%>
<jsp:include page="/errors/401.jsp"/>
<%
return;
}
%>
<script language="javascript">
 
</body>
</html>
 
function addUser(username)
{
$('#formulario').find('input[name="personToAdd"]').val(username);
$('#formulario').find('input[name="dispatch"]').val('update');
$("#personsResults").hide();
$("#formulario").submit();
 
}
function searchPersons(form,targetElement,q,searchInput)
{
$.post( "<%=request.getContextPath()%>/user/processes/searchPerson.jsp?q="+q, function( data ) {
$( "#" + targetElement ).html( data );
//$( "#" + targetElement).show();
$( "#" + targetElement).css({ left: $("#"+searchInput).position().left, top: $("#"+searchInput).position().top + 30}).show();
 
});
 
}
 
</script>
<html:errors/>
<jomm:messages/>
 
<h2>Criando novo metaprocesso</h2>
 
 
 
<html:form styleId="formulario" action="/user/metaProcessesController" enctype="multipart/form-data">
<jsp:useBean id="NewMetaProcessForm" type="pt.estgp.estgweb.web.form.processes.NewMetaProcessForm" scope="request"/>
<%
if(request.getParameter("id")!=null)
{
long id = Long.parseLong(request.getParameter("id"));
HibernateUtils.getCurrentSession().beginTransaction();
MetaProcess metaProcess = DaoFactory.getMetaProcessDaoImpl().get(id);
System.out.println("1");
NewMetaProcessForm.setMetaProcess((MetaProcessImpl) metaProcess);
System.out.println("2");
new RepositoryService().load(metaProcess.getRepositoryStream(), UserSessionProxy.loadUserSessionFromRequest(request)).getName();
System.out.println("3");
NewMetaProcessForm.setFileName(new RepositoryService().load(metaProcess.getRepositoryStream(), UserSessionProxy.loadUserSessionFromRequest(request)).getName());
System.out.println("4");
HibernateUtils.getCurrentSession().getTransaction().commit();
}
%>
<input type="hidden" name="dispatch" value="update"/>
<html:hidden property="metaProcess.id"/>
<html:hidden property="metaProcess.possiblePersons"/>
<html:hidden property="metaProcess.possibleTargets"/>
<html:hidden property="personToAdd"/>
<html:hidden property="personToRemove"/>
<html:hidden property="roleToRemove"/>
<html:hidden property="metaProcess.repositoryStream"/>
<html:hidden property="fileName"/>
 
 
<table border="0" style="width: 100%" >
<tr>
<th align="right"></th>
<th colspan="2" align="center" >
<div style="padding: 10px; background-color: lightgrey;border: 1px solid darkgray">
<i><u>Ficheiro Modelo</u></i>
<html:file property="file"/> <input value="Carregar ficheiro" type="button" onclick="this.form.dispatch.value='update';this.form.submit()"/>
<logic:notEmpty name="NewMetaProcessForm" property="metaProcess.repositoryStream">
<a target="_blank" href="<%=request.getContextPath()%>/repositoryStream/<bean:write name="NewMetaProcessForm" property="metaProcess.repositoryStream"/>"><bean:write name="NewMetaProcessForm" property="fileName"/></a>
<br/>
<a target="_blank" href="<%=request.getContextPath()%>/admin/data.jsp?id=<bean:write name="NewMetaProcessForm" property="metaProcess.repositoryStream"/>">Ver todas as versões</a>
</logic:notEmpty>
</div>
</th>
<th align="center"></th>
</tr>
<tr>
<td align="right" style="font-size: 7pt"></td>
<td colspan="2" valign="middle" align="center" style="vertical-align: middle; font-size: 7pt;padding: 10px;">
<i>&lt;&lt;input&gt;&gt;</i> <img src="<%=request.getContextPath()%>/imgs/process/down_arrow.png"/>
</td>
<td align="center"></td>
</tr>
<tr>
<th align="center"><img src="<%=request.getContextPath()%>/imgs/process/actor.gif"/> <br/>Tipo de Requerente</th>
<th colspan="2" align="center">Processo</th>
<th align="center"><img src="<%=request.getContextPath()%>/imgs/process/actor.gif"/> <br/>Atendido por</th>
 
</tr>
<tr>
<td>
<html:select property="metaProcess.srcRole">
<%
List<String> roles = Globals.USER_ROLES;
request.setAttribute("roles",roles);
%>
<logic:iterate id="role" name="roles">
<html:option value="${role}"><bean:message key="user.role.${role}"/></html:option>
</logic:iterate>
</html:select>
 
</td>
<td style="width: 100%" colspan="2" style="padding-left: 10px;padding-right: 10px">
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0">
<tr>
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcess.gif"/></td>
<td class="processActivityName" style="width: 100%"><html:text style="width: 100%" property="metaProcess.name"/></td>
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcess.gif"/></td>
</tr>
</table>
</td>
<td >
<html:select property="metaProcess.targetRole">
<logic:iterate id="role" name="roles">
<html:option value="${role}"><bean:message key="user.role.${role}"/></html:option>
</logic:iterate>
</html:select>
 
</td>
</tr>
<tr>
<td colspan="4" style="height: 10px; border-right: 3px dotted green; border-bottom: 3px dotted green;">
 
</td>
</tr>
<tr>
<td colspan="4" style="height: 10px; border-left: 3px dotted green; ">
 
</td>
</tr>
<tr>
<td colspan="4">
 
<table style="width: 100%" class="processActivity" cellpadding="0" cellspacing="0">
<tr>
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcess.gif"/></td>
<td class="processActivityName" style="width: 100%;text-align: center"><i>Tratamento</i></td>
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcess.gif"/></td>
</tr>
</table>
 
</td>
</tr>
<tr>
<th colspan="4" style="text-align: center">
<img src="<%=request.getContextPath()%>/imgs/process/actor.gif"/>
<img src="<%=request.getContextPath()%>/imgs/process/actor.gif"/>
<img src="<%=request.getContextPath()%>/imgs/process/actor.gif"/>
</th>
</tr>
 
<tr>
<td colspan="4" style="height: 30px; ">
<table cellpadding="0" cellspacing="0" style="width: 100%;border:0;">
<tr>
<th style="width: 50%; text-align: center;border-bottom: 2px solid darkgray; border-right: 2px solid darkgray;">
Pessoas especificas permitidas
</th>
<th style="border-bottom: 2px solid darkgray;width: 50%; text-align: center">
Papeis institucionais permitidos
</th>
</tr>
 
<tr>
<td valign="top" style="background-color:#E4E4E4 ;width: 50%; text-align: left;border-bottom: 2px solid darkgray; border-right: 2px solid darkgray;">
<input style="width:200px" id="queryTd" type="text" name="q"/> <input type="image" src="<%=request.getContextPath()%>/imgs/lupa.gif" onclick="searchPersons(this.form,'personsResults',this.form.q.value,'queryTd');return false;"/>
</td>
<td style="background-color:#E4E4E4 ; border-bottom: 2px solid darkgray;width: 50%; text-align: left">
<html:select property="roleToAdd">
<option value="">Nenhum</option>
<logic:iterate id="role" name="roles">
<html:option value="${role}"><bean:message key="user.role.${role}"/></html:option>
</logic:iterate>
</html:select>
<input type="button" onclick="set(form,'update');form.submit()" value="Adicionar"/>
</td>
</tr>
<tr>
<td valign="top" style="width: 50%; text-align: center; border-right: 2px solid darkgray; border-bottom: 2px solid darkgray;">
<logic:present name="NewMetaProcessForm" property="addedPersonsList">
<table class="dataTable" width="100%">
<tr>
<th>Nome</th>
<th>Username</th>
<th>Tipo</th>
<th>Email</th>
</tr>
<%
HibernateUtils.getCurrentSession().beginTransaction();
 
 
%>
<logic:iterate id="person" name="NewMetaProcessForm" property="addedPersonsList" type="String">
<%
 
User u = DaoFactory.getUserDaoImpl().loadByUsername(person);
if(u != null)
{
%>
<tr>
<td>
<%=u.getName()%>
</td>
<td>
<%=u.getUsername()%>
</td>
<td>
<%
if(u instanceof Teacher) {
%><%="Professor"%><%
}
else if(u instanceof Student) {
%><%="Aluno"%><%
}
else {
%><%="Utilizador"%><%
}
%>
</td>
<td>
<%=u.getEmail()%>
</td>
<td><a href="javascript:NewMetaProcessForm.dispatch.value='delete';NewMetaProcessForm.personToRemove.value='${person}';NewMetaProcessForm.submit();"><img border="0" src="<%=request.getContextPath()%>/imgs/delete.gif"/></a></td>
</tr>
<%}%>
</logic:iterate>
</table>
<%
HibernateUtils.getCurrentSession().getTransaction().commit();
%>
</logic:present>
</td>
<td style="border-bottom: 2px solid darkgray;width: 50%; text-align: center" valign="top">
<logic:present name="NewMetaProcessForm" property="addedRolesList">
<table class="dataTable" width="100%">
<tr>
<th>Papel</th>
</tr>
<logic:iterate id="role" name="NewMetaProcessForm" property="addedRolesList" type="String">
<%
if(role != null && role.length() > 0)
{
%>
<tr>
<td>
<bean:message key="user.role.${role}"/>
</td>
<td><a href="javascript:NewMetaProcessForm.dispatch.value='delete';NewMetaProcessForm.roleToRemove.value='${role}';NewMetaProcessForm.submit();"><img border="0" src="<%=request.getContextPath()%>/imgs/delete.gif"/></a></td>
</tr>
<%
}
%>
</logic:iterate>
</table>
</logic:present>
</td>
</tr>
</table>
</td>
</tr>
 
 
 
</table>
 
<table class="dataTable">
<tr>
<th>Categoria</th>
<td><html:text property="metaProcess.category"/></td>
</tr>
<tr>
<th>SubCategoria</th>
<td><html:text property="metaProcess.subCategory"/></td>
</tr>
<tr>
<th>Descrição</th>
<td><html:textarea style="width: 400px;height: 200px" property="metaProcess.description"/></td>
</tr>
</table>
 
<input type="button" value="<bean:message key="confirm"/>" onclick="set(form,'create');form.submit();">
 
<div id="personsResults" style="position: absolute;display: none;background: lightcyan;border: 1px solid gray">
</div>
 
 
 
 
 
</html:form>
 
 
/impl/src/web/user/processes/listMetaProcesses.jsp
4,6 → 4,8
<%@ page import="pt.estgp.estgweb.domain.UserSession" %>
<%@ page import="pt.estgp.estgweb.domain.MetaProcessImpl" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.domain.MetaProcess" %>
<%@ page import="org.hibernate.Query" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
18,16 → 20,58
<body>
<%
HibernateUtils.getCurrentSession().beginTransaction();
List<MetaProcessImpl> metaProcesses = DaoFactory.getMetaProcessDaoImpl().findRoleMetaProcesses(UserSession.getUser().getRolesList());
HibernateUtils.getCurrentSession().getTransaction().commit();
request.setAttribute("metaProcesses",metaProcesses);
 
 
if(UserSession.getUser().hasRole("processes.admin") || UserSession.getUser().isSuperuser())
request.setAttribute("metaProcesses", DaoFactory.getMetaProcessDaoImpl().findAll());
else
request.setAttribute("metaProcesses", DaoFactory.getMetaProcessDaoImpl().findRoleMetaProcesses(UserSession.getUser().getRolesList()));
 
List<String> categories = HibernateUtils.getCurrentSession().createQuery("select distinct m.category from m in class " + MetaProcess.class.getName()).list();
 
 
 
for(String cat: categories)
{
request.setAttribute("cat",cat);
Query query = HibernateUtils.getCurrentSession().createQuery("select distinct m.subCategory from m in class " + MetaProcess.class.getName() + " where m.category = ?");
query.setString(0,cat);
List<String> sub = query.list();
%>
<ul>
<logic:iterate id="meta" name="metaProcesses" type="pt.estgp.estgweb.domain.MetaProcessImpl">
<li><a href="<%=request.getContextPath()%>/user/startNewProcess.do?metaProcessId=${meta.id}">${meta.name}</a> - ${meta.description}</li>
</logic:iterate>
</ul>
<div class="seccao">
<h1><%=cat%></h1>
 
<%
for(String s: sub)
{
request.setAttribute("s",s);
%>
<div class="seccao">
<h2><%=s%></h2>
 
</body>
</html>
<logic:iterate id="meta" name="metaProcesses" type="pt.estgp.estgweb.domain.MetaProcessImpl">
<logic:equal value="${cat}" name="meta" property="category">
<logic:equal value="${s}" name="meta" property="subCategory">
<div class="seccao">
<h3>${meta.name}</h3>
<p>${meta.description}</p>
<p><a href="<%=request.getContextPath()%>/user/startNewProcess.do?metaProcessId=${meta.id}">Iniciar ${meta.name}</a></p>
<baco:hasRole role="all,processes.admin">
<p><a href="<%=request.getContextPath()%>/user/startNewMetaProcess.do?id=${meta.id}">Editar MetaProcesso</a></p>
</baco:hasRole>
</div>
</logic:equal>
</logic:equal>
</logic:iterate>
</div>
<%
}
%>
</div>
<%
}
%>
 
<%
HibernateUtils.getCurrentSession().getTransaction().commit();
%>
/impl/src/web/user/processes/searchPerson.jsp
New file
0,0 → 1,63
<%@ page import="jomm.dao.utils.HibernateUtils" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.domain.User" %>
<%@ page import="pt.estgp.estgweb.domain.Teacher" %>
<%@ page import="pt.estgp.estgweb.domain.Student" %>
<%--
Created by IntelliJ IDEA.
User: jorgemachado
Date: 16/01/14
Time: 18:57
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<table class="dataTable">
<tr>
<th>Nome</th>
<th>Username</th>
<th>Tipo</th>
<th>Email</th>
</tr>
<%
 
HibernateUtils.getCurrentSession().beginTransaction();
 
List<User> users = DaoFactory.getUserDaoImpl().findUsers(request.getParameter("q"));
 
for(User u:users)
{
 
%>
<tr>
<td>
<a href="javascript:addUser('<%=u.getUsername()%>');"><%=u.getName()%></a>
</td>
<td>
<%=u.getUsername()%>
</td>
<td>
<%
if(u instanceof Teacher) {
%><%="Professor"%><%
}
else if(u instanceof Student) {
%><%="Aluno"%><%
}
else {
%><%="Utilizador"%><%
}
%>
</td>
<td>
<%=u.getEmail()%>
</td>
</tr>
<%
 
}
 
HibernateUtils.getCurrentSession().getTransaction().commit();
%>
</table>