r121 - in trunk: . faxtomail-persistence/src/main/xmi faxtomail-service/src/main/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-06-02 17:45:55 +0200 (Mon, 02 Jun 2014) New Revision: 121 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/121 Log: refs #4662: Sauvegarde de la mise en avant des dossiers utilisateur Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/UserFolderAction.java trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/user-folder-input.jsp trunk/faxtomail-ui-web/src/main/webapp/js/user-folder.js trunk/pom.xml Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo =================================================================== (Binary files differ) Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java 2014-06-02 11:05:24 UTC (rev 120) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java 2014-06-02 15:45:55 UTC (rev 121) @@ -24,6 +24,7 @@ * #L% */ +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -45,6 +46,8 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserTopiaDao; import com.franciaflex.faxtomail.persistence.entities.MailFilter; import com.franciaflex.faxtomail.persistence.entities.MailFilterTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; import com.google.common.collect.Maps; @@ -174,6 +177,27 @@ public List<FaxToMailUser> getAllUsers() { FaxToMailUserTopiaDao faxToMailUserDao = getPersistenceContext().getFaxToMailUserDao(); - return faxToMailUserDao.findAll(); + return faxToMailUserDao.forAll().setOrderByArguments(FaxToMailUser.PROPERTY_FIRST_NAME, FaxToMailUser.PROPERTY_LAST_NAME).findAll(); } + + public void saveUserFolders(Map<String, Collection<MailFolder>> userFolders) { + log.warn("user folders = " + userFolders); + + //MailFolderTopiaDao mailFolderTopiaDao = getPersistenceContext().getMailFolderDao(); + FaxToMailUserTopiaDao faxToMailUserTopiaDao = getPersistenceContext().getFaxToMailUserDao(); + + for (Map.Entry<String, Collection<MailFolder>> entry : userFolders.entrySet()) { + String userId = entry.getKey(); + Collection<MailFolder> mailFolders = entry.getValue(); + + FaxToMailUser user = faxToMailUserTopiaDao.findByTopiaId(userId); + user.clearAffectedFolders(); + for (MailFolder mailFolder : mailFolders) { + user.addAffectedFolders(mailFolder); + } + faxToMailUserTopiaDao.update(user); + } + + getPersistenceContext().commit(); + } } Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/UserFolderAction.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/UserFolderAction.java 2014-06-02 11:05:24 UTC (rev 120) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/UserFolderAction.java 2014-06-02 15:45:55 UTC (rev 121) @@ -24,9 +24,13 @@ * #L% */ -import java.util.Collections; +import java.lang.reflect.Type; +import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.convention.annotation.Result; @@ -36,6 +40,7 @@ import com.franciaflex.faxtomail.services.service.ConfigurationService; import com.franciaflex.faxtomail.services.service.MailFolderService; import com.franciaflex.faxtomail.web.FaxToMailActionSupport; +import com.google.gson.reflect.TypeToken; public class UserFolderAction extends FaxToMailActionSupport { @@ -49,6 +54,8 @@ protected List<FaxToMailUser> users; + protected Map<String, Collection<MailFolder>> userFolders; + public void setConfigurationService(ConfigurationService configurationService) { this.configurationService = configurationService; } @@ -62,6 +69,11 @@ public String input() throws Exception { mailFolders = mailFolderService.getAllMailFolders(); users = configurationService.getAllUsers(); + + userFolders = new HashMap<>(); + for (FaxToMailUser user : users) { + userFolders.put(user.getTopiaId(), CollectionUtils.emptyIfNull(user.getAffectedFolders())); + } return INPUT; } @@ -69,9 +81,9 @@ @org.apache.struts2.convention.annotation.Action(results = { @Result(type = "redirectAction", params = {"actionName", "user-folder-input"})}) public String execute() throws Exception { - String result = super.execute(); - return result; + configurationService.saveUserFolders(userFolders); + return SUCCESS; } public List<MailFolder> getMailFolders() { @@ -81,4 +93,13 @@ public List<FaxToMailUser> getUsers() { return users; } + + public Map<String, Collection<MailFolder>> getUserFolders() { + return userFolders; + } + + public void setUserFoldersJson(String json) { + Type type = new TypeToken<Map<String, Collection<MailFolder>>>() {}.getType(); + this.userFolders = getGson().fromJson(json, type); + } } Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/user-folder-input.jsp =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/user-folder-input.jsp 2014-06-02 11:05:24 UTC (rev 120) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/user-folder-input.jsp 2014-06-02 15:45:55 UTC (rev 121) @@ -28,18 +28,23 @@ <html> <head> <title>Import</title> + <link rel="stylesheet" type="text/css" href="<s:url value='/webjars/select2/3.4.8/select2.css' />" /> <link rel="stylesheet" type="text/css" href="<s:url value='/css/faxtomail.css' />" /> + <script type="text/javascript" src="<s:url value='/webjars/select2/3.4.8/select2.min.js' />"></script> + <script type="text/javascript" src="<s:url value='/webjars/select2/3.4.8/select2_locale_fr.js' />"></script> <script type="text/javascript" src="<s:url value='/webjars/angularjs/1.2.16/angular.min.js' />"></script> + <script type="text/javascript" src="<s:url value='/js/select2sortable.js' />"></script> <script type="text/javascript" src="<s:url value='/js/faxtomail.js' />"></script> <script type="text/javascript" src="<s:url value='/js/user-folder.js' />"></script> <script type="text/javascript"> - angular.module('UserFolderModule', ['FaxToMail']) + angular.module('UserFolderModule', ['FaxToMail', 'ui.select2.sortable']) .value('UserFolderData', { 'mailFolders': <s:property value="toJson(mailFolders)" escapeHtml="false"/>, - 'users': <s:property value="toJson(users)" escapeHtml="false"/> + 'users': <s:property value="toJson(users)" escapeHtml="false"/>, + 'userFolders': <s:property value="toJson(userFolders)" escapeHtml="false"/> }); </script> </head> @@ -48,12 +53,12 @@ <div id="main-container" class="container" ng-app="UserFolderModule"> - <h1 class="page-header">Import</h1> + <h1 class="page-header">Dossiers mis en avant par utilisateur</h1> - <s:form id="main_form" action="import" method="post" enctype="multipart/form-data" ng-controller="UserFolderController"> + <s:form id="main_form" action="user-folder" method="post" enctype="multipart/form-data" ng-controller="UserFolderController"> + <s:hidden name="userFoldersJson" value="{{userFolders}}" /> <table id='table-snapshot' class="table table-bordered"> - <caption>Dossiers mis en avant par utilisateur</caption> <thead> <tr> <th>Utilisateur</th> @@ -62,9 +67,11 @@ </thead> <tbody> <tr ng-repeat="user in users"> - <th>{{user.login}}</th> + <th>{{user.firstName}} {{user.lastName}}</th> <td> - <input type="text" /> + <div class="controls"> + <input type="hidden" ui-select2-sortable ng-model="userFolders[user.topiaId]" simple-query="getObjectsData" multiple sortable> + </div> </td> </tr> </tbody> Modified: trunk/faxtomail-ui-web/src/main/webapp/js/user-folder.js =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/js/user-folder.js 2014-06-02 11:05:24 UTC (rev 120) +++ trunk/faxtomail-ui-web/src/main/webapp/js/user-folder.js 2014-06-02 15:45:55 UTC (rev 121) @@ -31,6 +31,8 @@ $scope.mailFolders = UserFolderData.mailFolders; // {Array} Liste des utilisateurs ldap $scope.users = UserFolderData.users; + //{Map} Topia id : mailFolders + $scope.userFolders = UserFolderData.userFolders; // method privée recursive pour retourner l'ensemble des dossiers var recursiveAddMailFolder = function(result, mailFolders) { @@ -48,4 +50,16 @@ recursiveAddMailFolder(flatMailFolders, $scope.mailFolders); return flatMailFolders; }; + + // fonction retournant l'ensemble des options disponibles + $scope.getObjectsData = function(term, result) { + var resultArray = []; + angular.forEach($scope.mailFolders, function(mailFolder) { + // select 2 require an id field + mailFolder.id = mailFolder.topiaId; + // select 2 can use 'name' for display, so it's ok + resultArray.push(mailFolder); + }); + result(resultArray); + }; }]); Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-06-02 11:05:24 UTC (rev 120) +++ trunk/pom.xml 2014-06-02 15:45:55 UTC (rev 121) @@ -27,7 +27,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>mavenpom4redmine</artifactId> - <version>5.0.7</version> + <version>5.0.8</version> </parent> <groupId>com.franciaflex</groupId> @@ -97,7 +97,7 @@ <nuitonI18nVersion>3.1</nuitonI18nVersion> <nuitonConfigVersion>3.0-alpha-2</nuitonConfigVersion> - <nuitonCsvVersion>3.0-rc-1</nuitonCsvVersion> + <nuitonCsvVersion>3.0-rc-2</nuitonCsvVersion> <nuitonDecoratorVersion>3.0-alpha-3</nuitonDecoratorVersion> <nuitonUpdaterVersion>3.0-alpha-2</nuitonUpdaterVersion> <nuitonUtilsVersion>3.0-SNAPSHOT</nuitonUtilsVersion> @@ -109,7 +109,7 @@ <hibernateVersion>4.3.5.Final</hibernateVersion> <h2Version>1.3.176</h2Version> - <jaxxVersion>2.8.6-SNAPSHOT</jaxxVersion> + <jaxxVersion>2.8.6</jaxxVersion> <!-- do not upgrade to 1.6.5-1 --> <swingXVersion>1.6.4</swingXVersion> <xworkVersion>2.3.15.1</xworkVersion> @@ -553,7 +553,7 @@ <dependency> <groupId>org.webjars</groupId> <artifactId>select2</artifactId> - <version>3.4.8</version> + <version>3.4.8-1</version> <scope>runtime</scope> </dependency>
participants (1)
-
echatellier@users.forge.codelutin.com