Author: echatellier Date: 2014-06-09 22:28:16 +0200 (Mon, 09 Jun 2014) New Revision: 167 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/167 Log: COnfiguration des colonnes ?\195?\160 afficher et des actions possibles 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-09 20:00:27 UTC (rev 166) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp 2014-06-09 20:28:16 UTC (rev 167) @@ -576,9 +576,23 @@ </div> <div id="collapse5" class="panel-collapse collapse"> <div class="panel-body"> - <label class="checkbox" ng-repeat="(folderAction,label) in folderActions"> + <label ng-if="selectedMailFolder.$parent"> + <input type="radio" ng-model="selectedMailFolder.useCurrentLevelFolderActions" + ng-value="false" ng-change="initFolderActions()" /> + Hériter des actions contextuelles déclarées sur les dossiers parent : + </label> + <label class="checkbox" ng-repeat="(folderAction,label) in folderActions" ng-if="selectedMailFolder.$parent && !selectedMailFolder.useCurrentLevelFolderActions"> + <input type="checkbox" ng-checked="parentScopeValues.folderActions.indexOf(folderAction) != -1" + disabled> {{label}} + </label> + <label> + <input type="radio" ng-model="selectedMailFolder.useCurrentLevelFolderActions" ng-value="true" + ng-change="initFolderActions()" ng-if="selectedMailFolder.$parent" /> + Définir les actions contextuelles possibles pour ce dossier : + </label> + <label class="checkbox" ng-repeat="(folderAction,label) in folderActions" ng-if="selectedMailFolder.useCurrentLevelFolderActions || !selectedMailFolder.$parent"> <input type="checkbox" ng-checked="selectedMailFolder.folderActions.indexOf(folderAction) != -1" - ng-click="changeFolderAction(folderAction)"> {{label}} + ng-click="changeFolderAction(folderAction)"> {{label}} </label> </div> </div> @@ -596,26 +610,50 @@ <div id="collapse6" class="panel-collapse collapse"> <div class="panel-body"> - <label> - <input type="checkbox" ng-model="selectedMailFolder.useCurrentLevelTableColumns" ng-value="true" /> Définir un ordre - différent du dossier parent à ce niveau.</label> - <hr /> + <label ng-if="selectedMailFolder.$parent"> + <input type="radio" ng-model="selectedMailFolder.useCurrentLevelTableColumns" + ng-value="false" ng-change="initFolderColumns()" /> + Hériter des colonnes déclarées sur les dossiers parent : + </label> - <div class="control-group"> - <label class="control-label" for="tableColumns">Champs à afficher dans le tableau (l'ordre peut être changé en faisant un glisser/déposer sur les champs)</label> - + <div class="control-group" ng-show="selectedMailFolder.$parent && !selectedMailFolder.useCurrentLevelTableColumns"> <div class="controls"> + <input type="hidden" ui-select2-sortable ng-model="parentFolderTableColumns" + simple-query="getObjectsData" multiple sortable disabled> + </div> + </div> + + <div ng-if="selectedMailFolder.$parent && !selectedMailFolder.useCurrentLevelTableColumns"> + <table id='table-snapshot' class="table table-bordered"> + <caption>Aperçu</caption> + <thead> + <tr> + <th ng-repeat="mailField in parentFolderTableColumns">{{mailFields[mailField.id]}}</th> + </tr> + </thead> + </table> + </div> + + <label> + <input type="radio" ng-model="selectedMailFolder.useCurrentLevelTableColumns" ng-value="true" + ng-change="initFolderColumns()" ng-if="selectedMailFolder.$parent" /> + Définir les colonnes à afficher pour ce dossier : + </label> + + <div class="control-group" ng-show="!selectedMailFolder.$parent || selectedMailFolder.useCurrentLevelTableColumns"> + <div class="controls"> <input type="hidden" ui-select2-sortable ng-model="folderTableColumns" - simple-query="getObjectsData" multiple sortable ng-disabled="!selectedMailFolder.useCurrentLevelTableColumns"> + simple-query="getObjectsData" multiple sortable> + <p class="help-block">(l'ordre peut être changé en faisant un glisser/déposer sur les champs)</p> </div> </div> - <div> + <div ng-if="!selectedMailFolder.$parent || selectedMailFolder.useCurrentLevelTableColumns"> <table id='table-snapshot' class="table table-bordered"> <caption>Aperçu</caption> <thead> <tr> - <th ng-repeat="etatAttenteField in folderTableColumns">{{mailFields[etatAttenteField.id]}}</th> + <th ng-repeat="mailField in folderTableColumns">{{mailFields[mailField.id]}}</th> </tr> </thead> </table> Modified: trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-06-09 20:00:27 UTC (rev 166) +++ trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-06-09 20:28:16 UTC (rev 167) @@ -249,6 +249,8 @@ $scope.newReplyDomain; // {Array} Colonnes selectionnées pour le dossier courant $scope.folderTableColumns; + // {Array} Colonnes selectionnées pour les dossiers parents + $scope.parentFolderTableColumns; // {Object} Global parent wide configuration and values $scope.parentScopeValues; @@ -374,6 +376,17 @@ moveRightGroups: [] }; updateParentScopeValues($scope.selectedMailFolder.$parent); + + // init select 2 data for parent + if ($scope.parentScopeValues.folderTableColumns) { + $scope.parentFolderTableColumns = []; + angular.forEach($scope.parentScopeValues.folderTableColumns, function(folderTableColumn) { + $scope.parentFolderTableColumns.push({ + id: folderTableColumn, + label: $scope.mailFields[folderTableColumn] + }); + }); + } } }); @@ -567,6 +580,17 @@ } }; + // initialise la liste des actions possibles avec celle des niveaux supérieurs + $scope.initFolderActions = function() { + if ($scope.selectedMailFolder.useCurrentLevelFolderActions) { + if ($scope.parentScopeValues.folderActions) { + $scope.selectedMailFolder.folderActions = $scope.parentScopeValues.folderActions.slice(); // soft copy + } + } else { + delete $scope.selectedMailFolder.folderActions; + } + }; + // selection/deselection d'une action possible du menu contextuel pour ce dossier $scope.changeFolderAction = function(folderAction) { var index = $scope.selectedMailFolder.folderActions.indexOf(folderAction); @@ -576,7 +600,27 @@ $scope.selectedMailFolder.folderActions.push(folderAction); } }; - + + // initialise la liste des actions possibles avec celle des niveaux supérieurs + $scope.initFolderColumns = function() { + if ($scope.selectedMailFolder.useCurrentLevelTableColumns) { + if ($scope.parentScopeValues.folderActions) { + $scope.selectedMailFolder.folderTableColumns = $scope.parentScopeValues.folderTableColumns.slice(); // soft copy + + // init select2 data + $scope.folderTableColumns = []; + angular.forEach($scope.selectedMailFolder.folderTableColumns, function(folderTableColumn) { + $scope.folderTableColumns.push({ + id: folderTableColumn, + label: $scope.mailFields[folderTableColumn] + }); + }); + } + } else { + delete $scope.selectedMailFolder.folderTableColumns; + } + }; + // add user write right $scope.addWriteRightUser = function() { $scope.selectedMailFolder.writeRightUsers.push($scope.newWriteRightUser);