Subversion Repositories bacoAlunos

Rev

Rev 1731 | Rev 1779 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="org.json.JSONArray" %>
<%@ page import="pt.estgp.estgweb.domain.ConfigurationSeparator" %>
<%@ page import="pt.estgp.estgweb.domain.ConfigurationSeparatorImpl" %>
<%@ page import="pt.estgp.estgweb.domain.CourseSchool" %>
<%@ page import="pt.estgp.estgweb.domain.CourseSchoolImpl" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.services.pageContent.dto.VfsClient" %>
<%@ page import="java.util.ArrayList" %>
<%@ 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-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 tagdir="/WEB-INF/tags/vfs" prefix="bacoVfsTags" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="bacoTags" %>
<baco:isAdmin>
<%
    AbstractDao.getCurrentSession().beginTransaction();

    ArrayList<CourseSchool> schools = (ArrayList<CourseSchool>) DaoFactory.getCourseSchoolDaoImpl().findAll();
    String jsonArraySchools = CourseSchoolImpl.getJson(schools);

    ArrayList<ConfigurationSeparator> seps = (ArrayList<ConfigurationSeparator>) DaoFactory.getConfigurationSeparatorDaoImpl().findAll();
    String jsonArraySeps = ConfigurationSeparatorImpl.getJson(seps);


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

    
%>

<div class="container-fluid">

<div id="configSepModule"
     ng-app="configSepModule"
     ng-controller="configSepModuleController">


<script>


    //DECLARACAO DA APLICACAO LOCAL EM ANGULAR
    var configSepModule = angular.module('configSepModule', ['ui.tree','checklist-model']);
    GLOBAL_BacoAngularAppDependencies.push('configSepModule');

    configSepModule.controller('configSepModuleController', function($scope,$filter) {
        $scope.schools = ${jsonArraySchools};
        $scope.seps = ${jsonArraySeps};

        $scope.setDirty = function(sep)
        {
            sep.dirty = "true";
        }

        $scope.save = function(separator)
        {
            var d = JSON.stringify(separator);

            widgetCallWithActionParameters(
                    "<%=request.getContextPath()%>/admin/setConfigurationSeparators.do",
                    "updateConfigSeparator",
                    {
                        "separatorJson" : d
                    },
                    ".form-horizontal",
                    function(separatorJson)
                    {
                        separator.dirty = "false";
                        $scope.$apply();
                    }

            );
        }
        $scope.removeSeparator = function(separator,$index)
        {

            var d = JSON.stringify(separator);
            widgetCallWithActionParameters(
                    "<%=request.getContextPath()%>/admin/setConfigurationSeparators.do",
                    "removeConfigSeparator",
                    {
                        "separatorJson" : d
                    },
                    ".form-horizontal",
                    function(separatorJson)
                    {
                        $scope.seps.splice($index,1);
                        $scope.$apply();
                    }

            );
        }
        $scope.newSeparator = function()
        {
            widgetCallWithActionParameters(
                    "<%=request.getContextPath()%>/admin/setConfigurationSeparators.do",
                    "newConfigSeparator",
                    {},
                    ".form-horizontal",
                    function(separatorJson)
                    {
                        separatorJson.dirty = "true";
                        $scope.seps.push(separatorJson);
                        $scope.$apply();
                    }
            );
        }
        $scope.addPath = function(vfsSection,idTokenBack)
        {
            var separator = $filter('filter')($scope.seps, {id: idTokenBack })[0];
            separator.pageSection = vfsSection;

        }

        $scope.showPageSection = function(separator)
        {
            alert(separator.pageSection.path);
        }

        $scope.removePageSection = function(separator)
        {
            delete separator.pageSection;
        }


    });

    /**
    * FUNÇÃO EXTERNA PARA SER CHAMADA PELO WIDJET EM CALLBACK
    * @param vfsSection
    * @param idTokenBack
     */
    function vfsSelected(vfsSection,idTokenBack)
    {
        angular.element($("#configSepModule")).scope().addPath(vfsSection,idTokenBack);
        angular.element($("#configSepModule")).scope().$apply();

    }
</script>



