r448 - in trunk: faxtomail-persistence/src/main/xmi faxtomail-service/src/main/resources/db/migration faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin faxtomail-ui-web/src/main/webapp/js
Author: echatellier Date: 2014-07-28 17:14:22 +0200 (Mon, 28 Jul 2014) New Revision: 448 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/448 Log: refs #5542, #5541 : D?\195?\169finition des gammes et des types de documents par dossier Added: trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_448__add_mail_folder_level_configuration.sql Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MiscTest.java trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 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-persistence/src/main/xmi/faxtomail.zargo =================================================================== (Binary files differ) Added: trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_448__add_mail_folder_level_configuration.sql =================================================================== --- trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_448__add_mail_folder_level_configuration.sql (rev 0) +++ trunk/faxtomail-service/src/main/resources/db/migration/V1_0_0_448__add_mail_folder_level_configuration.sql 2014-07-28 15:14:22 UTC (rev 448) @@ -0,0 +1,6 @@ + +-- add mail folder level configuration +alter table mailfolder add column useCurrentLevelDemandType ${booleanType}; +alter table mailfolder add column useCurrentLevelRange ${booleanType}; +update mailfolder set useCurrentLevelDemandType = 'f'; +update mailfolder set useCurrentLevelRange = 'f'; Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MiscTest.java =================================================================== --- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MiscTest.java 2014-07-28 14:22:34 UTC (rev 447) +++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MiscTest.java 2014-07-28 15:14:22 UTC (rev 448) @@ -36,6 +36,7 @@ * * @author Eric Chatellier */ +@Ignore public class MiscTest extends AbstractFaxToMailServiceTest { @Override Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-07-28 14:22:34 UTC (rev 447) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-07-28 15:14:22 UTC (rev 448) @@ -29,8 +29,6 @@ import java.util.List; import java.util.Map; -import com.franciaflex.faxtomail.persistence.entities.MailField; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.convention.annotation.Action; @@ -46,8 +44,10 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; import com.franciaflex.faxtomail.persistence.entities.MailAction; +import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.persistence.entities.MailFilter; import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.Range; import com.franciaflex.faxtomail.services.service.ConfigurationService; import com.franciaflex.faxtomail.services.service.MailFolderService; import com.franciaflex.faxtomail.services.service.ReferentielService; @@ -82,6 +82,8 @@ protected List<DemandType> demandTypes; + protected List<Range> ranges; + protected List<MailFolder> mailFolders; protected Map<String, Long> mailFoldersUsage; @@ -108,6 +110,7 @@ etatAttentes = referentielService.getAllEtatAttente(); etatAttentesUsage = referentielService.getEtatAttentesUsage(); demandTypes = referentielService.getAllDemandType(); + ranges = referentielService.getAllRange(); mailFolders = mailFolderService.getRootMailFolders(); mailFoldersUsage = mailFolderService.getMailFoldersUsage(); emailAccounts = configurationService.getEmailAccountsWithoutPasswords(); @@ -170,6 +173,10 @@ this.demandTypes = getGson().fromJson(json, type); } + public List<Range> getRanges() { + return ranges; + } + public List<MailFolder> getMailFolders() { return mailFolders; } 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-07-28 14:22:34 UTC (rev 447) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp 2014-07-28 15:14:22 UTC (rev 448) @@ -44,6 +44,7 @@ 'etatAttentes': <s:property value="toJson(etatAttentes)" escapeHtml="false"/>, 'etatAttentesUsage': <s:property value="toJson(etatAttentesUsage)" escapeHtml="false"/>, 'demandTypes': <s:property value="toJson(demandTypes)" escapeHtml="false"/>, + 'ranges': <s:property value="toJson(ranges)" escapeHtml="false"/>, 'mailFolders': <s:property value="toJson(mailFolders)" escapeHtml="false"/>, 'mailFoldersUsage': <s:property value="toJson(mailFoldersUsage)" escapeHtml="false"/>, 'searchDisplayColumns': <s:property value="toJson(configuration.searchDisplayColumns)" escapeHtml="false"/>, @@ -268,7 +269,7 @@ </a> </h4> </div> - <div id="collapse0" class="panel-collapse collapse in" ng-form="generalForm"> + <div id="collapse0" class="panel-collapse collapse" ng-form="generalForm"> <div class="panel-body"> <div class="form-group"> <label class="control-label">Autoriser le déplacement de demandes vers ce dossier ?</label><br /> @@ -568,7 +569,7 @@ </div> </div> - <!-- Liste des emails expéditeur --> + <!-- Sélection des états d'attentes possibles pour ce dossier --> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> @@ -593,7 +594,7 @@ <label> <input type="radio" ng-model="selectedMailFolder.useCurrentLevelEtatAttente" ng-value="true" ng-change="initFolderEtatAttente()" ng-if="selectedMailFolder.$parent" /> - Définir des états d'attente pour ce dossier : + Définir les états d'attente pour ce dossier : </label> <div class="checkbox" ng-repeat="etatAttente in etatAttentes" ng-if="selectedMailFolder.useCurrentLevelEtatAttente || !selectedMailFolder.$parent"> <label> @@ -604,6 +605,82 @@ </div> </div> </div> + + <!-- Sélection des types de demandes possibles pour ce dossier --> + <div class="panel panel-default"> + <div class="panel-heading"> + <h4 class="panel-title"> + <a data-toggle="collapse" data-parent="#accordion" href="#collapse4"> + Sélection des types de demandes possibles pour ce dossier + </a> + </h4> + </div> + <div id="collapse4" class="panel-collapse collapse"> + <div class="panel-body"> + <label ng-if="selectedMailFolder.$parent"> + <input type="radio" ng-model="selectedMailFolder.useCurrentLevelDemandType" + ng-value="false" ng-change="initFolderDemandTypes()" /> + Hériter des types de demande déclarés sur les dossiers parent : + </label> + <div class="checkbox" ng-repeat="demandType in demandTypes" ng-if="selectedMailFolder.$parent && !selectedMailFolder.useCurrentLevelDemandType"> + <label> + <input type="checkbox" ng-checked="parentScopeValues.demandTypes.containsByTopiaId(demandType)" + disabled> {{demandType.label}} + </label> + </div> + <label> + <input type="radio" ng-model="selectedMailFolder.useCurrentLevelDemandType" ng-value="true" + ng-change="initFolderDemandTypes()" ng-if="selectedMailFolder.$parent" /> + Définir les types de demande pour ce dossier : + </label> + <div class="checkbox" ng-repeat="demandType in demandTypes" ng-if="selectedMailFolder.useCurrentLevelDemandType || !selectedMailFolder.$parent"> + <label> + <input type="checkbox" ng-checked="selectedMailFolder.demandTypes.containsByTopiaId(demandType)" + ng-click="changeFolderDemandType(demandType)"> {{demandType.label}} + </label> + </div> + </div> + </div> + </div> + + <!-- Sélection des gammes possibles pour ce dossier --> + <div class="panel panel-default"> + <div class="panel-heading"> + <h4 class="panel-title"> + <a data-toggle="collapse" data-parent="#accordion" href="#collapse5"> + Sélection des gammes possibles pour ce dossier + </a> + </h4> + </div> + <div id="collapse5" class="panel-collapse collapse"> + <div class="panel-body"> + <label ng-if="selectedMailFolder.$parent"> + <input type="radio" ng-model="selectedMailFolder.useCurrentLevelRange" + ng-value="false" ng-change="initFolderRanges()" /> + Hériter des gammes déclarées sur les dossiers parent : + </label> + <div class="checkbox" ng-repeat="range in ranges" ng-if="selectedMailFolder.$parent && !selectedMailFolder.useCurrentLevelRange"> + <label> + <input type="checkbox" ng-checked="parentScopeValues.ranges.containsByTopiaId(range)" + disabled> {{range.label}} + </label> + </div> + <div> + <label> + <input type="radio" ng-model="selectedMailFolder.useCurrentLevelRange" ng-value="true" + ng-change="initFolderRanges()" ng-if="selectedMailFolder.$parent" /> + Définir les gammes pour ce dossier : + </label> + <div class="checkbox" ng-repeat="range in ranges" ng-if="selectedMailFolder.useCurrentLevelRange || !selectedMailFolder.$parent"> + <label> + <input type="checkbox" ng-checked="selectedMailFolder.ranges.containsByTopiaId(range)" + ng-click="changeFolderRange(range)"> {{range.label}} + </label> + </div> + </div> + </div> + </div> + </div> <!-- configuration des colonnes a afficher --> <div class="panel panel-default"> @@ -673,12 +750,12 @@ <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> - <a data-toggle="collapse" data-parent="#accordion" href="#collapse4"> + <a data-toggle="collapse" data-parent="#accordion" href="#collapse7"> Droits </a> </h4> </div> - <div id="collapse4" class="panel-collapse collapse"> + <div id="collapse7" class="panel-collapse collapse"> <div class="panel-body"> <!-- Droits d'accès --> <table id="rights" class="table table-bordered"> Modified: trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-07-28 14:22:34 UTC (rev 447) +++ trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-07-28 15:14:22 UTC (rev 448) @@ -39,6 +39,8 @@ $scope.tableMailFields = ConfigurationData.tableMailFields; //{Array} les etats d'attentes disponibles $scope.etatAttentes = ConfigurationData.etatAttentes; + //{Array} les gammes disponibles + $scope.ranges = ConfigurationData.ranges; //{Array} les types de documents $scope.demandTypes = ConfigurationData.demandTypes; //{Array} mail folders @@ -445,6 +447,8 @@ useCurrentLevelEdiFolder: false, useCurrentLevelRejectResponseMessage: false, useCurrentLevelRejectResponseMailAddress: false, + useCurrentLevelDemandType: false, + useCurrentLevelRange: false, archiveFolder: true }; @@ -520,6 +524,12 @@ if (!$scope.selectedMailFolder.etatAttentes) { $scope.selectedMailFolder.etatAttentes = []; } + if (!$scope.selectedMailFolder.demandTypes) { + $scope.selectedMailFolder.demandTypes = []; + } + if (!$scope.selectedMailFolder.ranges) { + $scope.selectedMailFolder.ranges = []; + } if (!$scope.selectedMailFolder.readRightUsers) { $scope.selectedMailFolder.readRightUsers = []; } @@ -604,6 +614,8 @@ replyDomains: [], folderTableColumns: [], etatAttentes: [], + demandTypes: [], + ranges: [], //rigths readRightUsers: [], readRightGroups: [], @@ -700,6 +712,12 @@ if ((!$scope.parentScopeValues.etatAttentes || $scope.parentScopeValues.etatAttentes.length == 0) && folder.etatAttentes) { $scope.parentScopeValues.etatAttentes = folder.etatAttentes; } + if ((!$scope.parentScopeValues.demandTypes || $scope.parentScopeValues.demandTypes.length == 0) && folder.demandTypes) { + $scope.parentScopeValues.demandTypes = folder.demandTypes; + } + if ((!$scope.parentScopeValues.ranges || $scope.parentScopeValues.ranges.length == 0) && folder.ranges) { + $scope.parentScopeValues.ranges = folder.ranges; + } // move to parent first to keed parent order for collection if (folder.$parent) { @@ -882,7 +900,49 @@ $scope.selectedMailFolder.etatAttentes.push(etatAttente); } }; + + // initialise la liste des types de demandes avec celle des niveaux supérieurs + $scope.initFolderDemandTypes = function() { + if ($scope.selectedMailFolder.useCurrentLevelDemandType) { + if ($scope.parentScopeValues.demandTypes) { + $scope.selectedMailFolder.demandTypes = $scope.parentScopeValues.demandTypes.slice(); // soft copy + } + } else { + delete $scope.selectedMailFolder.demandTypes; + } + }; + // selection/deselection d'un type de demande possible pour ce dossier + $scope.changeFolderDemandType = function(demandType) { + var index = $scope.selectedMailFolder.demandTypes.indexOfByTopiaId(demandType); + if (index != -1) { + $scope.selectedMailFolder.demandTypes.splice(index, 1); + } else { + $scope.selectedMailFolder.demandTypes.push(demandType); + } + }; + + // initialise la liste des gammes avec celle des niveaux supérieurs + $scope.initFolderRanges = function() { + if ($scope.selectedMailFolder.useCurrentLevelRange) { + if ($scope.parentScopeValues.ranges) { + $scope.selectedMailFolder.ranges = $scope.parentScopeValues.ranges.slice(); // soft copy + } + } else { + delete $scope.selectedMailFolder.ranges; + } + }; + + // selection/deselection d'une gamme possible pour ce dossier + $scope.changeFolderRange = function(range) { + var index = $scope.selectedMailFolder.ranges.indexOfByTopiaId(range); + if (index != -1) { + $scope.selectedMailFolder.ranges.splice(index, 1); + } else { + $scope.selectedMailFolder.ranges.push(range); + } + }; + // initialise la liste des colonnes sélectionnées avec celle des niveaux supérieurs $scope.initFolderColumns = function() { if ($scope.selectedMailFolder.useCurrentLevelTableColumns) {
participants (1)
-
echatellier@users.forge.codelutin.com