Subversion Repositories bacoAlunos

Rev

Rev 1863 | 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.utils.Globals" %>
<%@ page import="pt.estgp.estgweb.domain.CourseDepartment" %>
<%@ page import="pt.estgp.estgweb.domain.CourseDepartmentImpl" %>
<%@ page import="pt.estgp.estgweb.domain.CourseSchool" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.web.filters.UserRoleProxy" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.domain.CourseSchoolImpl" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ 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-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="bacoTags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    AbstractDao.getCurrentSession().beginTransaction();

    ArrayList<CourseDepartment> departments = (ArrayList<CourseDepartment>) DaoFactory.getCourseDepartmentDaoImpl().findAll();
    String jsonArrayDepartments = CourseDepartmentImpl.toJson(departments);

    List<CourseSchool> schools = DaoFactory.getCourseSchoolDaoImpl().findAll();
    String jsonArraySchools = CourseSchoolImpl.toJson(schools);


    request.setAttribute("jsonArrayDepartments",jsonArrayDepartments);
    request.setAttribute("departments",departments);

    request.setAttribute("jsonArraySchools",jsonArraySchools);
    request.setAttribute("schools",schools);

    List<String> rolesBoardDepartamento = UserRoleProxy.getUserRolesByPrefix("department.board");
    List<String> rolesDiretorDepartamento = UserRoleProxy.getUserRolesByPrefix("department.diretor");

    request.setAttribute("rolesBoardDepartamento",rolesBoardDepartamento);
    request.setAttribute("rolesDiretorDepartamento",rolesDiretorDepartamento);

%>