<p><label class="label-info">Informação sobre o Módulo:</label> </p>
<ul>
    <li>Papeis das Escolas são usados para decidir quem vê o separador</li>
    <li>Necessita de confirmação de Funcionários, Alunos e Professores</li>
    <li>Necessita de escolha das escolas afetas</li>
    <li>Necessita de escolha se aparece no DashBoard (PAE) ou eEscola (BACO)</li>
    <li>Necessita de escolha da pasta do Virtual File System a escolher</li>
    <li>O Módulo de escrita de separadores seprators.jsp depende deste sistema</li>

</ul>





<button class="btn btn-default" data-toggle="collapse" data-target=".languageNames">Mostrar Campos Multinliguisticos</button>

<button class="btn btn-success pull-right" ng-click="newSeparator()"><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 style="width: 30%">Nome</th>
            <th>Estado</th>
            <th>Posição</th>
            <th>Pasta VFS</th>
            <th>Escolas</th>
            <th>Visivel</th>
            <th>Módulo</th>
            <th></th>
            <th></th>
        </tr>
        </thead>
        <tbody>
        <tr ng-class="{dirty: d.dirty=='true'}" ng-repeat="d in seps | orderBy:id:false">
            <td>
                <input class="form-control" type="hidden" ng-model="d.id">
                <div class="row">
                    <div class="col-md-8">
                        {{d.id}}
                    </div>
                    <div class="col-md-2">*</div>
                </div>
            </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>
                <select class="chosenOff" 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" ng-model="d.position" ng-change="setDirty(d)">
                    <option ng-value="0" ng-selected="d.position == 0">0</option>
                    <option ng-value="1" ng-selected="d.position == 1">1</option>
                    <option ng-value="2" ng-selected="d.position == 2">2</option>
                    <option ng-value="3" ng-selected="d.position == 3">3</option>
                    <option ng-value="4" ng-selected="d.position == 4">4</option>
                    <option ng-value="5" ng-selected="d.position == 5">5</option>
                </select>
            </td>
            <td>
                <bacoVfsTags:selectVfsPath btnClass="btn btn-default" btnLabel="Selectionar" title="Selectionar Pasta do VFS" callbackTargetFunction="vfsSelected" callbackTargetFunctionTokenParameter="{{d.id}}" />
                <div ng-show="d.pageSection">
                    <br/>
                    <button class="btn btn-default" ng-click="showPageSection(d)">Ver Secção: {{d.pageSection.slug}}</button>
                    <br/>
                    <button class="btn btn-danger" ng-click="removePageSection(d)">Limpar Secção</button>
                </div>

            </td>
            <td>
                <div class="list-group">
                    <div class="list-group-item" style="text-align: left" ng-repeat="school in schools">
                        <input style="zoom: 1.5;" type="checkbox" checklist-model="d.schoolsIds" checklist-value="school.id" ng-change="setDirty(d)"> - {{school.name}}
                    </div>
                </div>
            </td>
            <td>
                <div class="list-group">
                    <div class="list-group-item" style="text-align: left">
                        <input style="zoom: 1.5;" type="checkbox" ng-model="d.showStudents" ng-change="setDirty(d)"> - Estudantes
                    </div>
                    <div class="list-group-item" style="text-align: left">
                        <input style="zoom: 1.5;" type="checkbox" ng-model="d.showTeachers" ng-change="setDirty(d)"> - Docentes
                    </div>
                    <div class="list-group-item" style="text-align: left">
                        <input style="zoom: 1.5;" type="checkbox" ng-model="d.showWorkers" ng-change="setDirty(d)"> - Funcionários
                    </div>
                </div>
            </td>

            <td>
                <div class="list-group">
                    <div class="list-group-item" style="text-align: left">
                        <input style="zoom: 1.5;" type="checkbox" ng-model="d.showInPae" ng-change="setDirty(d)"> - PAE
                    </div>
                    <div class="list-group-item" style="text-align: left">
                        <input style="zoom: 1.5;" type="checkbox" ng-model="d.showInBaco" ng-change="setDirty(d)"> - BACO
                    </div>
                </div>
            </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 separador {{d.name}}" targetFunction="angular.element($('#configSepModule')).scope().removeSeparator({{d}},{{$index}});angular.element($('#configSepModule')).scope().$apply();" btnClass="btn btn-danger btn-xs" icon="glyphicon glyphicon-remove"/>
            </td>



        </tr>
        </tbody>
    </table>
    <p 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</p>

</div>

    <pre>{{seps | json}}</pre>


</div>
</div>
<%
    AbstractDao.getCurrentSession().getTransaction().commit();
%>
</baco:isAdmin>