Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/browser.txt
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/browser.txt	(revision 7161)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/browser.txt	(revision 7162)
@@ -135,5 +135,5 @@
 We can edit user bob:
 
-  >>> browser.getControl("edit", index=0).click()
+  >>> browser.getControl("manage", index=0).click()
   >>> browser.getControl("Save", index=0).click()
   >>> browser.getControl("Cancel", index=0).click()
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 7161)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 7162)
@@ -16,4 +16,5 @@
 from waeup.sirp.students.interfaces import IStudentNavigation
 from waeup.sirp.authentication import get_principal_role_manager
+from waeup.sirp.permissions import getRoles
 
 grok.templatedir('templates')
@@ -165,6 +166,33 @@
     def isStudent(self):
         prm = get_principal_role_manager()
-        roles = [x[0] for x in prm.getRolesForPrincipal(self.request.principal.id)]
+        roles = [x[0] for x in
+            prm.getRolesForPrincipal(self.request.principal.id)]
         return 'waeup.Student' in roles
+
+    def getLocalRoles(self, account):
+        """Return HTML tagged string with all local roles of a user account.
+        """
+        local_roles = account.getLocalRoles()
+        local_roles_string = ''
+        site_url = self.url(grok.getSite())
+        for local_role in local_roles.keys():
+            role_title = dict(getRoles())[local_role].title
+            objects_string = ''
+            for object in local_roles[local_role]:
+                objects_string += '<a href="%s">%s</a>, ' %(self.url(object),
+                    self.url(object).replace(site_url,''))
+            local_roles_string += '%s: <br />%s <br />' %(role_title,
+                objects_string.rstrip(', '))
+        return local_roles_string
+
+    def getGlobalRoles(self, account):
+        """Return HTML tagged string with all global roles of a user account.
+        """
+        global_roles = account.roles
+        global_roles_string = ''
+        for global_role in global_roles:
+            role_title = dict(getRoles())[global_role].title
+            global_roles_string += '%s <br />' % role_title
+        return global_roles_string
 
     def update(self):
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7161)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7162)
@@ -37,5 +37,5 @@
     ISessionConfiguration, ISessionConfigurationAdd, academic_sessions_vocab,
     IPasswordValidator)
-from waeup.sirp.permissions import get_users_with_local_roles, getRoles
+from waeup.sirp.permissions import get_users_with_local_roles
 from waeup.sirp.university.catalog import search
 from waeup.sirp.university.vocabularies import course_levels
@@ -253,32 +253,10 @@
     title = 'Portal Users'
 
-    def update(self, userid=None, adduser=None, edit=None, delete=None):
-        if edit is not None and userid is not None:
-            self.redirect(self.url(userid))
+    def update(self, userid=None, adduser=None, manage=None, delete=None):
+        if manage is not None and userid is not None:
+            self.redirect(self.url(userid) + '/@@manage')
         if delete is not None and userid is not None:
             self.context.delUser(userid)
             self.flash('User %s successfully deleted.' % userid)
-
-    def getLocalRoles(self,account):
-        local_roles = account.getLocalRoles()
-        local_roles_string = ''
-        site_url = self.url(grok.getSite())
-        for local_role in local_roles.keys():
-            role_title = dict(getRoles())[local_role].title
-            objects_string = ''
-            for object in local_roles[local_role]:
-                objects_string += '<a href="%s">%s</a>, ' %(self.url(object),
-                    self.url(object).replace(site_url,''))
-            local_roles_string += '%s: %s <br />' %(role_title,
-                objects_string.rstrip(', '))
-        return local_roles_string
-
-    def getGlobalRoles(self,account):
-        global_roles = account.roles
-        global_roles_string = ''
-        for global_role in global_roles:
-            role_title = dict(getRoles())[global_role].title
-            global_roles_string += '%s <br />' % role_title
-        return global_roles_string
 
 class AddUserFormPage(WAeUPAddFormPage):
@@ -316,14 +294,18 @@
         self.redirect(self.url(self.context))
 
-class UserEditFormPage(WAeUPEditFormPage):
-    """Edit a user account.
+class UserManageFormPage(WAeUPEditFormPage):
+    """Manage a user account.
     """
     grok.context(IUserAccount)
-    grok.name('index')
-
-    form_fields = grok.AutoFields(IUserAccount)
+    grok.name('manage')
+    grok.template('usereditformpage')
+
+    form_fields = grok.AutoFields(IUserAccount).omit('name')
     grok.require('waeup.manageUsers')
 
-    title = "Edit user"
+    title = "Portal Users"
+
+    def label(self):
+        return "Edit user %s" % self.context.__name__
 
     @grok.action('Save')
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/usercontainerpage.pt
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/usercontainerpage.pt	(revision 7161)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/usercontainerpage.pt	(revision 7162)
@@ -21,11 +21,11 @@
       <td tal:content="account/title">Title</td>
       <td tal:content="account/description">Description</td>
-      <td tal:content="structure python:view.getGlobalRoles(account)">Global roles</td>
-      <td tal:content="structure python:view.getLocalRoles(account)">Local Roles</td>
+      <td tal:content="structure python:layout.getGlobalRoles(account)">Global Roles</td>
+      <td tal:content="structure python:layout.getLocalRoles(account)">Local Roles</td>
       <td class="text-right">
         <form method="post">
           <input type="hidden" name="userid"
            tal:attributes="value account/name"/>
-            <input type="submit" name="edit" value="edit" />
+            <input type="submit" name="manage" value="manage" />
             <input type="submit" name="delete" value="delete" />
         </form>
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/tests/test_permissions.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/tests/test_permissions.py	(revision 7161)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/tests/test_permissions.py	(revision 7162)
@@ -43,5 +43,5 @@
     # The pages that should only be accessible by manager...
     '/@@manage', '/@@administration', '/faculties/@@search',
-    '/users/@@index', '/users/@@add', '/users/alice/@@index',
+    '/users/@@index', '/users/@@add', '/users/alice/@@manage',
     '/datacenter/@@index', '/datacenter/@@upload', '/datacenter/@@import1',
     '/datacenter/@@import2', '/datacenter/@@import3', '/datacenter/@@import4',
