Subversion Repositories bacoAlunos

Rev

Rev 1618 | 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" %>
<%@attribute name="useModals" 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 printRoleModule" style="padding: 0; margin: 0" 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" style="padding: 2px; margin: 0">
            <ul>
                <li ng-repeat="u in roleUsers" class="roleUser{{u.id}}">
                    <baco:hasRole role="admin,all,servicesRolesManagement,servicesCoursesManagement,services">
                        <%
                            if(useModals != null && !useModals)
                            {
                        %>
                        <button type="button" class="btn btn-danger btn-xs" ng-click="removeUser( u.id )"><span class="glyphicon glyphicon-remove"/></button>
                        <%
                            }
                            else
                            {
                        %>
                        <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:hasRole>

                    {{u.username}}
                    <label ng-if="u.name">
                        - {{u.name}}
                    </label>
                    <label ng-if="u.sigesCode">
                        ({{u.sigesCode}})
                    </label>
                    <%--</label>--%>

                </li>
            </ul>
        </div>
        <baco:hasRole role="admin,all,servicesRolesManagement,servicesCoursesManagement,services">
            <div class="col-md-6" style="padding: 2px; margin: 0">

            <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>
                    <baco:hasNotRole role="admin,all,servicesRolesManagement">
                        <p>Necessita de permissões de administrador ou de Gestão de Papeis</p>
                    </baco:hasNotRole>
                    <div class="input-group">
                        <input type="text" id="queryPersons<%=idTemp%>"  onkeyup="if(event.keyCode == 13){searchPersons<%=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>
                                    <td>
                                        <%
                                        if(useModals != null && !useModals)
                                        {
                                        %>
                                            <button type="button" class="btn btn-success btn-xs" ng-click="addUser( f.id )"><span class="glyphicon glyphicon-plus"/></button>
                                        <%
                                        }
                                        else
                                        {
                                        %>
                                            <bacoTags:confirm icon="glyphicon glyphicon-plus" btnClass="btn btn-success btn-xs">
                                                <jsp:attribute name="targetFunction">addUser<%=idTemp%>({{f.id}});angular.element($('#printRoleModule<%=idTemp%>')).scope().removeAllUsers();angular.element($('#printRoleModule<%=idTemp%>')).scope().$apply();</jsp:attribute>
                                                <jsp:attribute name="msg">Tem a certeza que deseja adicionar o utilizador {{f.name}} ao grupo <bean:message key="user.role.${role}"/></jsp:attribute>
                                            </bacoTags:confirm>
                                        <%
                                        }
                                        %>
                                    </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 = [];
                    }
                    $scope.removeUser = function(id)
                    {
                        if(confirm("Tem a certeza que deseja remover o utilizador?"))
                            removeUser<%=idTemp%>(id);
                    }
                    $scope.addUser = function(id)
                    {
                        if(confirm("Tem a certeza que deseja adicionar o utilizador?"))
                        {
                            addUser<%=idTemp%>(id);
                            $scope.removeAllUsers();
                        }

                    }
                });

            </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 addUser<%=idTemp%>(id)
                {
                    widgetCallWithActionParameters(
                            '<%=request.getContextPath()%>/user/json/model.do',
                            'addRole2User',
                            {
                                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:hasRole>
    </div>
</div>

Generated by GNU Enscript 1.6.5.2.