[Suiviobsmer-commits] r505 - in trunk: . wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/entity wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi wao-business/src/test/java/fr/ifremer/wao/bean wao-business/src/test/java/fr/ifremer/wao/entity wao-ui wao-ui/src/main/java/fr/ifremer/wao/ui/components wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/java/fr/ifremer/wao/ui/services wao-ui/src/
Author: fdesbois Date: 2010-06-10 17:38:10 +0000 (Thu, 10 Jun 2010) New Revision: 505 Log: Evo #2325 : - Add roles managment in Administration form - Use nuiton-web - Add missing query for migration (Ok for production database) Added: trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/ trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/ trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr.properties trunk/wao-ui/src/main/webapp/img/add-16px.png Modified: trunk/pom.xml trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java trunk/wao-ui/pom.xml trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties trunk/wao-ui/src/main/webapp/Administration.tml trunk/wao-ui/src/main/webapp/css/administration.css trunk/wao-ui/src/main/webapp/css/main.css Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/pom.xml 2010-06-10 17:38:10 UTC (rev 505) @@ -57,6 +57,11 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.nuiton.web</groupId> + <artifactId>nuiton-tapestry-extra</artifactId> + <version>${nuitonweb.version}</version> + </dependency> <!-- ToPIA --> <dependency> <groupId>org.nuiton.topia</groupId> @@ -235,6 +240,7 @@ <!-- libraries version --> <i18n.version>1.2.2</i18n.version> <nuitonutils.version>1.2.2</nuitonutils.version> + <nuitonweb.version>0.1-SNAPSHOT</nuitonweb.version> <!--<topia.version>2.3.3</topia.version>--> <!--<eugene.version>2.0.1</eugene.version>--> <topia.version>2.4-SNAPSHOT</topia.version> Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-10 17:38:10 UTC (rev 505) @@ -117,6 +117,7 @@ // Update ReadOnly with role value if set to TRUE queries.add("ALTER TABLE WaoUser ADD roleReadOnly INTEGER;"); queries.add("UPDATE WaoUser SET roleReadOnly = role WHERE readOnly = TRUE;"); + queries.add("UPDATE WaoUser SET roleReadOnly = 0 WHERE readOnly = FALSE;"); // Clean readOnly old field queries.add("ALTER TABLE WaoUser DROP COLUMN readOnly;"); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java 2010-06-10 17:38:10 UTC (rev 505) @@ -117,7 +117,7 @@ * @return an array of UserRole * @see #isSelected(int) */ - public static UserRole[] toUrserRoles(int code) { + public static UserRole[] toUserRoles(int code) { EnumSet<UserRole> result = EnumSet.noneOf(UserRole.class); for (UserRole role : values()) { if (role.isSelected(code)) { Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-06-10 17:38:10 UTC (rev 505) @@ -28,11 +28,10 @@ import fr.ifremer.wao.WaoUtils; import fr.ifremer.wao.bean.UserRole; import java.io.Serializable; +import java.util.ArrayList; import java.util.Arrays; -import java.util.Iterator; import java.util.List; -import org.nuiton.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -86,7 +85,12 @@ @Override public List<UserRole> getUserRoles() { - UserRole[] roles = UserRole.toUrserRoles(getRole()); + UserRole[] roles = UserRole.toUserRoles(getRole()); +// List<UserRole> results = new ArrayList<UserRole>(); +// if (roles.length > 0) { +// results = Arrays.asList(roles); +// } +// return results; return Arrays.asList(roles); } @@ -114,21 +118,30 @@ } setRole(newCode); + added = true; + } - // Apply same change on readOnly if defined - if (readOnly) { - int newReadOnly = getRoleReadOnly() + role.toInt(); - if (logger.isDebugEnabled()) { - logger.debug("New code for readOnly : " + newReadOnly); - } + updateReadOnly(role, readOnly); - setRoleReadOnly(newReadOnly); - } - added = true; - } return added; } + protected void updateReadOnly(UserRole role, boolean readOnly) { + + boolean previousReadOnly = isReadOnly(role); + + // Update readOnly true from false : add value with code calcul + if (readOnly && !previousReadOnly) { + int newReadOnly = getRoleReadOnly() + role.toInt(); + setRoleReadOnly(newReadOnly); + + // Update readOnly false from true : remove value with code calcul + } else if (!readOnly && previousReadOnly) { + int newReadOnly = getRoleReadOnly() - role.toInt(); + setRoleReadOnly(newReadOnly); + } + } + @Override public boolean removeUserRole(UserRole role) { for (UserRole current : getUserRoles()) { @@ -173,12 +186,13 @@ } @Override - public boolean isReadOnly() { + public boolean isCurrentReadOnly() { boolean result = isReadOnly(currentRole); return result; } - protected boolean isReadOnly(UserRole role) { + @Override + public boolean isReadOnly(UserRole role) { boolean result = role.isSelected(getRoleReadOnly()); return result; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-06-10 17:38:10 UTC (rev 505) @@ -276,8 +276,9 @@ " ne puisse plus se connecter."; boolean isCoordinator = user.hasUserRole(UserRole.COORDINATOR); + boolean isAdmin = user.hasUserRole(UserRole.ADMIN); - if (user.isAdmin() || isCoordinator) { + if (isAdmin || isCoordinator) { SampleRowLogDAO logDAO = WaoDAOHelper.getSampleRowLogDAO(transaction); List<SampleRowLog> results = logDAO.findAllByAuthor(user); Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java 2010-06-10 17:38:10 UTC (rev 505) @@ -4,7 +4,6 @@ import org.junit.Test; import java.util.Arrays; -import java.util.Collections; /** * Created: 8 juin 2010 @@ -49,31 +48,31 @@ Assert.assertTrue(UserRole.COORDINATOR.isSelected(5)); Assert.assertTrue(UserRole.COORDINATOR.isSelected(6)); Assert.assertTrue(UserRole.COORDINATOR.isSelected(7)); - UserRole[] roles = UserRole.toUrserRoles(1); + UserRole[] roles = UserRole.toUserRoles(1); assertEquals(roles, UserRole.ADMIN); - roles = UserRole.toUrserRoles(2); + roles = UserRole.toUserRoles(2); assertEquals(roles, UserRole.OBSERVER); - roles = UserRole.toUrserRoles(3); + roles = UserRole.toUserRoles(3); assertEquals(roles, UserRole.ADMIN, UserRole.OBSERVER); - roles = UserRole.toUrserRoles(4); + roles = UserRole.toUserRoles(4); assertEquals(roles, UserRole.COORDINATOR); - roles = UserRole.toUrserRoles(5); + roles = UserRole.toUserRoles(5); assertEquals(roles, UserRole.ADMIN, UserRole.COORDINATOR); - roles = UserRole.toUrserRoles(6); + roles = UserRole.toUserRoles(6); assertEquals(roles, UserRole.OBSERVER, UserRole.COORDINATOR); - roles = UserRole.toUrserRoles(7); + roles = UserRole.toUserRoles(7); assertEquals(roles, UserRole.ADMIN, UserRole.OBSERVER, UserRole.COORDINATOR); - roles = UserRole.toUrserRoles(10); + roles = UserRole.toUserRoles(10); assertEquals(roles, UserRole.OBSERVER, UserRole.GUEST); - roles = UserRole.toUrserRoles(14); + roles = UserRole.toUserRoles(14); assertEquals(roles, UserRole.OBSERVER, UserRole.COORDINATOR, UserRole.GUEST); } Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java 2010-06-10 17:38:10 UTC (rev 505) @@ -38,7 +38,8 @@ // Do nothing, role already set user.addUserRole(UserRole.OBSERVER, true); Assert.assertEquals(15, user.getRole()); - Assert.assertEquals(9, user.getRoleReadOnly()); + // readOnly is updated + Assert.assertEquals(11, user.getRoleReadOnly()); } @Test @@ -68,7 +69,7 @@ boolean result = user.setCurrentRole(UserRole.OBSERVER); Assert.assertTrue(result); - Assert.assertTrue(user.isReadOnly()); + Assert.assertTrue(user.isCurrentReadOnly()); result = user.setCurrentRole(UserRole.ADMIN); Assert.assertFalse(result); Modified: trunk/wao-ui/pom.xml =================================================================== --- trunk/wao-ui/pom.xml 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/pom.xml 2010-06-10 17:38:10 UTC (rev 505) @@ -33,6 +33,10 @@ <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> </dependency> + <dependency> + <groupId>org.nuiton.web</groupId> + <artifactId>nuiton-tapestry-extra</artifactId> + </dependency> <!-- Tapestry framework + components --> <dependency> <groupId>org.apache.tapestry</groupId> Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-06-10 17:38:10 UTC (rev 505) @@ -157,7 +157,7 @@ public String getAccessText() { String text = getCurrentUser().getCurrentRole().getLabel(); - if (getCurrentUser().isReadOnly()) { + if (getCurrentUser().isCurrentReadOnly()) { text += " lecture seule"; } return text; Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-06-10 17:38:10 UTC (rev 505) @@ -40,17 +40,24 @@ import fr.ifremer.wao.ui.services.WaoManager; import java.util.List; import org.apache.commons.lang.StringUtils; +import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.EventContext; +import org.apache.tapestry5.PersistenceConstants; import org.apache.tapestry5.annotations.IncludeStylesheet; import org.apache.tapestry5.annotations.InjectComponent; import org.apache.tapestry5.annotations.Log; import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.annotations.SessionState; +import org.apache.tapestry5.beaneditor.BeanModel; +import org.apache.tapestry5.corelib.components.BeanEditForm; +import org.apache.tapestry5.corelib.components.Form; +import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.ioc.services.TypeCoercer; +import org.apache.tapestry5.services.BeanModelSource; import org.apache.tapestry5.upload.services.UploadedFile; import org.slf4j.Logger; @@ -66,7 +73,7 @@ public class Administration { @Inject - private Logger log; + private Logger logger; @InjectComponent private Layout layout; @@ -101,18 +108,9 @@ private GenericSelectModel<WaoUser> usersSelectModel; - /** - * User is persistant cause of autobuild problem ?!? - */ - @Persist - private WaoUser user; + @InjectComponent + private BeanEditForm userForm; - @Property - private boolean generatePassword; - - @Property - private String password; - private boolean addNewCompanySelected; private boolean addNewUserSelected; private boolean deleteUserSelected; @@ -121,6 +119,7 @@ companies = null; getCompanies(); user = null; + userModel = null; } void onActivate(EventContext ec) { @@ -158,7 +157,7 @@ layout.addInfo(result + " zones de pêche importées"); } catch (WaoException eee) { String[] errors = - manager.getErrorMessages(eee, messages, log); + manager.getErrorMessages(eee, messages, logger); layout.addError(errors); } } @@ -174,7 +173,8 @@ public GenericSelectModel<Company> getCompaniesSelectModel() throws WaoException { if (companiesSelectModel == null) { - companiesSelectModel = new GenericSelectModel<Company>(getCompanies(), Company.class, Company.NAME, "id", propertyAccess); + companiesSelectModel = new GenericSelectModel<Company>(getCompanies(), + Company.class, Company.NAME, "id", propertyAccess); } return companiesSelectModel; } @@ -215,45 +215,52 @@ public GenericSelectModel<WaoUser> getUsersSelectModel() throws WaoException { if (usersSelectModel == null) { List<WaoUser> users = serviceUser.getUsersByCompany(getCompany()); - if (log.isDebugEnabled()) { - log.debug("Nb users : " + users.size()); + if (logger.isDebugEnabled()) { + logger.debug("Nb users : " + users.size()); } - usersSelectModel = new GenericSelectModel<WaoUser>(users, WaoUser.class, "fullName", "id", propertyAccess); + usersSelectModel = new GenericSelectModel<WaoUser>(users, WaoUser.class, + "fullName", "id", propertyAccess); } return usersSelectModel; } - @Log + /******************** USER ACTIONS FORM ***********************************/ + + @Inject + private BeanModelSource beanModelSource; + + /** + * User is persistant cause of autobuild problem ?!? + */ + @Persist + private WaoUser user; + public WaoUser getUser() throws WaoException { if (user == null) { if (userId != null) { - if (log.isDebugEnabled()) { - log.debug("User exist in selectModel : " + userId); + if (logger.isDebugEnabled()) { + logger.debug("User exist in selectModel : " + userId); } user = getUsersSelectModel().findObject(userId); } else { user = serviceUser.getNewUser(getCompany()); -// user = new WaoUserImpl(); -// if (log.isDebugEnabled()) { -// log.debug("Set company for new user : " + getCompany().getName()); -// } -// user.setCompany(getCompany()); -// Default role set to OBSERVER -// user.setUserRole(UserRole.OBSERVER); generatePassword = true; } } return user; } + @Log void onSelectedFromAddNewUser() { addNewUserSelected = true; } + @Log void onSelectedFromDeleteUser() { deleteUserSelected = true; } + @Log void onSuccessFromUserActionsForm() throws WaoException { if (addNewUserSelected) { userId = null; @@ -268,14 +275,84 @@ layout.addError(eee.getMessage()); } } + if (logger.isDebugEnabled()) { + logger.debug("'User id : " + userId); + } } +// @Log +// void onChangeFromUsers(String userId) { +// this.userId = userId; +// } +// +// @Log +// void onActionFromDeleteUser() { +// user = getUsersSelectModel().findObject(userId); +// try { +// serviceUser.deleteUser(user); +// user = null; +// userId = null; +// layout.addInfo("Utilisateur supprimé avec succès !"); +// } catch (WaoBusinessException eee) { +// layout.addError(eee.getMessage()); +// } +// } +// +// @Log +// void onActionFromAddNewUser() { +// userId = null; +// } + + /******************** USER FORM ******************************************/ + + @InjectComponent + private Zone userFormZone; + + @Persist + private BeanModel<WaoUser> userModel; + + @Property + private boolean generatePassword; + + @Property + private String password; + + public BeanModel<WaoUser> getUserModel() { + if (userModel == null) { + userModel = beanModelSource.createEditModel(WaoUser.class, messages); + userModel.add("userRole", null); + userModel.include( + WaoUser.FIRST_NAME, + WaoUser.LAST_NAME, + WaoUser.LOGIN, + WaoUser.PASSWORD, + WaoUser.PHONE_NUMBER, + "userRole", + WaoUser.ACTIVE + ); + } + return userModel; + } + @Log - void onSuccessFromUser() throws WaoException { - if (log.isDebugEnabled()) { - log.debug("User : " + user); + void onSelectedFromUserForm() { + refreshUserRoleZone = false; + } + + @Log + void onValidateFormFromUserForm() { + userForm.clearErrors(); + if (user.getUserRoles().isEmpty()) { + userForm.recordError("L'utilisateur doit au minimum avoir un rôle."); } + } + @Log + Object onSuccessFromUserForm() throws WaoException { + if (logger.isDebugEnabled()) { + logger.debug("User : " + user); + } + if (!StringUtils.isEmpty(password)) { user.setPassword(password); user.setPasswordChanged(true); @@ -291,6 +368,86 @@ layout.addError(eee.getMessage()); } } + return this; } + + @Log + Object onFailureFromUserForm() { + return userForm; + } + + /****************************** UserRole **********************************/ + + @InjectComponent + private Zone userRoleZone; + + @Persist + @Property + private UserRole userRole; + + @Persist + @Property + private boolean readOnly; + + @Property + private UserRole role; + + @Property + private int roleIndex; + + @Property + private boolean refreshUserRoleZone; + + public String getRoleReadOnly() { + String text = ""; + if (user.isReadOnly(role)) { + text = "lecture seule"; + } + return text; + } + +// void onSelectedFromUser() { +// refreshUserRoleZone = false; +// } + + @Log + void onChangeFromUserRole(String value) { + if (StringUtils.isNotEmpty(value)) { + userRole = UserRole.valueOf(value); + } else { + userRole = null; + } + } + + @Log + void onChangeFromReadOnly(boolean value) { + readOnly = value; + } + + @Log + Object onActionFromAddRole() { + if (logger.isDebugEnabled()) { + logger.debug("Add userRole : " + userRole + + " (readOnly=" + readOnly + ")"); + } + if (userRole != null) { + user.addUserRole(userRole, readOnly); + } + // Reset fields + userRole = null; + readOnly = false; + // Refresh the zone + refreshUserRoleZone = true; + return userRoleZone; + } + + @Log + Object onActionFromRemoveRole(int roleIndex) { + UserRole roleToRemove = user.getUserRoles().get(roleIndex); + user.removeUserRole(roleToRemove); + // Refresh the zone + refreshUserRoleZone = true; + return userRoleZone; + } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-10 17:38:10 UTC (rev 505) @@ -197,7 +197,7 @@ protected static final String GZIP_MIMETYPE = "application/x-gzip"; public boolean canImportReferentials() { - return user.isAdmin() && !user.isReadOnly(); + return user.isAdmin() && !user.isCurrentReadOnly(); } @Log @@ -521,7 +521,7 @@ } public boolean canCreateNewContactFromList() throws WaoException { - if (!user.isAdmin() && !user.isReadOnly() && isSampleRowExists()) { + if (!user.isAdmin() && !user.isCurrentReadOnly() && isSampleRowExists()) { return boat.canCreateContact(user.getCompany()); } return false; @@ -723,7 +723,7 @@ } public boolean canCreateNewContactFromElligibleBoat() throws WaoException { - if (!user.isAdmin() && !user.isReadOnly() && + if (!user.isAdmin() && !user.isCurrentReadOnly() && !isElligibleBoatCompanyActiveFalse()) { Boat currentBoat = getBoatInfos().getBoat(); return currentBoat.canCreateContact(user.getCompany()); @@ -744,7 +744,7 @@ * @return true if BoatInfos can be edited */ public boolean canEditBoatInfos() { - return !user.isReadOnly(); + return !user.isCurrentReadOnly(); } void onSuccess() throws WaoException { Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-06-10 17:38:10 UTC (rev 505) @@ -206,7 +206,7 @@ public boolean canImportExport() { return (user.isAdmin() || user.getCurrentRole().equals(UserRole.COORDINATOR)) && - !user.isReadOnly(); + !user.isCurrentReadOnly(); } @Log @@ -400,7 +400,7 @@ public boolean hasActions() { return !user.isAdmin() && contact.getValidationCompany() == null - && !user.isReadOnly(); + && !user.isCurrentReadOnly(); } /** @@ -412,7 +412,7 @@ public boolean hasValidationActions() { return (user.isAdmin() || user.getCurrentRole().equals(UserRole.COORDINATOR)) && - !user.isReadOnly(); + !user.isCurrentReadOnly(); } public boolean canValidate() { Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java 2010-06-10 17:38:10 UTC (rev 505) @@ -26,7 +26,6 @@ package fr.ifremer.wao.ui.pages; import fr.ifremer.wao.WaoException; -import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.entity.News; import fr.ifremer.wao.entity.NewsImpl; import fr.ifremer.wao.entity.WaoUser; @@ -114,7 +113,7 @@ } public boolean canEditNews() { - return user.isAdmin() && !user.isReadOnly(); + return user.isAdmin() && !user.isCurrentReadOnly(); } public boolean isEditionMode() { Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-06-10 17:38:10 UTC (rev 505) @@ -152,7 +152,7 @@ public boolean canAddComment() { return user.getCurrentRole().equals(UserRole.COORDINATOR) && - !user.isReadOnly(); + !user.isCurrentReadOnly(); } public void onSuccessFromAddComment() throws WaoException { Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-06-10 17:38:10 UTC (rev 505) @@ -28,7 +28,6 @@ import fr.ifremer.wao.WaoBusinessException; import fr.ifremer.wao.WaoException; import fr.ifremer.wao.bean.*; -import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.FishingZone; import fr.ifremer.wao.entity.SampleMonth; import fr.ifremer.wao.entity.SampleRow; @@ -122,7 +121,7 @@ private UploadedFile samplingPlanCsvFile; public boolean canImportSamplingPlan() { - return user.isAdmin() && !user.isReadOnly(); + return user.isAdmin() && !user.isCurrentReadOnly(); } @Log @@ -467,7 +466,7 @@ * @return true if the sampleRow can be edited. */ public boolean canEditSampleRow() { - return user.isAdmin() && !user.isReadOnly(); + return user.isAdmin() && !user.isCurrentReadOnly(); } /** Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java 2010-06-10 17:38:10 UTC (rev 505) @@ -49,7 +49,7 @@ WaoUser user = getUserConnected(); // Check if user readOnly is allowed - if (user.isReadOnly() && !check.readOnlyAllowed()) { + if (user.isCurrentReadOnly() && !check.readOnlyAllowed()) { return false; } Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-06-10 17:38:10 UTC (rev 505) @@ -110,7 +110,7 @@ <li class="sep"> </li> <li class="disabled" title="Synthèses et indicateurs"> Synthèse - </li> + </li> </p:else> </t:unless> <t:if t:test="currentUser.admin"> Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties 2010-06-10 17:38:10 UTC (rev 505) @@ -39,8 +39,10 @@ active-label: Actif generatePassword-label: G\u00e9n\u00e9rer le password password-label: ou d\u00e9finir manuellement -userRole-label: R\u00f4le +userRole-label: R\u00f4les readOnly-label: Lecture seule +# follow statement doesn't work with BeanEditForm +userForm-errors-banner: L'utilisateur n'a pas \u00e9t\u00e9 sauvegard\u00e9 \u00e0 cause des erreurs suivantes : # UserRole UserRole.ADMIN: Administrateur Added: trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr.properties =================================================================== --- trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr.properties (rev 0) +++ trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr.properties 2010-06-10 17:38:10 UTC (rev 505) @@ -0,0 +1 @@ +default-banner: Vous devez corriger les erreurs suivantes pour pouvoir continuer : \ No newline at end of file Modified: trunk/wao-ui/src/main/webapp/Administration.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Administration.tml 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-06-10 17:38:10 UTC (rev 505) @@ -71,6 +71,14 @@ <input t:type="select" t:id="users" t:model="usersSelectModel" t:value="userId" /> </div> <div class="icons fleft"> + <!--<input t:type="submit" class="ico search" value="Show Details" t:title="Afficher détails" />--> + <!--<a t:type="actionlink" t:id="deleteUser" t:title="Supprimer cet utilisateur"--> + <!--t:mixins="Confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement cet utilisateur ?">--> + <!--<img src="${asset:context:img/delete2.png}" alt="Supprimer cet utilisateur" />--> + <!--</a>--> + <!--<a t:type="actionlink" t:id="addNewUser" t:title="Ajouter un nouvel utilisateur">--> + <!--<img src="${asset:context:img/add.png}" alt="Ajouter un nouvel utilisateur" />--> + <!--</a>--> <input t:type="submit" t:id="showUser" class="ico search" value="Show Details" t:title="Afficher détails" /> <input t:type="submit" t:id="deleteUser" class="ico22px delete" value="Delete user" t:title="Supprimer cet utilisateur" t:mixins="Confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement cet utilisateur ?" /> @@ -79,33 +87,54 @@ </form> <fieldset class="user-form clearfix"> - <form t:type="beaneditform" class="clearfix" t:id="user" - t:include="firstName, lastName, login, password, phoneNumber, userRole, readOnly, active"> - <p:firstName> - <label t:type="label" for="firstName" /> - <input t:type="textfield" t:id="firstName" value="user.firstName" t:validate="required" /> - </p:firstName> - <p:lastName> - <label t:type="label" for="lastName" /> - <input t:type="textfield" t:id="lastName" value="user.lastName" t:validate="required" /> - </p:lastName> - <p:login> - <label t:type="label" for="login" /> - <input t:type="textfield" t:id="login" value="user.login" t:validate="required" /> - </p:login> - <p:password> - <label t:type="label" for="generatePassword" /> - <input t:type="checkbox" t:id="generatePassword" value="generatePassword" /> - <span> ou définir manuellement : </span> - <input t:type="passwordfield" t:id="password2" value="password" /> - </p:password> - <p:userRole> - <label t:type="label" for="userRole" /> - <select t:type="select" t:id="userRole" t:value="user.userRole" t:validate="required"> - <option></option> - </select> - </p:userRole> - </form> + <t:zone t:id="userFormZone" t:update="show"> + <form t:type="beaneditform" class="clearfix" t:id="userForm" t:object="user" t:model="userModel" t:zone="userFormZone"> + <t:errors /> + <p:firstName> + <label t:type="label" for="firstName" /> + <input t:type="textfield" t:id="firstName" value="user.firstName" t:validate="required" /> + </p:firstName> + <p:lastName> + <label t:type="label" for="lastName" /> + <input t:type="textfield" t:id="lastName" value="user.lastName" t:validate="required" /> + </p:lastName> + <p:login> + <label t:type="label" for="login" /> + <input t:type="textfield" t:id="login" value="user.login" t:validate="required" /> + </p:login> + <p:password> + <label t:type="label" for="generatePassword" /> + <input t:type="checkbox" t:id="generatePassword" value="generatePassword" /> + <span> ou définir manuellement : </span> + <input t:type="passwordfield" t:id="password2" value="password" /> + </p:password> + <p:userRole> + <t:zone id="so-admin-userRoleZone" t:id="userRoleZone" t:update="show"> + <t:nuiton.subForm t:visible="refreshUserRoleZone"> + <label t:type="label" for="userRole" /> + <select t:type="select" t:id="userRole" t:value="userRole" + t:mixins="ck/onEvent" t:event="change"/> + + <span>Lecture seule : </span> + <input t:type="checkbox" t:id="readOnly" t:value="readOnly" + t:mixins="ck/onEvent" t:event="change"/> + + <a t:type="actionlink" t:id="addRole" title="Ajouter un rôle" t:zone="so-admin-userRoleZone"> + <img src="${asset:context:img/add-16px.png}" /> + </a> + <ul> + <li t:type="loop" t:source="user.userRoles" t:value="role" t:index="roleIndex"> + ${role.label} ${roleReadOnly} + <a t:type="actionlink" t:id="removeRole" t:context="roleIndex" title="Supprimer ce rôle" t:zone="so-admin-userRoleZone"> + <img src="${asset:context:img/remove-22px.png}" /> + </a> + </li> + </ul> + </t:nuiton.subForm> + </t:zone> + </p:userRole> + </form> + </t:zone> </fieldset> </t:if> Modified: trunk/wao-ui/src/main/webapp/css/administration.css =================================================================== --- trunk/wao-ui/src/main/webapp/css/administration.css 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/webapp/css/administration.css 2010-06-10 17:38:10 UTC (rev 505) @@ -56,3 +56,11 @@ width: 40px; } +div#so-admin-userRoleZone ul { + margin-left: 250px; +} + +div#so-admin div.t-error li { + margin-left: 20px; +} + Modified: trunk/wao-ui/src/main/webapp/css/main.css =================================================================== --- trunk/wao-ui/src/main/webapp/css/main.css 2010-06-10 13:33:13 UTC (rev 504) +++ trunk/wao-ui/src/main/webapp/css/main.css 2010-06-10 17:38:10 UTC (rev 505) @@ -89,7 +89,7 @@ } div#so-connexion-form { - width: 180px; + width: 200px; } div#so-connexion-form-buttons { Added: trunk/wao-ui/src/main/webapp/img/add-16px.png =================================================================== (Binary files differ) Property changes on: trunk/wao-ui/src/main/webapp/img/add-16px.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream
participants (1)
-
fdesbois@users.labs.libre-entreprise.org