<div class="container-fluid">

    <div id="departmentsModule"
         ng-app="departmentsModule"
         ng-controller="departmentsModuleController">

        <script>
            //DECLARACAO DA APLICACAO LOCAL EM ANGULAR
            var departmentsModule = angular.module('departmentsModule', []);
            GLOBAL_BacoAngularAppDependencies.push('departmentsModule');

            departmentsModule.controller('departmentsModuleController', function($scope) {
                $scope.departments = ${jsonArrayDepartments};
                $scope.schools = ${jsonArraySchools};
                $scope.setDirty = function(department)
                {
                    department.dirty = "true";
                }
                $scope.save = function(department)
                {
                    var d = JSON.stringify(department);

                    widgetCallWithActionParameters(
                        "<%=request.getContextPath()%>/admin/adminDepartment.do",
                        "updateCourseDepartment",
                        {
                            "courseDepartmentJson" : d
                        },
                        ".form-horizontal",
                        function(departmentJson)
                        {
                            department.dirty = "false";
                            $scope.$apply();
                        }

                    );
                }

                $scope.createRoles = function(department)
                {
                    var d = JSON.stringify(department);

                    widgetCallWithActionParameters(
                        "<%=request.getContextPath()%>/admin/adminDepartment.do",
                        "createRolesForDeparment",
                        {
                            "courseDepartmentJson" : d
                        },
                        ".form-horizontal",
                        function(departmentJson)
                        {
                            window.location.reload();
                        }

                    );
                }
                $scope.removeDepartment = function(department,$index)
                {

                    var d = JSON.stringify(department);
                    widgetCallWithActionParameters(
                        "<%=request.getContextPath()%>/admin/adminDepartment.do",
                        "removeCourseDepartment",
                        {
                            "courseDepartmentJson" : d
                        },
                        ".form-horizontal",
                        function(departmentJson)
                        {
                            $scope.departments.splice($index,1);
                            $scope.$apply();
                        }

                    );
                }
                $scope.newDepartment = function()
                {

                    widgetCallWithActionParameters(
                        "<%=request.getContextPath()%>/admin/adminDepartment.do",
                        "newCourseDepartment",{},
                        ".form-horizontal",
                        function(departmentJson)
                        {
                            departmentJson.dirty = "true";
                            $scope.departments.push(departmentJson);
                            $scope.$apply();
                        }

                    );
                }

            });
        </script>



        <p><label class="label-info">Papeis dos Departamentos:</label> Os papeis de departamento são escolhidos da lista de papeis do sistema considerando-se todos os papeis com os prefixos:</p>
        <ul>
            <li>department.board: para membros da direcção</li>
            <li>department.diretor: para diretores direcção</li>
        </ul>
        <p>Caso seja necessário um novo papel deverá administrar os papeis institucionais dirija-se <html:link action="/user/configurationUserRoles">Aqui</html:link></p>
        <button class="btn btn-default" data-toggle="collapse" data-target=".languageNames">Mostrar Campos Multinliguisticos</button>

        <button class="btn btn-success pull-right" ng-click="newDepartment()"><span class="glyphicon glyphicon-plus"/></button>
        <div class="form-horizontal">
            <div class="web-messages"></div>
            <table class="tablesorter-blue">
                <thead>
                <tr>
                    <th>Identificador</th>
                    <th>Trocar Para Identificador * </th>
                    <th>Ativo</th>
                    <th>Instituição</th>
                    <th style="width: 30%">Nome</th>
                    <th>Papel para Membro da Direcao</th>
                    <th>Papel para Director</th>
                    <th></th>
                    <th></th>
                    <th></th>
                </tr>
                </thead>
                <tbody>
                <tr ng-class="{dirty: d.dirty=='true'}" ng-repeat="d in departments | orderBy:name:false">
                    <td>
                        <div class="row">
                            <div class="col-md-8">
                                <input readonly="true" class="form-control" type="text" ng-model="d.sigla" ng-keyup="setDirty(d)">
                            </div>
                            <div class="col-md-2">*</div>
                        </div>

                    </td>
                    <td>
                        <div class="row">
                            <div class="col-md-8">
                                <input class="form-control" type="text" ng-model="d.siglaNova" ng-keyup="setDirty(d)">
                            </div>
                            <div class="col-md-2">*</div>
                        </div>
                    </td>
                    <td>
                        <select class="chosenOff form-control" ng-model="d.active" ng-change="setDirty(d)">
                            <option ng-value="true" ng-selected="d.active == true">Ativo</option>
                            <option ng-value="false" ng-selected="d.active == false">Inativo</option>
                        </select>
                    </td>
                    <td>
                        <select class="chosenOff form-control" ng-model="d.courseSchool.id" ng-change="setDirty(d)" ng-options="s.id as s.name for s in schools">
                        </select>
                    </td>
                    <td>
                        <input class="form-control" type="text" ng-model="d.name" ng-keyup="setDirty(d)">
                        <div class="languageNames collapse">
                            EN:<input class="form-control" type="text" ng-model="d.nameEn" ng-keyup="setDirty(d)">
                            ES:<input class="form-control" type="text" ng-model="d.nameEs" ng-keyup="setDirty(d)">
                            FR:<input class="form-control" type="text" ng-model="d.nameFr" ng-keyup="setDirty(d)">
                        </div>
                    </td>

                    <td style="font-size: 0.7em !important">
                        <select class="chosenOff form-control" ng-model="d.boardRole" ng-change="setDirty(d)">
                            <option value="">Escolha</option>
                            <logic:iterate id="role" name="rolesBoardDepartamento">
                                <option value="${role}"><bean:message key="user.role.${role}"/></option>
                            </logic:iterate>
                        </select>
                    </td>
                    <td style="font-size: 0.7em !important">
                        <select class="chosenOff form-control" ng-model="d.directorRole" ng-change="setDirty(d)">
                            <option value="">Escolha</option>
                            <logic:iterate id="role" name="rolesDiretorDepartamento">
                                <option value="${role}"><bean:message key="user.role.${role}"/></option>
                            </logic:iterate>
                        </select>
                    </td>
                    <td>
                        <button type="button" class="btn btn-success btn-xs" ng-click="save(d)">
                            <span class="glyphicon glyphicon-ok"/>
                        </button>
                    </td>
                    <td>
                        <bacoTags:confirm  msg="Tem a certeza que deseja remover o departamento {{d.name}}" targetFunction="angular.element($('#departmentsModule')).scope().removeDepartment({{d}},{{$index}});angular.element($('#departmentsModule')).scope().$apply();" btnClass="btn btn-danger btn-xs" icon="glyphicon glyphicon-remove"/>
                    </td>
                    <td>
                        <button ng-if="!d.directorRole && !d.boardRole" data-toggle="tooltip" data-title="Criar Roles para este departamento" type="button" class="btn btn-success btn-xs" ng-click="createRoles(d)">
                            <span class="glyphicon glyphicon-user"/>
                        </button>
                    </td>



                </tr>
                </tbody>
            </table>
            <h2 class="label label-warning">* - A sigla é o identificador do departamento, altere a sigla apenas se perceber as suas implicações. Existem Classes no sistema que dependem da sigla do departamento, a sigla tem de ser unica</h2>
            <h2 class="label label-warning">* - A sigla apenas pode ser alterada se não houver docentes nem cursos a apontar para o departamento que pretende alterar</h2>
            <%--
            <model:id name="department" property="id"/>
            <model:field name="department" property="name"/>
            <model:field name="department" property="nameEn"/>
            <model:field name="department" property="nameEs"/>
            <model:field name="department" property="nameFr"/>
            <model:remove name="department"/>
        --%>
        </div>

        <!--<pre>
            {{departments | json}}
        </pre>-->
        <%-- DEBUG
        <pre>
            {{departments | json}}
        </pre>
        <pre>
            {{schools | json}}
        </pre>
        --%>
    </div>


</div>

<p>* Atenção o identificador é a base dos papeis, deverá trocar também as chaves dos papeis na administração de papeis institucionais, procurando pelos papeis respectivos e alterando a sua chave para a nova sigla ou criando novos papeis</p>


<%
    AbstractDao.getCurrentSession().getTransaction().commit();
%>

Generated by GNU Enscript 1.6.5.2.