Author: echatellier Date: 2014-06-06 12:05:05 +0200 (Fri, 06 Jun 2014) New Revision: 144 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/144 Log: Affichage des utilisateurs/groupes ayant d?\195?\169j?\195?\160 les droits sur les dossiers parents Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp 2014-06-06 09:31:40 UTC (rev 143) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp 2014-06-06 10:05:05 UTC (rev 144) @@ -491,7 +491,7 @@ </div> <!-- Liste des emails expéditeur --> - <div class="panel panel-default"> + <div class="panel panel-default" ng-controller="ConfigurationRigthsController"> <div class="panel-heading"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#collapse4"> @@ -511,6 +511,34 @@ </tr> </thead> <tbody> + <tr ng-repeat="user in parentsWriteRightUsers"> + <td> + <span class="glyphicon glyphicon-arrow-up"></span> <em>{{user.firstName}} {{user.lastName}}</em> + </td> + <td> + <label><input type="checkbox"> Lecture</label> + <label><input type="checkbox"> Écriture</label> + <label><input type="checkbox"> Déplacement</label> + </td> + <td> + + </td> + </tr> + <tr ng-repeat="group in parentsWriteRightGroups"> + <td> + <span class="glyphicon glyphicon-arrow-up"></span> <em>{{group.fullPath}}</em> + </td> + <td> + <label><input type="checkbox"> Lecture</label> + <label><input type="checkbox"> Écriture</label> + <label><input type="checkbox"> Déplacement</label> + </td> + <td> + + </td> + </tr> + </tbody> + <tbody> <tr ng-repeat="user in selectedMailFolder.writeRightUsers"> <td> <span class="glyphicon glyphicon-user"></span> {{user.firstName}} {{user.lastName}} Modified: trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-06-06 09:31:40 UTC (rev 143) +++ trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-06-06 10:05:05 UTC (rev 144) @@ -48,7 +48,7 @@ // method privée recursive pour retourner l'ensemble des dossiers en les modifiant pour ajouter // des metadata (full path from root, and root node instance) - var recursiveAddMailFolder = function(result, mailFolders, rootFolder, prefix) { + var recursiveAddMailFolder = function(result, mailFolders, rootFolder, prefix, parent) { var cumulativeCount = 0; if (mailFolders) { angular.forEach(mailFolders, function(mailFolder) { @@ -59,15 +59,16 @@ // ha la la, modify input object again :( // use $ from this, even not recommended because angular exlude those fields when jsonify mailFolder.$rootFolder = rootFolder; - - // + // encore pour le parent + mailFolder.$parent = parent; + var folderCount = 0; if ($scope.mailFoldersUsage.hasOwnProperty(mailFolder.topiaId)) { folderCount += $scope.mailFoldersUsage[mailFolder.topiaId]; } result.push(mailFolder); - folderCount += recursiveAddMailFolder(result, mailFolder.children, rootFolder, mailFolder.$fullPath); + folderCount += recursiveAddMailFolder(result, mailFolder.children, rootFolder, mailFolder.$fullPath, mailFolder); // et on modifie encore (tant qu'on a commencé !!!) mailFolder.$cumulativeCount = folderCount; @@ -83,7 +84,7 @@ $scope.flatMailFolders = {}; angular.forEach($scope.mailFolders, function(mailFolder) { $scope.flatMailFolders[mailFolder.topiaId] = []; - var cumulativeCount = recursiveAddMailFolder($scope.flatMailFolders[mailFolder.topiaId], mailFolder.children, mailFolder, mailFolder.name); + var cumulativeCount = recursiveAddMailFolder($scope.flatMailFolders[mailFolder.topiaId], mailFolder.children, mailFolder, mailFolder.name, mailFolder); mailFolder.$cumulativeCount = cumulativeCount; }); }; @@ -226,10 +227,6 @@ */ ConfigurationModule.controller('ConfigurationTreeController', ['$scope', '$window', 'ConfigurationData', function($scope, $window, ConfigurationData) { - // {Array} Users - $scope.users = ConfigurationData.users; - // {Array} Groups - $scope.groups = ConfigurationData.groups; // {Object} selected mail folder $scope.selectedMailFolder; // {String} add new customer responsible form value @@ -306,12 +303,6 @@ if (!$scope.selectedMailFolder.folderTableColumns) { $scope.selectedMailFolder.folderTableColumns = []; } - if (!$scope.selectedMailFolder.writeRightUsers) { - $scope.selectedMailFolder.writeRightUsers = []; - } - if (!$scope.selectedMailFolder.writeRightGroups) { - $scope.selectedMailFolder.writeRightGroups = []; - } if (!$scope.selectedMailFolder.etatAttente) { $scope.selectedMailFolder.etatAttente = []; } @@ -383,6 +374,77 @@ $scope.selectedMailFolder.replyDomains.splice(index, 1); }; + // selection/deselection d'un état d'attente possible pour ce dossier + $scope.changeFolderEtatAttente = function(etatAttente) { + var index = $scope.selectedMailFolder.etatAttente.indexOf(etatAttente); + if (index != -1) { + $scope.selectedMailFolder.etatAttente.splice(index, 1); + } else { + $scope.selectedMailFolder.etatAttente.push(etatAttente); + } + }; + + // selection/deselection d'une action possible du menu contextuel pour ce dossier + $scope.changeFolderAction = function(folderAction) { + var index = $scope.selectedMailFolder.folderActions.indexOf(folderAction); + if (index != -1) { + $scope.selectedMailFolder.folderActions.splice(index, 1); + } else { + $scope.selectedMailFolder.folderActions.push(folderAction); + } + }; +}]); + +/** + * Right accordion tab controller. + */ +ConfigurationModule.controller('ConfigurationRigthsController', ['$scope', '$window', 'ConfigurationData', + function($scope, $window, ConfigurationData) { + // {Array} Users + $scope.users = ConfigurationData.users; + // {Array} Groups + $scope.groups = ConfigurationData.groups; + + // {Array} Parent folders write right users + $scope.parentsWriteRightUsers; + // {Array} Parent folders write rigth groups + $scope.parentsWriteRightGroups; + + // action specific aux droits pour l'editions d'un dossier + $scope.$watch("selectedMailFolder", function(newValue) { + if (newValue) { + if (!$scope.selectedMailFolder.writeRightUsers) { + $scope.selectedMailFolder.writeRightUsers = []; + } + if (!$scope.selectedMailFolder.writeRightGroups) { + $scope.selectedMailFolder.writeRightGroups = []; + } + + // on exclut le dossier courant + updateParentFolderRigths($scope.selectedMailFolder.$parent); + } + }); + + // met à jour les listes des droits des dossiers parents + var updateParentFolderRigths = function(folder) { + $scope.parentsWriteRightUsers = []; + $scope.parentsWriteRightGroups = []; + recParentFolderRigths(folder); + }; + var recParentFolderRigths = function(folder) { + if (folder) { + if (folder.$parent) { + recParentFolderRigths(folder.$parent); + }; + if (folder.writeRightUsers) { + $scope.parentsWriteRightUsers = $scope.parentsWriteRightUsers.concat(folder.writeRightUsers); + } + if (folder.writeRightGroups) { + $scope.parentsWriteRightGroups = $scope.parentsWriteRightGroups.concat(folder.writeRightGroups); + } + } + }; + // add reply address $scope.addWriteRightUser = function() { $scope.selectedMailFolder.writeRightUsers.push($scope.newWriteRightUser); @@ -431,6 +493,7 @@ }; }]); + /** * Mail filter tab controller. */