Author: glandais Date: 2008-01-16 16:56:10 +0000 (Wed, 16 Jan 2008) New Revision: 168 Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Login.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/AdminPage.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/SuperAdminPage.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/UserPage.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/ServiceFactory.java trunk/simexplorer-is-web/src/main/webapp/Login.tml trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/Login.properties Removed: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/ContextListener.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/StorageServiceFactory.java trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout_fr.properties Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Layout.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/grid/ElementDataSource.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementList.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml trunk/simexplorer-is-web/src/main/webapp/GroupList.tml trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml trunk/simexplorer-is-web/src/main/webapp/UserList.tml trunk/simexplorer-is-web/src/main/webapp/WEB-INF/web.xml trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.properties trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.tml trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties Log: Web app update Deleted: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/ContextListener.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/ContextListener.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/ContextListener.java 2008-01-16 16:56:10 UTC (rev 168) @@ -1,26 +0,0 @@ -package fr.cemagref.simexplorer.is.ui.web; - -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; - -import fr.cemagref.simexplorer.is.ui.web.services.StorageServiceFactory; - -public class ContextListener implements ServletContextListener { - - public void contextDestroyed(ServletContextEvent arg0) { - try { - StorageServiceFactory.getService().close(); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - public void contextInitialized(ServletContextEvent arg0) { - try { - StorageServiceFactory.getService().open(); - } catch (Throwable e) { - e.printStackTrace(); - } - } - -} Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Layout.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Layout.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Layout.java 2008-01-16 16:56:10 UTC (rev 168) @@ -20,6 +20,7 @@ import java.util.Locale; +import org.apache.tapestry.annotations.ApplicationState; import org.apache.tapestry.annotations.Component; import org.apache.tapestry.annotations.IncludeStylesheet; import org.apache.tapestry.annotations.InjectPage; @@ -31,7 +32,7 @@ import org.apache.tapestry.services.PersistentLocale; import fr.cemagref.simexplorer.is.ui.web.pages.ElementList; -import fr.cemagref.simexplorer.is.ui.web.pages.UserList; +import fr.cemagref.simexplorer.is.ui.web.pages.security.ProtectedPage; /** * AbstractPage.java @@ -44,10 +45,13 @@ @IncludeStylesheet("css/Layout.css") public class Layout { - /* linked state "UserList" */ - @InjectPage - private UserList userList; + @Inject + @Service("PersistentLocale") + private PersistentLocale persistentLocale; + @ApplicationState + private String token; + @Component private TextField searchField; @@ -83,10 +87,6 @@ title = ""; } - @Inject - @Service("PersistentLocale") - private PersistentLocale persistentLocale; - Object onActionFromSwitchLocaleFr() { persistentLocale.set(new Locale("fr")); return null; @@ -97,14 +97,6 @@ return null; } - Object onActionFromAdministration() { - return userList; - } - - public boolean getAdministrator() { - return true; - } - Object onSuccess() { elementList.searchQuery(searchText); // form.recordError(searchField, "Invalid request."); @@ -117,6 +109,11 @@ return elementList; } + public Object onActionFromLogout() throws Exception { + token = null; + return elementList; + } + public String getSearchText() { return searchText; } @@ -125,4 +122,28 @@ this.searchText = searchText; } + public String getLoginName() { + return ProtectedPage.getUserLogged(getToken()).getLogin(); + } + + public boolean getLogged() { + return ProtectedPage.isUserLogged(getToken()); + } + + public boolean getAdministrator() { + return ProtectedPage.isUserAdmin(getToken()); + } + + public boolean getSuperAdministrator() { + return ProtectedPage.isUserSuperAdmin(getToken()); + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/grid/ElementDataSource.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/grid/ElementDataSource.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/grid/ElementDataSource.java 2008-01-16 16:56:10 UTC (rev 168) @@ -6,7 +6,7 @@ import org.apache.tapestry.grid.GridDataSource; import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; -import fr.cemagref.simexplorer.is.ui.web.services.StorageServiceFactory; +import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; public class ElementDataSource implements GridDataSource { @@ -27,11 +27,11 @@ public int getAvailableRows() { int result = 0; try { - if (query.isEmpty()) { - result = StorageServiceFactory.getService() + if (query.equals("")) { + result = ServiceFactory.getStorageService() .findApplicationsCount(false); } else { - result = StorageServiceFactory.getService().findFullTextCount( + result = ServiceFactory.getStorageService().findFullTextCount( query, false); } } catch (NamingException e) { @@ -67,12 +67,12 @@ } } - if (query.isEmpty()) { - entities = StorageServiceFactory.getService() + if (query.equals("")) { + entities = ServiceFactory.getStorageService() .findApplications(false, startIndex, 1 + endIndex - startIndex, dateOrder); } else { - entities = StorageServiceFactory.getService().findFullText( + entities = ServiceFactory.getStorageService().findFullText( query, false, startIndex, 1 + endIndex - startIndex, dateOrder); } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.java 2008-01-16 16:56:10 UTC (rev 168) @@ -1,9 +1,7 @@ package fr.cemagref.simexplorer.is.ui.web.pages; -import org.apache.tapestry.annotations.Component; +import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage; -import fr.cemagref.simexplorer.is.ui.web.components.Layout; +public class ApplicationExport extends UserPage { -public class ApplicationExport { - } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java 2008-01-16 16:56:10 UTC (rev 168) @@ -1,15 +1,14 @@ package fr.cemagref.simexplorer.is.ui.web.pages; -import org.apache.tapestry.annotations.Component; import org.apache.tapestry.upload.services.UploadedFile; import com.healthmarketscience.rmiio.RemoteInputStreamServer; import com.healthmarketscience.rmiio.SimpleRemoteInputStream; -import fr.cemagref.simexplorer.is.ui.web.components.Layout; -import fr.cemagref.simexplorer.is.ui.web.services.StorageServiceFactory; +import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage; +import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; -public class ApplicationImport { +public class ApplicationImport extends UserPage { private UploadedFile fileEA; private UploadedFile fileLib; @@ -34,7 +33,7 @@ if (fileEA != null) { RemoteInputStreamServer zipRemoteStream = new SimpleRemoteInputStream( fileEA.getStream()); - StorageServiceFactory.getService().saveElement( + ServiceFactory.getStorageService().saveElement( zipRemoteStream.export()); } } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-16 16:56:10 UTC (rev 168) @@ -28,10 +28,11 @@ import fr.cemagref.simexplorer.is.entities.data.Result; import fr.cemagref.simexplorer.is.entities.data.Structure; import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; -import fr.cemagref.simexplorer.is.ui.web.services.StorageServiceFactory; +import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage; +import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; import fr.cemagref.simexplorer.is.ui.web.tools.XMLAttachment; -public class ElementDetail { +public class ElementDetail extends UserPage { @Inject private ComponentResources resources; @@ -40,7 +41,7 @@ private LoggableElement element; public void setup(String uuid, String version) throws Exception { - element = StorageServiceFactory.getService().getElement(uuid, version); + element = ServiceFactory.getStorageService().getElement(uuid, version); } public List<String> getHeaders() { @@ -64,10 +65,10 @@ ByteArrayOutputStream bos = new ByteArrayOutputStream(); RemoteOutputStreamServer xmlRemoteOutputStream = new SimpleRemoteOutputStream( bos); - StorageServiceFactory.getService().exportElement( + ServiceFactory.getStorageService().exportElement( xmlRemoteOutputStream.export(), uuid, version); - MetaDataEntity mde = StorageServiceFactory.getService().getMetadata( + MetaDataEntity mde = ServiceFactory.getStorageService().getMetadata( uuid, version); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); response = new XMLAttachment(bis, mde.getType() + "." + mde.getUuid() Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementList.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementList.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementList.java 2008-01-16 16:56:10 UTC (rev 168) @@ -14,8 +14,9 @@ import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; import fr.cemagref.simexplorer.is.ui.web.grid.ElementDataSource; +import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage; -public class ElementList { +public class ElementList extends UserPage { @Retain private BeanModel model; @@ -60,7 +61,7 @@ } public void searchQuery(String query) { - if (query == null || query.isEmpty()) { + if (query == null || query.equals("")) { elementDataSource = new ElementDataSource(); } else { elementDataSource = new ElementDataSource(query); @@ -87,8 +88,7 @@ return result; } - public Object onActionFromDetailElement(String context) - throws Exception { + public Object onActionFromDetailElement(String context) throws Exception { StringTokenizer st = new StringTokenizer(context, ","); String uuid = st.nextToken(); String version = st.nextToken(); @@ -99,7 +99,7 @@ public String getWindowTitle() { String windowTitle = null; if (elementDataSource.getQuery() != null - && !elementDataSource.getQuery().isEmpty()) { + && !elementDataSource.getQuery().equals("")) { windowTitle = String.format("Search results for \"%s\"", elementDataSource.getQuery()); } else { Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-16 16:56:10 UTC (rev 168) @@ -1,14 +1,98 @@ package fr.cemagref.simexplorer.is.ui.web.pages; +import java.util.StringTokenizer; + +import javax.naming.NamingException; + +import org.apache.tapestry.annotations.InjectPage; import org.apache.tapestry.annotations.Persist; +import org.apache.tapestry.internal.services.StringValueEncoder; -public class GroupEdit { +import fr.cemagref.simexplorer.is.security.entities.Group; +import fr.cemagref.simexplorer.is.security.entities.User; +import fr.cemagref.simexplorer.is.ui.web.pages.security.AdminPage; +import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; +public class GroupEdit extends AdminPage { + @Persist - private int groupId; + private Group group; - void onActivate(int groupId) { - this.groupId = groupId; + @InjectPage + private GroupList groupList; + + private StringValueEncoder stringEncoder = new StringValueEncoder(); + + @Persist + private String[] usersInGroup; + + void setup(int groupId) throws NamingException { + if (groupId == -1) { + this.group = new Group(); + this.usersInGroup = new String[0]; + } else { + this.group = ServiceFactory.getSecurityService().getGroup(groupId); + User[] users = ServiceFactory.getSecurityService().getUsersOfGroup( + group); + this.usersInGroup = new String[users.length]; + for (int i = 0; i < users.length; i++) { + this.usersInGroup[i] = users[i].getId() + "/" + + users[i].getLogin(); + } + } } + public Object onSuccess() throws NamingException { + if (group.getId() == null) { + ServiceFactory.getSecurityService().saveGroup(group.getName(), + getUserLogged(getToken())); + } else { + ServiceFactory.getSecurityService().updateGroup(group); + } + Integer[] usersIds = new Integer[usersInGroup.length]; + for (int i = 0; i < usersIds.length; i++) { + StringTokenizer st = new StringTokenizer(usersInGroup[i], "/"); + usersIds[i] = new Integer(st.nextToken()); + } + ServiceFactory.getSecurityService().setUsersOfGroup(group, usersIds); + return groupList; + } + + public Object onActionFromCancel() { + return groupList; + } + + public String[] getUsers() throws NamingException { + User[] users = ServiceFactory.getSecurityService().getUsers(); + String[] result = new String[users.length]; + for (int i = 0; i < users.length; i++) { + result[i] = users[i].getId() + "/" + users[i].getLogin(); + } + return result; + } + + public String[] getUsersInGroup() throws NamingException { + return usersInGroup; + } + + public void setUsersInGroup(String[] usersInGroup) throws NamingException { + this.usersInGroup = usersInGroup; + } + + public Group getGroup() { + return group; + } + + public StringValueEncoder getStringEncoder() { + return stringEncoder; + } + + public GroupList getGroupList() { + return groupList; + } + + public void setGroupList(GroupList groupList) { + this.groupList = groupList; + } + } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-01-16 16:56:10 UTC (rev 168) @@ -1,6 +1,95 @@ package fr.cemagref.simexplorer.is.ui.web.pages; +import java.util.ArrayList; +import java.util.List; -public class GroupList { +import javax.naming.NamingException; +import org.apache.tapestry.ComponentResources; +import org.apache.tapestry.annotations.InjectPage; +import org.apache.tapestry.annotations.Retain; +import org.apache.tapestry.beaneditor.BeanModel; +import org.apache.tapestry.ioc.annotations.Inject; +import org.apache.tapestry.services.BeanModelSource; + +import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; +import fr.cemagref.simexplorer.is.security.entities.Group; +import fr.cemagref.simexplorer.is.ui.web.pages.security.AdminPage; +import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; + +public class GroupList extends AdminPage { + + @Retain + private BeanModel model; + + private Group group; + + @Inject + private BeanModelSource beanModelSource; + + @Inject + private ComponentResources resources; + + @InjectPage + private GroupEdit groupEdit; + + void pageLoaded() { + model = beanModelSource.create(Group.class, true, resources); + List<String> wantedProperties = new ArrayList<String>(); + wantedProperties.add("name"); + List<String> properties = model.getPropertyNames(); + for (String property : properties) { + if (!wantedProperties.contains(property)) { + model = model.remove(property); + } + } + model.add("edit", null); + model.add("delete", null); + } + + public Group[] getGroups() throws NamingException { + Group[] groups = null; + if (isUserSuperAdmin(getToken())) { + groups = ServiceFactory.getSecurityService().getGroups(); + } else { + groups = ServiceFactory.getSecurityService().getGroupsOwnedBy(getUserLogged(getToken())); + } + return groups; + } + + public Object onActionFromDelete(Integer context) throws Exception { + ServiceFactory.getSecurityService().deleteGroup(context); + return null; + } + + public Object onActionFromEdit(Integer context) throws Exception { + groupEdit.setup(context); + return groupEdit; + } + + public Object onActionFromAdd() throws Exception { + groupEdit.setup(-1); + return groupEdit; + } + + public Group getGroup() { + return group; + } + + public void setGroup(Group group) { + this.group = group; + } + + public BeanModel getModel() { + return model; + } + + public GroupEdit getGroupEdit() { + return groupEdit; + } + + public void setGroupEdit(GroupEdit groupEdit) { + this.groupEdit = groupEdit; + } + } Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Login.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Login.java (rev 0) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Login.java 2008-01-16 16:56:10 UTC (rev 168) @@ -0,0 +1,57 @@ +package fr.cemagref.simexplorer.is.ui.web.pages; + +import javax.naming.NamingException; + +import org.apache.tapestry.annotations.ApplicationState; +import org.apache.tapestry.annotations.InjectPage; +import org.apache.tapestry.annotations.Persist; + +import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; + +public class Login { + + @Persist + private String user; + private String password; + + @InjectPage + private ElementList elementList; + + @ApplicationState + private String token; + + public Object onSuccess() throws NamingException { + Object result = null; + token = ServiceFactory.getSecurityService().loginUser(user, + password); + if (token != null) { + result = elementList; + } + return result; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public ElementList getElementList() { + return elementList; + } + + public String getWindowTitle() { + return "Login"; + } + +} Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-16 16:56:10 UTC (rev 168) @@ -1,14 +1,54 @@ package fr.cemagref.simexplorer.is.ui.web.pages; +import javax.naming.NamingException; + +import org.apache.tapestry.annotations.InjectPage; import org.apache.tapestry.annotations.Persist; -public class UserEdit { +import fr.cemagref.simexplorer.is.security.entities.User; +import fr.cemagref.simexplorer.is.ui.web.pages.security.AdminPage; +import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; +public class UserEdit extends AdminPage { + @Persist - private int userId; + private User user; - void onActivate(int userId) { - this.userId = userId; + @InjectPage + private UserList userList; + + void setup(int groupId) throws NamingException { + if (groupId == -1) { + this.user = new User(); + } else { + this.user = ServiceFactory.getSecurityService().getUser(groupId); + } } + public Object onSuccess() throws NamingException { + if (user.getId() == null) { + ServiceFactory.getSecurityService().saveUser(user.getLogin(), + user.getMail()); + } else { + ServiceFactory.getSecurityService().updateUser(user); + } + return userList; + } + + public Object onActionFromCancel() { + return userList; + } + + public UserList getUserList() { + return userList; + } + + public void setUserList(UserList userList) { + this.userList = userList; + } + + public User getUser() { + return user; + } + } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java 2008-01-16 16:56:10 UTC (rev 168) @@ -1,6 +1,94 @@ package fr.cemagref.simexplorer.is.ui.web.pages; +import java.util.ArrayList; +import java.util.List; -public class UserList { +import javax.naming.NamingException; +import org.apache.tapestry.ComponentResources; +import org.apache.tapestry.annotations.InjectPage; +import org.apache.tapestry.annotations.Retain; +import org.apache.tapestry.beaneditor.BeanModel; +import org.apache.tapestry.ioc.annotations.Inject; +import org.apache.tapestry.services.BeanModelSource; + +import fr.cemagref.simexplorer.is.security.entities.User; +import fr.cemagref.simexplorer.is.ui.web.pages.security.AdminPage; +import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; + +public class UserList extends AdminPage { + + @Retain + private BeanModel model; + + private User user; + + @Inject + private BeanModelSource beanModelSource; + + @Inject + private ComponentResources resources; + + @InjectPage + private UserEdit userEdit; + + void pageLoaded() { + model = beanModelSource.create(User.class, true, resources); + List<String> wantedProperties = new ArrayList<String>(); + wantedProperties.add("login"); + wantedProperties.add("name"); + wantedProperties.add("admin"); + wantedProperties.add("superAdmin"); + + List<String> properties = model.getPropertyNames(); + for (String property : properties) { + if (!wantedProperties.contains(property)) { + model = model.remove(property); + } + } + model.add("edit", null); + model.add("delete", null); + } + + public User[] getUsers() throws NamingException { + User[] users = null; + users = ServiceFactory.getSecurityService().getUsers(); + return users; + } + + public Object onActionFromDelete(Integer context) throws Exception { + ServiceFactory.getSecurityService().deleteUser(context); + return null; + } + + public Object onActionFromEdit(Integer context) throws Exception { + userEdit.setup(context); + return userEdit; + } + + public Object onActionFromAdd() throws Exception { + userEdit.setup(-1); + return userEdit; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public UserEdit getUserEdit() { + return userEdit; + } + + public void setUserEdit(UserEdit userEdit) { + this.userEdit = userEdit; + } + + public BeanModel getModel() { + return model; + } + } Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/AdminPage.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/AdminPage.java (rev 0) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/AdminPage.java 2008-01-16 16:56:10 UTC (rev 168) @@ -0,0 +1,9 @@ +package fr.cemagref.simexplorer.is.ui.web.pages.security; + +public abstract class AdminPage extends ProtectedPage { + + public boolean hasAccessToPage() { + return isUserAdmin(getToken()); + } + +} Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java (rev 0) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java 2008-01-16 16:56:10 UTC (rev 168) @@ -0,0 +1,82 @@ +package fr.cemagref.simexplorer.is.ui.web.pages.security; + +import javax.naming.NamingException; + +import org.apache.tapestry.annotations.ApplicationState; + +import fr.cemagref.simexplorer.is.security.entities.User; +import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; + +public abstract class ProtectedPage { + + @ApplicationState + private String token; + + Object onActivate() { + if (!hasAccessToPage()) + return "Login"; + return null; + } + + public static User getUserLogged(String aToken) { + User loggedUser = null; + if (aToken != null) { + try { + loggedUser = ServiceFactory.getSecurityService().getLoggedUser( + aToken); + } catch (Exception e) { + // TODO: handle exception + } + } + return loggedUser; + } + + public static boolean isUserLogged(String aToken) { + boolean result = false; + try { + if (getUserLogged(aToken) != null) { + result = true; + } + } catch (Exception e) { + // TODO: handle exception + } + return result; + } + + public static boolean isUserAdmin(String aToken) { + boolean result = false; + try { + User user = getUserLogged(aToken); + if (user != null && user.isAdmin()) { + result = true; + } + } catch (Exception e) { + // TODO: handle exception + } + return result; + } + + public static boolean isUserSuperAdmin(String aToken) { + boolean result = false; + try { + User user = getUserLogged(aToken); + if (user != null && user.isSuperAdmin()) { + result = true; + } + } catch (Exception e) { + // TODO: handle exception + } + return result; + } + + abstract boolean hasAccessToPage(); + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + +} \ No newline at end of file Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/SuperAdminPage.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/SuperAdminPage.java (rev 0) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/SuperAdminPage.java 2008-01-16 16:56:10 UTC (rev 168) @@ -0,0 +1,9 @@ +package fr.cemagref.simexplorer.is.ui.web.pages.security; + +public abstract class SuperAdminPage extends ProtectedPage { + + public boolean hasAccessToPage() { + return isUserSuperAdmin(getToken()); + } + +} Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/UserPage.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/UserPage.java (rev 0) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/UserPage.java 2008-01-16 16:56:10 UTC (rev 168) @@ -0,0 +1,9 @@ +package fr.cemagref.simexplorer.is.ui.web.pages.security; + +public abstract class UserPage extends ProtectedPage { + + public boolean hasAccessToPage() { + return isUserLogged(getToken()); + } + +} Copied: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/ServiceFactory.java (from rev 163, trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/StorageServiceFactory.java) =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/ServiceFactory.java (rev 0) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/ServiceFactory.java 2008-01-16 16:56:10 UTC (rev 168) @@ -0,0 +1,42 @@ +package fr.cemagref.simexplorer.is.ui.web.services; + +import java.util.Properties; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +import fr.cemagref.simexplorer.is.security.service.AuthenticationService; +import fr.cemagref.simexplorer.is.service.StorageService; + +public class ServiceFactory { + + private static StorageService serviceProjets = null; + private static AuthenticationService securityProjets = null; + + public static StorageService getStorageService() throws NamingException { + if (serviceProjets == null) { + serviceProjets = (StorageService) getService("StorageService"); + } + return serviceProjets; + } + + public static AuthenticationService getSecurityService() throws NamingException { + if (securityProjets == null) { + securityProjets = (AuthenticationService) getService("AuthenticationService"); + } + return securityProjets; + } + + private static Object getService(String serviceName) throws NamingException { + Properties properties = (Properties) System.getProperties().clone(); + properties.put("java.naming.provider.url", "jnp://localhost:1099"); + properties.put("java.naming.factory.initial", + "org.jnp.interfaces.NamingContextFactory"); + properties.put("java.naming.factory.url.pkgs", "org.jnp.interfaces"); + + Context context = new InitialContext(properties); + return context.lookup(serviceName); + } + +} Deleted: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/StorageServiceFactory.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/StorageServiceFactory.java 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/StorageServiceFactory.java 2008-01-16 16:56:10 UTC (rev 168) @@ -1,32 +0,0 @@ -package fr.cemagref.simexplorer.is.ui.web.services; - -import java.util.Properties; -import java.util.Map.Entry; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -import fr.cemagref.simexplorer.is.service.StorageService; - -public class StorageServiceFactory { - - private static StorageService serviceProjets = null; - - public static StorageService getService() throws NamingException { - if (serviceProjets == null) { - Properties properties = (Properties) System.getProperties().clone(); - properties.put("java.naming.provider.url", "jnp://localhost:1099"); - properties.put("java.naming.factory.initial", - "org.jnp.interfaces.NamingContextFactory"); - properties - .put("java.naming.factory.url.pkgs", "org.jnp.interfaces"); - - Context context = new InitialContext(properties); - serviceProjets = (StorageService) context - .lookup("StorageService"); - } - return serviceProjets; - } - -} Modified: trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-16 16:56:10 UTC (rev 168) @@ -1,21 +1,28 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" title="message:windowtitle"> - <t:form> - <t:errors/> - - <!-- - + <t:form> + <t:errors /> + + <t:errors/> + <p>${message:name} : <input t:type="TextField" t:id="name" t:validate="required,minlength=3" t:value="group.name" size="30"/></p> - - --> - - <input t:type="Submit" t:value="message:submit"/> - + + <p>${message:userMembers} : + <input t:type="Palette" model="users" selected="usersInGroup" encoder="stringEncoder"/> + </p> + +<!-- + <p>${message:groupMembers} : + <input t:type="Palette" model="groups" selected="paletteSelectedValues" encoder="stringEncoder"/> + </p> + --> + <input t:type="Submit" t:value="message:submit" /> + <a t:type="actionlink" t:id="cancel">${message:cancel}</a> - - </t:form> - + + </t:form> + </t:layout> Modified: trunk/simexplorer-is-web/src/main/webapp/GroupList.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/GroupList.tml 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/main/webapp/GroupList.tml 2008-01-16 16:56:10 UTC (rev 168) @@ -1,24 +1,15 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" title="message:windowtitle"> - <t:form> - <t:errors /> + <table t:type="Grid" source="groups" row="group" model="model"> + <t:parameter name="editCell"> + <t:actionlink t:id="edit" context="group.id">${message:modify}</t:actionlink> + </t:parameter> + <t:parameter name="deleteCell"> + <t:actionlink t:id="delete" context="group.id">${message:delete}</t:actionlink> + </t:parameter> + </table> + + <t:actionlink t:id="add">${message:addgroup}</t:actionlink> - <table class="Large"> - <tr class="First"> - <td>${message:name}</td> - <td>${message:modify}</td> - <td>${message:delete}</td> - </tr> - <!-- t:loop source="groups" value="group"> - <tr> - <td>${group.name}</td> - <td><a t:type="ActionLink" t:id="edit" t:context="group.id">${message:modify}</a></td> - <td><a t:type="ActionLink" t:id="delete" t:context="group.id">${message:delete}</a></td> - </tr> - </t:loop --> - </table> - - </t:form> - </t:layout> Added: trunk/simexplorer-is-web/src/main/webapp/Login.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/Login.tml (rev 0) +++ trunk/simexplorer-is-web/src/main/webapp/Login.tml 2008-01-16 16:56:10 UTC (rev 168) @@ -0,0 +1,21 @@ +<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" + title="${windowtitle}"> + + <h1 class="Title">${windowtitle}</h1> + + <t:form> + + <t:errors /> + + ${message:user} : + <input t:type="TextField" t:id="user" + t:validate="required,minlength=1" t:value="user" size="30" /> + <br /> + ${message:password} : + <input t:type="PasswordField" t:id="password" + t:validate="required,minlength=1" t:value="password" size="30" /> + <br /> + <input t:type="Submit" t:value="message:login" /> + </t:form> + +</t:layout> Modified: trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-16 16:56:10 UTC (rev 168) @@ -4,78 +4,22 @@ <t:form> <t:errors /> - <!-- + <p>${message:name} : ${user.login}</p> - <p>${message:name} : <input t:type="TextField" t:id="name" - t:validate="required,minlength=3" t:value="user.name" size="30" /></p> + <p><t:label for="mail" />: <input t:type="TextField" t:id="mail" + t:validate="required,minlength=4" t:value="user.mail" size="40" /></p> - <p>${message:firstname} : <input t:type="TextField" - t:id="firstName" t:validate="required,minlength=3" - t:value="user.firstName" size="30" /></p> + <p><t:label for="isAdmin" />: <input t:type="checkbox" + t:id="isAdmin" t:value="user.admin" /></p> - <p>${message:mail} : <input t:type="TextField" t:id="mail" - t:validate="required,minlength=3" t:value="user.mail" size="30" /></p> + <p><t:label for="isSuperAdmin" />: <input t:type="checkbox" + t:id="isSuperAdmin" t:value="user.superAdmin" /></p> - <h1 class="Title">${message:groups}</h1> - - <table class="Large"> - <tr class="First"> - <td>${message:name}</td> - <td>${message:add}</td> - <td>${message:remove}</td> - </tr> - <tr> - <td class="Text">Member of :</td> - <td></td> - <td></td> - </tr> - <tr> - <td>XXXXX</td> - <td></td> - <td><a t:type="ActionLink" t:id="removeGroup0" - t:context="0">${message:remove}</a></td> - </tr> - <tr> - <td>YYYYYY</td> - <td></td> - <td><a t:type="ActionLink" t:id="removeGroup1" - t:context="0">${message:remove}</a></td> - </tr> - <tr> - <td>ZZZZZZZ</td> - <td></td> - <td><a t:type="ActionLink" t:id="removeGroup2" - t:context="0">${message:remove}</a></td> - </tr> - <tr> - <td class="Text">Available groups :</td> - <td></td> - <td></td> - </tr> - <tr> - <td>AAAAA</td> - <td><a t:type="ActionLink" t:id="removeGroup3" - t:context="0">${message:add}</a></td> - <td></td> - </tr> - <tr> - <td>BBBBB</td> - <td><a t:type="ActionLink" t:id="removeGroup4" - t:context="0">${message:add}</a></td> - <td></td> - </tr> - <tr> - <td>CCCCCCCC</td> - <td><a t:type="ActionLink" t:id="removeGroup5" - t:context="0">${message:add}</a></td> - <td></td> - </tr> - - </table> - --> - + <p>${message:password} : <a t:type="ActionLink" + t:id="resetPassword" t:context="user.id">${message:resetPassword}</a> + </p> + <input t:type="Submit" t:value="message:submit" /> - <a t:type="actionlink" t:id="cancel">${message:cancel}</a> </t:form> Modified: trunk/simexplorer-is-web/src/main/webapp/UserList.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/UserList.tml 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/main/webapp/UserList.tml 2008-01-16 16:56:10 UTC (rev 168) @@ -1,27 +1,16 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" title="message:windowtitle"> - <t:form> - <t:errors/> - - <table class="Large"> - <tr class="First"> - <td>${message:name}</td> - <td>${message:firstname}</td> - <td>${message:modify}</td> - <td>${message:delete}</td> - </tr> - - <!-- t:loop source="users" value="user"> - <tr> - <td>${user.name}</td> - <td>${user.firstName}</td> - <td><t:pagelink page="UserEdit" context="user.id">${message:modify}</t:pagelink></td> - <td><a t:type="ActionLink" t:id="delete" t:context="user.id">${message:delete}</a></td> - </tr> - </t:loop --> - </table> - - </t:form> + <table t:type="Grid" source="users" row="user" model="model"> + <t:parameter name="editCell"> + <t:actionlink t:id="edit" context="user.id">${message:modify}</t:actionlink> + </t:parameter> + <t:parameter name="deleteCell"> + <t:actionlink t:id="delete" context="user.id">${message:delete}</t:actionlink> + </t:parameter> + </table> + + <t:actionlink t:id="add">${message:adduser}</t:actionlink> + </t:layout> Modified: trunk/simexplorer-is-web/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/WEB-INF/web.xml 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/main/webapp/WEB-INF/web.xml 2008-01-16 16:56:10 UTC (rev 168) @@ -21,27 +21,7 @@ <url-pattern>/*</url-pattern> </filter-mapping> - <servlet> - <servlet-name>dwr-invoker</servlet-name> - <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> - <init-param> - <param-name>debug</param-name> - <param-value>true</param-value> - </init-param> - </servlet> - - <servlet-mapping> - <servlet-name>dwr-invoker</servlet-name> - <url-pattern>/js/dwr/*</url-pattern> - </servlet-mapping> - - <listener> - <listener-class> - fr.cemagref.simexplorer.is.ui.web.ContextListener - </listener-class> - </listener> - <welcome-file-list> - <welcome-file>index.html</welcome-file> + <welcome-file>ElementList</welcome-file> </welcome-file-list> </web-app> \ No newline at end of file Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.properties =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.properties 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.properties 2008-01-16 16:56:10 UTC (rev 168) @@ -1,24 +1,20 @@ -abstractpage-windowtitle=Simexplorer SI -abstractpage-pagetitle=Simexplorer SI +layout-windowtitle=Simexplorer SI +layout-pagetitle=Simexplorer SI -abstractpage-menutitle=Menu -abstractpage-menusubtitle1=Application Menu -abstractpage-menuitem1-1=List -abstractpage-menuitem1-2=Import +layout-menutitle=Menu +layout-applications=Application Menu +layout-list=List +layout-import=Import -abstractpage-menusubtitle2=Administration Menu -abstractpage-menuitem2-1=User list -abstractpage-menuitem2-2=Add user -abstractpage-menuitem2-3=Group list -abstractpage-menuitem2-4=Add group +layout-administration=Administration Menu +layout-userlist=User list +layout-grouplist=Group list -abstractpage-tip=Change your navigator language to see this website in another language. +layout-localeen=English +layout-localefr=Français -abstractpage-localeen=English -abstractpage-localefr=Français +layout-logout=Logout -abstractpage-administration=Administration +layout-copyright=Copyright © 2007. Code Lutin - GPL -abstractpage-copyright=Copyright © 2007. Code Lutin - GPL - search=Search \ No newline at end of file Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.tml =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.tml 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.tml 2008-01-16 16:56:10 UTC (rev 168) @@ -6,69 +6,75 @@ <body> <!-- titre --> - <h1 id="Title">${message:abstractpage-pagetitle}</h1> + <h1 id="Title">${message:layout-pagetitle}</h1> <!-- barre --> <div id="Header"> <div class="Left"> - [<a t:type="actionlink" t:id="switchLocaleEn">${message:abstractpage-localeen}</a>] + [<a t:type="actionlink" t:id="switchLocaleEn">${message:layout-localeen}</a>] - - [<a t:type="actionlink" t:id="switchLocaleFr">${message:abstractpage-localefr}</a>] - </div> - <div class="Right"> - <!-- - <t:if test="administrator"> - <a t:type="actionlink" t:id="administration">${message:abstractpage-administration}</a> - </t:if> - --> - </div> - + [<a t:type="actionlink" t:id="switchLocaleFr">${message:layout-localefr}</a>] + </div> + <t:if test="logged"> + <div class="Right"> + ${loginName} [<a t:type="actionlink" t:id="logout">${message:layout-logout}</a>] + </div> + </t:if> </div> - <div id="Menu" class=""> - <!-- menu --> - <h1 class="tab">${message:abstractpage-menutitle}</h1> - <div id="tabMenu"> + <t:if test="logged"> + + <div id="Menu" class=""> + + <!-- menu --> + <h1 class="tab">${message:layout-menutitle}</h1> + <div id="tabMenu"> + + <h2 class="Title">${message:layout-applications}</h2> + <menu class="menu"> + <li> + <t:actionlink t:id="applicationList">${message:layout-list}</t:actionlink> + </li> + <li><t:pagelink page="ApplicationImport">${message:layout-import}</t:pagelink></li> + </menu> + + <t:if test="administrator"> + + <h2 class="Title">${message:layout-administration}</h2> + <menu class="menu"> + <t:if test="superadministrator"> + <li><t:pagelink page="UserList">${message:layout-userlist}</t:pagelink></li> + </t:if> + <li><t:pagelink page="GroupList">${message:layout-grouplist}</t:pagelink></li> + </menu> + + </t:if> + + </div> - <h2 class="Title">${message:abstractpage-menusubtitle1}</h2> - <menu class="menu"> - <li> - <t:actionlink t:id="applicationList">${message:abstractpage-menuitem1-1}</t:actionlink> - </li> - <li><t:pagelink page="ApplicationImport">${message:abstractpage-menuitem1-2}</t:pagelink></li> - </menu> + <!-- menu --> + <h1 class="tab">${message:search}</h1> + <div id="tabMenu"> + + <t:form> + <t:errors/> + <h2 class="Title"><t:label for="searchField"/>:</h2> + <input t:type="TextField" t:id="searchField" t:value="searchText" t:validate="required,minlength=3" size="30"/> + <input type="submit" value="${message:search}"/> + </t:form> + + </div> - <!-- h2 class="Title">${message:abstractpage-menusubtitle2}</h2> - <menu class="menu"> - <li><t:pagelink page="UserList">${message:abstractpage-menuitem2-1}</t:pagelink></li> - <li><t:pagelink page="UserEdit" context="-1">${message:abstractpage-menuitem2-2}</t:pagelink></li> - <li><t:pagelink page="GroupList">${message:abstractpage-menuitem2-3}</t:pagelink></li> - <li><t:pagelink page="GroupEdit" context="-1">${message:abstractpage-menuitem2-4}</t:pagelink></li> - </menu --> - </div> - <!-- menu --> - <h1 class="tab">${message:search}</h1> - <div id="tabMenu"> - - <t:form> - <t:errors/> - <h2 class="Title"><t:label for="searchField"/>:</h2> - <input t:type="TextField" t:id="searchField" t:value="searchText" t:validate="required,minlength=3" size="30"/> - <input type="submit" value="${message:search}"/> - </t:form> - - </div> - - </div> + </t:if> <div id="Content"> <!-- main template here --> <t:body/> </div> - <div id="FooterAdd">${message:abstractpage-copyright} + <div id="FooterAdd">${message:layout-copyright} </div> </body> </html> \ No newline at end of file Deleted: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout_fr.properties =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout_fr.properties 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout_fr.properties 2008-01-16 16:56:10 UTC (rev 168) @@ -1,22 +0,0 @@ -abstractpage-windowtitle=Simexplorer SI -abstractpage-pagetitle=Simexplorer SI - -abstractpage-menutitle=Menu -abstractpage-menusubtitle1=Application Menu -abstractpage-menuitem1-1=List -abstractpage-menuitem1-2=Import - -abstractpage-menusubtitle2=Administration Menu -abstractpage-menuitem2-1=User list -abstractpage-menuitem2-2=Add user -abstractpage-menuitem2-3=Group list -abstractpage-menuitem2-4=Add group - -abstractpage-tip=Change your navigator language to see this website in another language. - -abstractpage-localeen=English -abstractpage-localefr=Français - -abstractpage-administration=Administration - -abstractpage-copyright=Copyright © 2007. Code Lutin - GPL Added: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/Login.properties =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/Login.properties (rev 0) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/Login.properties 2008-01-16 16:56:10 UTC (rev 168) @@ -0,0 +1,4 @@ +windowtitle=Login +user=User +password=Password +login=Login Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties 2008-01-16 16:55:22 UTC (rev 167) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties 2008-01-16 16:56:10 UTC (rev 168) @@ -5,4 +5,6 @@ add=Add remove=Remove submit=Submit -cancel=Cancel \ No newline at end of file +cancel=Cancel +password=Password +resetPassword=Reset password \ No newline at end of file