r18 - in trunk: echobase-services/src/main/java/fr/ifremer/echobase/services echobase-ui/src/license echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json echobase-ui/src/main/java/fr/ifremer/echobase/ui/validators echobase-ui/src/main/resources echobase-ui/src/main/resources/config echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions echobase-ui/src/main/resources/i18n echobase-ui/src/main/webapp/WEB-INF/includes e
Author: sletellier Date: 2011-11-07 17:20:09 +0100 (Mon, 07 Nov 2011) New Revision: 18 Url: http://forge.codelutin.com/repositories/revision/echobase/18 Log: - Update files headers - Copy T3 usefull class (EditActionEnum) - Add struts-json config file - Implement user CRUD - Display user menu only for admin - Fix delete method in userService Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EditActionEnum.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java trunk/echobase-ui/src/main/resources/config/struts-json.xml trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userForm.jsp trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userList.jsp Removed: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/users.jsp Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java trunk/echobase-ui/src/license/THIRD-PARTY.properties trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/UserAction.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/validators/EchoBaseFieldValidatorSupport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/validators/LoginValidator.java trunk/echobase-ui/src/main/resources/config/struts-user.xml trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/LoginAction-login-validation.xml trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties trunk/echobase-ui/src/main/resources/struts.xml trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp trunk/echobase-ui/src/main/webapp/WEB-INF/includes/menu.jsp trunk/echobase-ui/src/main/webapp/css/screen.css Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java 2011-11-07 16:20:09 UTC (rev 18) @@ -97,6 +97,8 @@ EchoBaseUser user = dao.findByTopiaId(userDTO.getId()); dao.delete(user); + + getTransaction().commitTransaction(); } catch (TopiaException eee) { throw new EchoBaseTechnicalException(eee); } Modified: trunk/echobase-ui/src/license/THIRD-PARTY.properties =================================================================== --- trunk/echobase-ui/src/license/THIRD-PARTY.properties 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/license/THIRD-PARTY.properties 2011-11-07 16:20:09 UTC (rev 18) @@ -14,8 +14,8 @@ # - Lesser General Public License (LGPL) v 3.0 # - Lesser General Public License (LPGL) # - Lesser General Public License (LPGL) v 2.1 +# - Lesser General Public License v2.1,Mozilla Public License 1.1 (MPL) # - MIT License -# - MPL 1.1 # - Mozilla Public License version 1.1 # - The Apache Software License, Version 1.1 # - The Apache Software License, Version 2.0 @@ -28,7 +28,7 @@ # Please fill the missing licenses for dependencies : # # -#Thu Nov 03 15:10:38 CET 2011 +#Mon Nov 07 17:18:07 CET 2011 antlr--antlr--2.7.6=BSD License asm--asm--3.1=http\://asm.ow2.org/license.html asm--asm-commons--3.1=http\://asm.ow2.org/license.html @@ -36,6 +36,7 @@ cglib--cglib-nodep--2.1_3=The Apache Software License, Version 2.0 commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0 dom4j--dom4j--1.6.1=BSD License +javassist--javassist--3.8.0.GA=Lesser General Public License v2.1,Mozilla Public License 1.1 (MPL) javax.servlet--servlet-api--2.5=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 javax.transaction--jta--1.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 net.java.dev.jna--jna--3.3.0=Lesser General Public License (LGPL v. 2.1) Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EditActionEnum.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EditActionEnum.java (rev 0) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EditActionEnum.java 2011-11-07 16:20:09 UTC (rev 18) @@ -0,0 +1,39 @@ +/* + * #%L + * EchoBase :: UI + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.ui.actions; + +/** + * Operations possible for a simple CRUD. + * + * @author chemit <chemit@codelutin.com> + * @since 0.1 + */ +public enum EditActionEnum { + + CREATE, + EDIT, + DETAIL, + DELETE, + CLONE +} Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/UserAction.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/UserAction.java 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/UserAction.java 2011-11-07 16:20:09 UTC (rev 18) @@ -23,174 +23,160 @@ */ package fr.ifremer.echobase.ui.actions; +import com.opensymphony.xwork2.Preparable; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserDTO; +import fr.ifremer.echobase.entities.EchoBaseUserDTOImpl; import fr.ifremer.echobase.services.UserService; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.util.ArrayList; -import java.util.List; - /** + * Action to manage user (create - update - change password,...) + * * @author sletellier <letellier@codelutin.com> * @since 0.1 */ -public class UserAction extends EchoBaseActionSupport { +public class UserAction extends EchoBaseActionSupport implements Preparable { + protected static final Log log = LogFactory.getLog(UserAction.class); + private static final long serialVersionUID = 1L; - protected static final Log log = LogFactory.getLog(UserAction.class); + public static final String BACK_TO_LIST = "backToList"; protected transient UserService service; - // Grid model - protected List<EchoBaseUserDTO> userList; - protected EchoBaseUserDTO selectedUserDto; + protected EchoBaseUserDTO user; - //get how many rows we want to have into the grid - rowNum attribute in the grid - protected Integer rows = 0; - //Get the requested page. By default grid sets this to 1. - protected Integer page = 0; - // sorting order - asc or desc - protected String sord; - // get index row - i.e. user click to sort. - protected String sidx; - // Search Field - protected String searchField; - // The Search String - protected String searchString; - // he Search Operation ['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'] - protected String searchOper; - // Your Total Pages - protected Integer total = 0; - // All Record - protected Integer records = 0; + protected String userEditAction; - public EchoBaseUserDTO getSelectedUserDto() { - return selectedUserDto; + public String getUserEditAction() { + return userEditAction; } - public void setSelectedUserDto(EchoBaseUserDTO selectedUserDto) { - this.selectedUserDto = selectedUserDto; + public void setUserEditAction(String userEditAction) { + this.userEditAction = userEditAction; } - public Integer getRows() { - return rows; + protected UserService getUserService() { + if (service == null) { + service = newService(UserService.class); + } + return service; } - public void setRows(Integer rows) { - this.rows = rows; - } + @Override + public void prepare() throws Exception { - public Integer getPage() { - return page; - } + String userId = getUser().getId(); + if (!StringUtils.isEmpty(userId)) { - public void setPage(Integer page) { - this.page = page; - } + // load user + user = getUserService().getUserById(userId).toDTO(); - public String getSord() { - return sord; + log.info("Selected user " + user.getEmail()); + } } - public void setSord(String sord) { - this.sord = sord; - } + public String doCreateOrUpdate() throws Exception { + EchoBaseUserDTO user = getUser(); + String userEmail = user.getEmail(); - public String getSidx() { - return sidx; - } + if (log.isInfoEnabled()) { + log.info("will create user " + userEmail); + } - public void setSidx(String sidx) { - this.sidx = sidx; + // create user + getUserService().createOrUpdate(user); + return BACK_TO_LIST; } - public String getSearchField() { - return searchField; - } + public String doDelete() throws Exception { + EchoBaseUserDTO user = getUser(); + String userEmail = user.getEmail(); - public void setSearchField(String searchField) { - this.searchField = searchField; + if (log.isInfoEnabled()) { + log.info("will delete user " + userEmail); + } + getUserService().delete(user); + return BACK_TO_LIST; } - public String getSearchString() { - return searchString; - } + @Override + public void validate() { - public void setSearchString(String searchString) { - this.searchString = searchString; - } + EditActionEnum action = getEditActionEnum(); - public String getSearchOper() { - return searchOper; - } + log.info("Edit action : " + action); - public void setSearchOper(String searchOper) { - this.searchOper = searchOper; - } + if (action == null) { - public Integer getTotal() { - return total; - } + // no validation (no edit action) + return; + } - public void setTotal(Integer total) { - this.total = total; - } + EchoBaseUserDTO user = getUser(); + String userEmail = user.getEmail(); - public Integer getRecords() { - return records; - } + switch (action) { - public void setRecords(Integer records) { - this.records = records; - } + case CREATE: - protected UserService getService() { - if (service == null) { - service = newService(UserService.class); - } - return service; - } + // login + password required + if (StringUtils.isEmpty(userEmail)) { - public List<EchoBaseUserDTO> getUserList() { - return userList; - } + // empty user login + addFieldError("user.email", _("echobase.error.required.email")); + } else { - public void setUserList(List<EchoBaseUserDTO> userList) { - this.userList = userList; - } + // check login not already used + EchoBaseUser login; + try { + login = getUserService().getUserByEmail(userEmail); + } catch (Exception e) { - @Override - public String execute() throws Exception { + // could not get user + throw new IllegalStateException( + "Could not obtain user " + userEmail, e); + } + if (login != null) { + addFieldError("user.email", _("echobase.error.email.already.used")); + } + } - List<EchoBaseUser> users = getService().getUsers(); + String userPassword = user.getPassword(); + if (StringUtils.isEmpty(userPassword)) { - // Fill dtos - int size = users.size(); - setRecords(size); + // empty user password + addFieldError("user.password", _("echobase.error.required.password")); + } - //calculate the total pages for the query - setTotal((int) Math.ceil((double) getRecords() / (double) getRows())); - List<EchoBaseUserDTO> userList = new ArrayList<EchoBaseUserDTO>(size); - for (EchoBaseUser user : users) { - userList.add(user.toDTO()); - } - log.info(size + " users founds"); + break; + case EDIT: - setUserList(userList); + // at the moment nothing to validate + break; + case DELETE: - return super.execute(); + // Do nothing + default: + // nothing to validate + } } - public String createOrUpdate() throws Exception { - getService().createOrUpdate(selectedUserDto); - return SUCCESS; + public EchoBaseUserDTO getUser() { + if (user == null) { + user = new EchoBaseUserDTOImpl(); + } + return user; } - public String delete() throws Exception { - getService().delete(selectedUserDto); - return SUCCESS; + protected EditActionEnum getEditActionEnum() { + if (userEditAction == null) { + return null; + } + return EditActionEnum.valueOf(userEditAction); } } Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java (rev 0) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java 2011-11-07 16:20:09 UTC (rev 18) @@ -0,0 +1,72 @@ +/* + * #%L + * EchoBase :: UI + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.ui.actions.json; + +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.EchoBaseUserDTO; +import fr.ifremer.echobase.services.UserService; +import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; + +import java.util.ArrayList; +import java.util.List; + +/** + * Obtains all users of the echobase internal database. + * + * @author sletellier <letellier@codelutin.com> + * @since 0.1 + */ +public class GetUsersAction extends EchoBaseActionSupport { + + private static final long serialVersionUID = 1L; + + protected transient UserService service; + + protected List<EchoBaseUserDTO> users; + + public List<EchoBaseUserDTO> getUsers() { + return users; + } + + protected UserService getUserService() { + if (service == null) { + service = newService(UserService.class); + } + return service; + } + + @Override + public String execute() throws Exception { + + List<EchoBaseUser> allUsers = getUserService().getUsers(); + + users = new ArrayList<EchoBaseUserDTO>(allUsers.size()); + for (EchoBaseUser user : allUsers) { + users.add(user.toDTO()); + } + + return SUCCESS; + } + +} Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/validators/EchoBaseFieldValidatorSupport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/validators/EchoBaseFieldValidatorSupport.java 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/validators/EchoBaseFieldValidatorSupport.java 2011-11-07 16:20:09 UTC (rev 18) @@ -1,11 +1,11 @@ /* * #%L - * T3 :: Web + * EchoBase :: UI * * $Id$ * $HeadURL$ * %% - * Copyright (C) 2010 - 2011 IRD, Codelutin, Tony Chemit + * Copyright (C) 2011 Ifremer, Codelutin * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -28,7 +28,7 @@ import java.util.Arrays; /** - * Base T3 validator. + * Base EchoBase validator. * * @author tchemit <chemit@codelutin.com> * @since 0.1 Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/validators/LoginValidator.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/validators/LoginValidator.java 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/validators/LoginValidator.java 2011-11-07 16:20:09 UTC (rev 18) @@ -1,11 +1,11 @@ /* * #%L - * T3 :: Web + * EchoBase :: UI * * $Id$ * $HeadURL$ * %% - * Copyright (C) 2010 - 2011 IRD, Codelutin, Tony Chemit + * Copyright (C) 2011 Ifremer, Codelutin * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by Added: trunk/echobase-ui/src/main/resources/config/struts-json.xml =================================================================== --- trunk/echobase-ui/src/main/resources/config/struts-json.xml (rev 0) +++ trunk/echobase-ui/src/main/resources/config/struts-json.xml 2011-11-07 16:20:09 UTC (rev 18) @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + #%L + EchoBase :: UI + + $Id$ + $HeadURL$ + %% + Copyright (C) 2011 Ifremer, Codelutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + #L% + --> + + +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.1.7.dtd"> + +<struts> + + <package name="json" extends="loggued" namespace="/json"> + + <action name="getUsers" + class="fr.ifremer.echobase.ui.actions.json.GetUsersAction"> + <interceptor-ref name="basicStackLoggued"/> + <interceptor-ref name="checkUserIsAdmin"/> + <result type="json"/> + </action> + + </package> + +</struts> + Modified: trunk/echobase-ui/src/main/resources/config/struts-user.xml =================================================================== --- trunk/echobase-ui/src/main/resources/config/struts-user.xml 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/resources/config/struts-user.xml 2011-11-07 16:20:09 UTC (rev 18) @@ -56,30 +56,20 @@ <action name="userList" class="fr.ifremer.echobase.ui.actions.UserAction"> <interceptor-ref name="basicStackLoggued"/> <interceptor-ref name="checkUserIsAdmin"/> - <result name="success">/WEB-INF/jsp/user/users.jsp</result> + <result name="success">/WEB-INF/jsp/user/userList.jsp</result> </action> - <!-- get lists of users --> - <action name="userListData" class="fr.ifremer.echobase.ui.actions.UserAction"> - <interceptor-ref name="basicStackLoggued"/> + <!-- get detail of a user --> + <action name="userForm" class="fr.ifremer.echobase.ui.actions.UserAction" + method="input"> + <interceptor-ref name="paramsPrepareParamsStackLoggued"/> <interceptor-ref name="checkUserIsAdmin"/> - <result name="success" type="json"/> + <result name="input">/WEB-INF/jsp/user/userForm.jsp</result> + <result name="error">/WEB-INF/jsp/user/userForm.jsp</result> + <result name="success">/WEB-INF/jsp/user/userForm.jsp</result> + <result name="backToList" type="redirectAction">userList</result> </action> - <!-- update or create (if not exist) user --> - <action name="createOrUpdate" method="createOrUpdate" class="fr.ifremer.echobase.ui.actions.UserAction"> - <interceptor-ref name="basicStackLoggued"/> - <interceptor-ref name="checkUserIsAdmin"/> - <result name="success">/WEB-INF/jsp/user/users.jsp</result> - </action> - - <!-- delete user --> - <action name="delete" method="delete" class="fr.ifremer.echobase.ui.actions.UserAction"> - <interceptor-ref name="basicStackLoggued"/> - <interceptor-ref name="checkUserIsAdmin"/> - <result name="success">/WEB-INF/jsp/user/users.jsp</result> - </action> - </package> </struts> Modified: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/LoginAction-login-validation.xml =================================================================== --- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/LoginAction-login-validation.xml 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/LoginAction-login-validation.xml 2011-11-07 16:20:09 UTC (rev 18) @@ -1,11 +1,11 @@ <!-- #%L - T3 :: Web + EchoBase :: UI $Id$ $HeadURL$ %% - Copyright (C) 2010 - 2011 IRD, Codelutin, Tony Chemit + Copyright (C) 2011 Ifremer, Codelutin %% This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties =================================================================== --- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2011-11-07 16:20:09 UTC (rev 18) @@ -1,3 +1,5 @@ +echobase.action.create=Créer +echobase.action.delete=Suppression echobase.action.locale.english=Anglais echobase.action.locale.french=Français echobase.action.login=Connection @@ -2,11 +4,20 @@ echobase.action.logout=Déconnection +echobase.action.save=Sauvegarder echobase.common.admin=Administrateur echobase.common.email=Email echobase.common.password=Mot de passe echobase.common.save=Sauvegarder +echobase.common.user=Utilisateur echobase.error.bad.password=Mot de passe incorrrect +echobase.error.email.already.used= echobase.error.login.unknown=Utilisateur inconnu +echobase.error.required.email=L'email est obligatoire +echobase.error.required.password=Le mot de passe est obligatoire echobase.export.queryDescription=Description echobase.export.queryName=Nom echobase.export.querySql=SQL +echobase.label.admin.user.create=Création d'un utilisateur +echobase.label.admin.user.delete=Suppression d'un utilisateur +echobase.label.admin.user.edit=Edition d'un utilisateur +echobase.label.info.changePassword=Changement du mot de passe echobase.label.language=Language Modified: trunk/echobase-ui/src/main/resources/struts.xml =================================================================== --- trunk/echobase-ui/src/main/resources/struts.xml 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/resources/struts.xml 2011-11-07 16:20:09 UTC (rev 18) @@ -141,14 +141,8 @@ </package> - <!--<include file="config/struts-json.xml"/>--> - <!--<include file="config/struts-io.xml"/>--> + <include file="config/struts-json.xml"/> <include file="config/struts-user.xml"/> - <!--<include file="config/struts-trip.xml"/>--> - <!--<include file="config/struts-level0.xml"/>--> - <!--<include file="config/struts-level1.xml"/>--> - <!--<include file="config/struts-level2.xml"/>--> - <!--<include file="config/struts-level3.xml"/>--> </struts> Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2011-11-07 16:20:09 UTC (rev 18) @@ -23,6 +23,9 @@ --%> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="sj" uri="/struts-jquery-tags" %> + +<s:set var="userIsAdmin" value="%{#session.echoBaseSession.echoBaseUser.admin}"/> + <div class='displayBlock'> <div class='floatLeft'> Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/includes/menu.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/includes/menu.jsp 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/includes/menu.jsp 2011-11-07 16:20:09 UTC (rev 18) @@ -33,11 +33,11 @@ <li> <s:a action="export"><s:text name="echobase.menu.logs"/></s:a> </li> - <%--<s:if--%> - <%--test="%{userIsAdmin}">--%> + <s:if + test="%{userIsAdmin}"> <li> <s:a action="userList" namespace="/user"><s:text name="echobase.menu.users"/></s:a> </li> - <%--</s:if>--%> + </s:if> </ul> </div> Added: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userForm.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userForm.jsp (rev 0) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userForm.jsp 2011-11-07 16:20:09 UTC (rev 18) @@ -0,0 +1,112 @@ +<%-- + #%L + EchoBase :: UI + + $Id$ + $HeadURL$ + %% + Copyright (C) 2011 Ifremer, Codelutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + #L% + --%> +<%@ page import="fr.ifremer.echobase.ui.actions.EditActionEnum" %> +<%@page contentType="text/html" pageEncoding="UTF-8" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags" %> + +<script type="text/javascript" + src="<s:url value='/js/gridHelper.js' />"></script> + +<%-- CRUD constants --%> +<s:set name="create"><%=EditActionEnum.CREATE.toString()%></s:set> +<s:set name="edit"><%=EditActionEnum.EDIT.toString()%></s:set> +<s:set name="delete"><%=EditActionEnum.DELETE.toString()%></s:set> + +<s:if test="userEditAction == #create"> + <s:set name="title"><s:text name="echobase.label.admin.user.create"/></s:set> +</s:if> +<s:elseif test="userEditAction == #edit"> + <s:set name="title"><s:text name="echobase.label.admin.user.edit"/></s:set> +</s:elseif> +<s:elseif test="userEditAction == #delete"> + <s:set name="title"><s:text name="echobase.label.admin.user.delete"/></s:set> +</s:elseif> + +<title><s:property value="#title"/></title> + +<h2><s:property value="#title"/></h2> + +<s:if test="userEditAction == #create"> + + <%--Create user--%> + + <s:form method="post" validate="true" namespace="/user"> + <fieldset> + <legend> + <s:text name="echobase.common.user"/> + </legend> + <s:hidden key="userEditAction" label=""/> + <s:textfield key="user.email" label="%{getText('echobase.common.email')}" + size="40" required="true"/> + <s:password key="user.password" label="%{getText('echobase.common.password')}" + size="40" required="true"/> + <s:checkbox key="user.admin" label="%{getText('echobase.common.admin')}"/> + </fieldset> + <br/> + <s:submit action="userForm" method="doCreateOrUpdate" key="echobase.action.create" align="right"/> + </s:form> +</s:if> +<s:elseif test="userEditAction == #edit"> + + <%--Update user--%> + + <s:form method="post" validate="true" namespace="/user"> + <fieldset> + <legend> + <s:text name="echobase.common.user"/> + </legend> + <s:hidden key="user.id" label=""/> + <s:hidden key="userEditAction" label=""/> + <s:textfield key="user.email" label="%{getText('echobase.common.email')}" + size="40"/> + <s:password name="user.password" value="" key="echobase.common.password" + size="40"/> + <s:checkbox value="%{user.admin}" key="echobase.common.admin"/> + </fieldset> + <p><s:text name="echobase.label.info.changePassword"/></p> + <br/> + <s:submit action="userForm" method="doCreateOrUpdate" key="echobase.action.save" align="right"/> + </s:form> +</s:elseif> +<s:elseif test="userEditAction == #delete"> + + <%--Delete user--%> + + <s:form method="post" validate="true" namespace="/user"> + <fieldset> + <legend> + <s:text name="echobase.common.user"/> + </legend> + <s:hidden name="user.id" label=""/> + <s:hidden name="userEditAction" label=""/> + <s:textfield key="user.email" label="%{getText('echobase.common.email')}" + size="40" disabled="true"/> + <s:checkbox value="%{user.admin}" key="echobase.common.admin" disabled="true"/> + </fieldset> + <br/> + <s:submit action="userForm" method="doDelete" key="echobase.action.delete" align="right"/> + </s:form> +</s:elseif> + Copied: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userList.jsp (from rev 17, trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/users.jsp) =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userList.jsp (rev 0) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userList.jsp 2011-11-07 16:20:09 UTC (rev 18) @@ -0,0 +1,85 @@ +<%@ page import="fr.ifremer.echobase.ui.actions.EditActionEnum" %> +<%-- +#%L + EchoBase :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2011 Ifremer, Codelutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + #L% +--%> +<%@page contentType="text/html" pageEncoding="UTF-8" %> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags" %> +<script type="text/javascript" + src="<s:url value='/js/gridHelper.js' />"></script> + +<title><s:text name="echobase.title.users"/></title> + +<s:url id="loadUrl" action="getUsers" namespace="/json" escapeAmp="false"/> + +<s:url id="addUrl" action="userForm" namespace="/user" escapeAmp="false" method="input"> + <s:param name="userEditAction"><%=EditActionEnum.CREATE%></s:param> +</s:url> + +<s:url id="editUrl" action="userForm" namespace="/user" escapeAmp="false" method="input"> + <s:param name="userEditAction"><%=EditActionEnum.EDIT%></s:param> +</s:url> + +<s:url id="delUrl" action="userForm" namespace="/user" escapeAmp="false" method="input"> + <s:param name="userEditAction"><%=EditActionEnum.DELETE%></s:param> +</s:url> + +<script type="text/javascript"> + + jQuery(document).ready(function () { + $.addRowSelectTopic('users'); + $.addClearSelectTopic('users'); + $.addAddRowTopic('users', '${addUrl}'); + $.addSingleRowTopic('users', 'Update', '${editUrl}', 'user.id'); + $.addSingleRowTopic('users', 'Delete', '${delUrl}', 'user.id'); + }); +</script> + +<h2><s:text name="echobase.title.users"/></h2> +<br/> + +<sjg:grid id="users" caption="%{getText('echobase.title.users')}" + dataType="json" href="%{loadUrl}" gridModel="users" + pager="true" pagerButtons="false" pagerInput="false" + navigator="true" + rownumbers="false" + autowidth="true" + onSelectRowTopics='users-rowSelect' + onCompleteTopics='users-cleanSelect' + navigatorEdit="false" + navigatorDelete="false" + navigatorSearch="false" + navigatorRefresh="false" + navigatorAdd="false" + editinline="false" resizable="true" + height="100" + navigatorExtraButtons="{ + add: { title : 'Ajouter', icon: 'ui-icon-plus', topic: 'users-rowAdd' }, + update: { title : 'Mettre à jour', icon: 'ui-icon-pencil', topic: 'users-rowUpdate' }, + delete : { title : 'Supprimer', icon: 'ui-icon-trash', topic: 'users-rowDelete' } + }"> + <sjg:gridColumn name="id" title="id" hidden="true"/> + <sjg:gridColumn name="email" width="600" title='%{getText("echobase.common.email")}' + sortable="false"/> + <sjg:gridColumn name="admin" title='%{getText("echobase.common.admin")}' + sortable="false" width="100" formatter="checkbox"/> +</sjg:grid> Property changes on: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userList.jsp ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/users.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/users.jsp 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/users.jsp 2011-11-07 16:20:09 UTC (rev 18) @@ -1,100 +0,0 @@ -<%-- - #%L - EchoBase :: UI - - $Id$ - $HeadURL$ - %% - Copyright (C) 2011 Ifremer, Codelutin - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - #L% - --%> -<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> - -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags" %> - -<title><s:text name="echobase.title.users"/></title> - -<h2><s:text name="echobase.title.users"/></h2> - -<hr/> - -<s:url id="userListUrl" namespace="/user" action="userListData"/> -<s:url id="saveUrl" namespace="/user" action="createOrUpdate"/> - -<sjg:grid id="usersList" - caption='%{getText("echobase.user.gridTitle")}' - dataType="json" - title="%{getText('echobase.user.gridTitle')}" - href="%{userListUrl}" - pager="false" - navigator="true" - rowNum="-1" - navigatorAddOptions="{ - height:280, - reloadAfterSubmit:true, - afterSubmit:function(response, postdata) { - return isError(response.responseText); - } - }" - navigatorEdit="true" - navigatorEditOptions="{ - height:280, - reloadAfterSubmit:true, - afterSubmit:function(response, postdata) { - return isError(response.responseText); - } - }" - navigatorDelete="true" - navigatorDeleteOptions="{ - height:280, - reloadAfterSubmit:true, - afterSubmit:function(response, postdata) { - return isError(response.responseText); - } - }" - gridModel="userList" - editurl="%{saveUrl}" - editinline="false" - rownumbers="true" - multiselect="false" - autowidth="true" - viewrecords="true"> - - <sjg:gridColumn name="id" - title='id' - key="true" - hidden="true"/> - - <sjg:gridColumn name="email" - title='%{getText("echobase.common.email")}' - sortable="true" - editable="true" - edittype="text"/> - - <sjg:gridColumn name="password" - title='%{getText("echobase.common.password")}' - editable="true" - edittype="password" - hidden="true"/> - - <sjg:gridColumn name="admin" - title='%{getText("echobase.common.admin")}' - sortable="true" - editable="true" - edittype="checkbox"/> - -</sjg:grid> \ No newline at end of file Modified: trunk/echobase-ui/src/main/webapp/css/screen.css =================================================================== --- trunk/echobase-ui/src/main/webapp/css/screen.css 2011-11-07 10:57:50 UTC (rev 17) +++ trunk/echobase-ui/src/main/webapp/css/screen.css 2011-11-07 16:20:09 UTC (rev 18) @@ -26,7 +26,7 @@ } .fontsize11 { -font-size: 11px; + font-size: 11px; } .ui-tabs-panel pre { @@ -48,6 +48,10 @@ text-align: center; } +.hidden { + display:none; +} + .displayBlock { display:block; }
participants (1)
-
sletellier@users.forge.codelutin.com