Rev 1616 | Rev 1618 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@ tag import="jomm.dao.impl.AbstractDao" %>
<%@ tag import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ tag import="jomm.utils.BytesUtils" %>
<%@tag description="Tag to Call Ajax Request" pageEncoding="UTF-8"%>
<%@ 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" %>
<%@taglib prefix="bacoTags" tagdir="/WEB-INF/tags" %>
<%@attribute name="role" type="java.lang.String" required="true" %>
<%@attribute name="title" type="java.lang.String" required="false" %>
<%@attribute name="transactional" type="java.lang.Boolean" required="true" %>
<%@attribute name="printOnlyList" type="java.lang.Boolean" required="false" %>
<%@attribute name="ignoreUserId" type="java.lang.Long" required="false" %>
<%@attribute name="useWellTitle" type="java.lang.Boolean" required="false" %>
<%
String idTemp = BytesUtils.generateHexKey() + role.replaceAll(" ", "_").replaceAll("\\.","_");
%>
<!-- Usar o Angular para Printar os Roles -->
<div class="clearfix">
<div class="col-md-12" id="printRoleModule<%=idTemp%>" ng-app="printRoleModule<%=idTemp%>" ng-controller="printRoleModuleController<%=idTemp%>">
<%
if(printOnlyList == null || printOnlyList == false)
{
%>
<logic:notEmpty name="title">
<h3 <%if(useWellTitle != null && useWellTitle){%>class="well well-sm"<%}%>>${title}</h3>
</logic:notEmpty>
<logic:empty name="title">
<h3 <%if(useWellTitle != null && useWellTitle){%>class="well well-sm"<%}%>><bean:message key="user.role.${role}"/></h3>
</logic:empty>
<%
}
%>
<div class="col-md-6">
<ul>
<li ng-repeat="u in roleUsers" class="roleUser{{u.id}}">
<baco:isAdmin>
<bacoTags:confirm icon="glyphicon glyphicon-remove" btnClass="btn btn-danger btn-xs">
<jsp:attribute name="targetFunction">removeUser<%=idTemp%>({{u.id}})</jsp:attribute>
<jsp:attribute name="msg">Tem a certeza que deseja remover o utilizador {{u.name}} do grupo <bean:message key="user.role.${role}"/></jsp:attribute>
</bacoTags:confirm>
</baco:isAdmin>
{{u.username}}
<label ng-if="u.name">
- {{u.name}}
</label>
<label ng-if="u.sigesCode">
({{u.sigesCode}})
</label>
<%--</label>--%>
</li>
</ul>
</div>
<baco:isAdmin>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
Adicionar elemento ao grupo <bean:message key="user.role.${role}"/>
</div>
<div class="panel-body">
<div class="web-messages"> </div>
<div class="input-group">
<input type="text" id="queryPersons<%=idTemp%>" class="form-control" placeholder="Pesquisar...">
<span class="input-group-btn">
<button class="btn btn-secondary" type="button" onclick="searchPersons<%=idTemp%>();return false;"><span class="glyphicon glyphicon-search"/></button>
</span>
</div>
<div ng-show="findUser.length > 0" class="clearfix" id="personsResults<%=idTemp%>" style="position: absolute; background-color: gray;border: 1px solid gray;z-index: 1000; right: 30px;left:30px;">
<div class="clearfix" style="padding:0">
<table class="tablesorter-blue" style="margin:0">
<thead>
<tr>
<th>Nome</th>
<th>Tipo</th>
<th>Código</th>
<th><button ng-click="removeAllUsers()" type="button" class="btn btn-danger btn-xs pull-right clearfix"><span class="glyphicon glyphicon-remove"/></button></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="f in findUser">
<td>{{f.name}}</td>
<td ng-if="f.type == 'student'">
Estudante
</td>
<td ng-if="f.type == 'teacher'">
Professor
</td>
<td ng-if="f.type != 'teacher' && f.type != 'student'">
User
</td>
<td>{{f.sigesCode}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<script>
//DECLARACAO DA APLICACAO LOCAL EM ANGULAR
var printRoleModule<%=idTemp%> = angular.module('printRoleModule<%=idTemp%>', []);
GLOBAL_BacoAngularAppDependencies.push('printRoleModule<%=idTemp%>');
printRoleModule<%=idTemp%>.controller('printRoleModuleController<%=idTemp%>', function($scope) {
//variavel para a pesquisa de users
$scope.findUser = [];
$scope.roleUsers = [];
$scope.removeAllUsers = function()
{
$scope.findUser = [];
}
});
</script>
<script language="javascript">
$(document).ready(function()
{
loadUserRoles<%=idTemp%>();
});
function removeUser<%=idTemp%>(id)
{
widgetCallWithActionParameters(
'<%=request.getContextPath()%>/user/json/model.do',
'removeRole2User',
{
q :
"{ userId : " + id + ", role : '${role}' }"
}
,
$("#printRoleModule<%=idTemp%>"),
function(response)
{
angular.element($("#printRoleModule<%=idTemp%>")).scope().roleUsers = response.results;
angular.element($("#printRoleModule<%=idTemp%>")).scope().$apply();
},
function(response)
{
alert("Accao Falhou mas as resposta foi esta: " + JSON.stringify(response));
});
}
function loadUserRoles<%=idTemp%>()
{
widgetCallWithActionParameters(
'<%=request.getContextPath()%>/user/json/model.do',
'findUserRoles',
{
q : "${role}"
}
,
$("#printRoleModule<%=idTemp%>"),
function(response)
{
angular.element($("#printRoleModule<%=idTemp%>")).scope().roleUsers = response.results;
angular.element($("#printRoleModule<%=idTemp%>")).scope().$apply();
},
function(response)
{
alert("Accao Falhou mas as resposta foi esta: " + JSON.stringify(response));
});
}
function searchPersons<%=idTemp%>()
{
widgetCallWithActionParameters(
'<%=request.getContextPath()%>/user/json/model.do',
'findUser',
{
q : $('#queryPersons<%=idTemp%>').val()
}
,
$("#printRoleModule<%=idTemp%>"),
function(response)
{
angular.element($("#printRoleModule<%=idTemp%>")).scope().findUser = response.results;
angular.element($("#printRoleModule<%=idTemp%>")).scope().$apply();
setTimeout(function() { evaluateTableSortersInside("#personsResults<%=idTemp%>"); }, 500);
//evaluateTableSortersInside("#personsResults");
},
function(response)
{
alert("Accao Falhou mas as resposta foi esta: " + JSON.stringify(response));
});
}
</script>
</div>
</baco:isAdmin>
</div>
</div>
Generated by GNU Enscript 1.6.5.2.