Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 6642)
@@ -14,4 +14,5 @@
 from waeup.sirp.browser.interfaces import ITheme
 from waeup.sirp.browser.theming import get_all_themes, WAeUPThemeGray1
+from waeup.sirp.students.interfaces import IStudentNavigation
 
 grok.templatedir('templates')
@@ -152,4 +153,11 @@
         return userid
 
+    def getStudentName(self):
+        """Return the student name.
+        """
+        if IStudentNavigation.providedBy(self.context):
+            return self.context.getStudent().name
+        return
+
     def update(self):
         """Include the resources required by the chosen skin/theme.
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/sitelayout.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/sitelayout.pt	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/sitelayout.pt	(revision 6642)
@@ -73,4 +73,12 @@
         </div>
         <div class="yui-b">
+          <div class="block" tal:condition="layout/getStudentName">
+            <div class="hd">
+              <h2 tal:content="layout/getStudentName">Student name</h2>
+            </div>
+            <div class="bd">
+              <tal:left content="structure provider:left_student" />
+            </div>
+          </div>
           <div class="block">
             <div class="hd">
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/accommodation.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/accommodation.py	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/accommodation.py	(revision 6642)
@@ -20,6 +20,6 @@
 from grok import index
 from zope.component.interfaces import IFactory
-from zope.interface import implementedBy
-from waeup.sirp.students.interfaces import IStudentAccommodation
+from waeup.sirp.students.interfaces import (
+    IStudentAccommodation, IStudentNavigation)
 from waeup.sirp.utils.helpers import attrs_to_fields
 
@@ -27,5 +27,5 @@
     """This is a container for accommodation objects.
     """
-    grok.implements(IStudentAccommodation)
+    grok.implements(IStudentAccommodation, IStudentNavigation)
     grok.provides(IStudentAccommodation)
 
@@ -34,3 +34,6 @@
         return
 
+    def getStudent(self):
+        return self.__parent__
+
 StudentAccommodation = attrs_to_fields(StudentAccommodation)
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 6642)
@@ -45,5 +45,5 @@
 from waeup.sirp.browser.resources import datepicker, tabs, datatable
 from waeup.sirp.browser.viewlets import (
-    ManageActionButton, PrimaryNavTab, LeftSidebarLink,
+    ManageActionButton, PrimaryNavTab,
     AddActionButton, ActionButton, PlainActionButton,
     )
@@ -65,5 +65,5 @@
     IStudentsContainer, IStudent, IStudentClearance,
     IStudentPersonal, IStudentBase, IStudentStudyCourse,
-    IStudentPayments, IStudentAccommodation
+    IStudentPayments, IStudentAccommodation, IStudentNavigation
     )
 from waeup.sirp.students.student import (
@@ -119,4 +119,5 @@
     grok.require('waeup.viewStudents')
     grok.template('studentscontainerpage')
+    pnav = 4
 
     @property
@@ -163,4 +164,5 @@
     grok.require('waeup.manageStudents')
     grok.template('studentscontainermanagepage')
+    pnav = 4
 
     @property
@@ -225,4 +227,5 @@
     title = 'Students'
     label = 'Add student'
+    pnav = 4
 
     @grok.action('Create student record')
@@ -250,8 +253,6 @@
     grok.template('studentpage')
     form_fields = grok.AutoFields(IStudentBase)
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.name
+    pnav = 4
+    title = 'Base Data'
 
     @property
@@ -266,52 +267,4 @@
     text = 'Edit'
     target = 'edit_base'
-
-class StudentClearanceViewActionButton(PlainActionButton):
-    grok.order(2)
-    grok.context(IStudent)
-    grok.view(StudentBaseDisplayFormPage)
-    grok.require('waeup.viewStudents')
-    text = 'Clearance Data'
-    target = 'view_clearance'
-
-class StudentPersonalViewActionButton(PlainActionButton):
-    grok.order(3)
-    grok.context(IStudent)
-    grok.view(StudentBaseDisplayFormPage)
-    grok.require('waeup.viewStudents')
-    text = 'Personal Data'
-    target = 'view_personal'
-
-class StudyCourseViewActionButton(PlainActionButton):
-    grok.order(4)
-    grok.context(IStudent)
-    grok.view(StudentBaseDisplayFormPage)
-    grok.require('waeup.viewStudents')
-    text = 'Study Course'
-    target = 'studycourse'
-
-class PaymentsViewActionButton(PlainActionButton):
-    grok.order(5)
-    grok.context(IStudent)
-    grok.view(StudentBaseDisplayFormPage)
-    grok.require('waeup.viewStudents')
-    text = 'Payments'
-    target = 'payments'
-
-class AccommodationViewActionButton(PlainActionButton):
-    grok.order(6)
-    grok.context(IStudent)
-    grok.view(StudentBaseDisplayFormPage)
-    grok.require('waeup.viewStudents')
-    text = 'Accommodation'
-    target = 'accommodation'
-
-class HistoryViewActionButton(PlainActionButton):
-    grok.order(7)
-    grok.context(IStudent)
-    grok.view(StudentBaseDisplayFormPage)
-    grok.require('waeup.viewStudents')
-    text = 'History'
-    target = 'history'
 
 class StudentBaseManageFormPage(WAeUPEditFormPage):
@@ -324,4 +277,6 @@
     grok.template('studentbasemanagepage')
     label = 'Edit base data'
+    title = 'Base Data'
+    pnav = 4
 
     def update(self):
@@ -330,8 +285,4 @@
         self.wf_info = IWorkflowInfo(self.context)
         return
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.name
 
     def getTransitions(self):
@@ -368,8 +319,6 @@
     grok.require('waeup.viewStudents')
     form_fields = grok.AutoFields(IStudentClearance)
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.name
+    title = 'Clearance Data'
+    pnav = 4
 
     @property
@@ -393,8 +342,6 @@
     form_fields = grok.AutoFields(IStudentClearance)
     label = 'Edit clearance data'
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.name
+    title = 'Clearance Data'
+    pnav = 4
 
 class StudentPersonalDisplayFormPage(WAeUPDisplayFormPage):
@@ -405,8 +352,6 @@
     grok.require('waeup.viewStudents')
     form_fields = grok.AutoFields(IStudentPersonal)
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.name
+    title = 'Personal Data'
+    pnav = 4
 
     @property
@@ -430,8 +375,6 @@
     form_fields = grok.AutoFields(IStudentPersonal)
     label = 'Edit personal data'
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.name
+    title = 'Personal Data'
+    pnav = 4
 
 class StudyCourseDisplayFormPage(WAeUPDisplayFormPage):
@@ -443,12 +386,10 @@
     form_fields = grok.AutoFields(IStudentStudyCourse)
     #grok.template('studycoursepage')
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.__parent__.name
-
-    @property
-    def label(self):
-        return '%s: Study Course Data' % self.context.__parent__.name
+    title = 'Study Course'
+    pnav = 4
+
+    @property
+    def label(self):
+        return '%s: Study Course' % self.context.__parent__.name
 
 class PaymentsDisplayFormPage(WAeUPDisplayFormPage):
@@ -460,8 +401,6 @@
     form_fields = grok.AutoFields(IStudentPayments)
     #grok.template('paymentspage')
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.__parent__.name
+    title = 'Payments'
+    pnav = 4
 
     @property
@@ -477,8 +416,6 @@
     form_fields = grok.AutoFields(IStudentAccommodation)
     #grok.template('accommodationpage')
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.__parent__.name
+    title = 'Accommodation'
+    pnav = 4
 
     @property
@@ -493,8 +430,6 @@
     grok.require('waeup.viewStudents')
     grok.template('studenthistory')
-
-    @property
-    def title(self):
-        return 'Student: %s' % self.context.name
+    title = 'History'
+    pnav = 4
 
     @property
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studentbasemanagepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studentbasemanagepage.pt	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studentbasemanagepage.pt	(revision 6642)
@@ -1,2 +1,6 @@
+<h2 i18n:translate=""
+    tal:condition="view/label"
+    tal:content="view/label">Label</h2>
+
 <form action="." tal:attributes="action request/URL" method="post"
       class="edit-form" enctype="multipart/form-data">
@@ -35,5 +39,5 @@
       </tal:block>
       <tr>
-        <td class="label"><label>Application Transition:</label></td>
+        <td class="label"><label>Registration Transition:</label></td>
         <td>
           <select id="transition" name="transition">
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/container.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/container.py	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/container.py	(revision 6642)
@@ -20,5 +20,4 @@
 import os
 from zope.component.interfaces import IFactory
-from zope.interface import implementedBy
 from waeup.sirp.students.interfaces import (
     IStudentsContainer, IStudent, IStudentPayments, IStudentAccommodation)
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py	(revision 6642)
@@ -4,4 +4,12 @@
 from zope import schema
 from waeup.sirp.interfaces import IWAeUPObject
+
+class IStudentNavigation(IWAeUPObject):
+    """Interface needed for student navigation.
+    """
+
+    def getStudent():
+        """Return student object.
+        """
 
 class IStudentBase(IWAeUPObject):
@@ -54,5 +62,5 @@
     """
 
-    def addStudent(faculty):
+    def addStudent(student):
         """Add an IStudent object and subcontainers.
 
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/payments.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/payments.py	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/payments.py	(revision 6642)
@@ -20,6 +20,5 @@
 from grok import index
 from zope.component.interfaces import IFactory
-from zope.interface import implementedBy
-from waeup.sirp.students.interfaces import IStudentPayments
+from waeup.sirp.students.interfaces import IStudentPayments, IStudentNavigation
 from waeup.sirp.utils.helpers import attrs_to_fields
 
@@ -27,5 +26,5 @@
     """This is a container for student payments.
     """
-    grok.implements(IStudentPayments)
+    grok.implements(IStudentPayments, IStudentNavigation)
     grok.provides(IStudentPayments)
 
@@ -34,3 +33,6 @@
         return
 
+    def getStudent(self):
+        return self.__parent__
+
 StudentPayments = attrs_to_fields(StudentPayments)
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/student.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/student.py	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/student.py	(revision 6642)
@@ -23,5 +23,5 @@
 from hurry.workflow.interfaces import IWorkflowInfo, IWorkflowState
 from waeup.sirp.interfaces import IObjectHistory
-from waeup.sirp.students.interfaces import IStudent
+from waeup.sirp.students.interfaces import IStudent, IStudentNavigation
 from waeup.sirp.utils.helpers import attrs_to_fields
 
@@ -30,5 +30,5 @@
     owned by students.
     """
-    grok.implements(IStudent)
+    grok.implements(IStudent, IStudentNavigation)
     grok.provides(IStudent)
 
@@ -52,4 +52,7 @@
         return history
 
+    def getStudent(self):
+        return self
+
 # Set all attributes of Student required in IStudent as field
 # properties. Doing this, we do not have to set initial attributes
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/studycourse.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/studycourse.py	(revision 6641)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/studycourse.py	(revision 6642)
@@ -21,6 +21,6 @@
 from grok import index
 from zope.component.interfaces import IFactory
-from zope.interface import implementedBy
-from waeup.sirp.students.interfaces import IStudentStudyCourse
+from waeup.sirp.students.interfaces import (
+    IStudentStudyCourse, IStudentNavigation)
 from waeup.sirp.utils.helpers import attrs_to_fields
 
@@ -28,5 +28,5 @@
     """This is a container for study levels.
     """
-    grok.implements(IStudentStudyCourse)
+    grok.implements(IStudentStudyCourse, IStudentNavigation)
     grok.provides(IStudentStudyCourse)
 
@@ -35,3 +35,6 @@
         return
 
+    def getStudent(self):
+        return self.__parent__
+
 StudentStudyCourse = attrs_to_fields(StudentStudyCourse)
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/viewlets.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/viewlets.py	(revision 6642)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/viewlets.py	(revision 6642)
@@ -0,0 +1,63 @@
+import grok
+from zope.interface import Interface
+from waeup.sirp.interfaces import IWAeUPObject
+
+grok.context(IWAeUPObject) # Make IWAeUPObject the default context
+
+class StudentSidebar(grok.ViewletManager):
+    grok.name('left_student')
+
+class StudentLink(grok.Viewlet):
+    """A link displayed in the student box which shows for StudentNavigation
+    objects.
+
+    """
+    grok.baseclass()
+    grok.viewletmanager(StudentSidebar)
+    grok.context(IWAeUPObject)
+    grok.view(Interface)
+    grok.order(5)
+    grok.require('waeup.viewStudents')
+
+    link = 'index'
+    text = u'Base Data'
+
+    def render(self):
+        url = self.view.url(self.context.getStudent(), self.link)
+        return u'<div class="portlet"><a href="%s">%s</a></div>' % (
+                url, self.text)
+
+class StudentBaseLink(StudentLink):
+    grok.order(1)
+    link = 'index'
+    text = u'Base Data'
+
+class StudentClearanceLink(StudentLink):
+    grok.order(2)
+    link = 'view_clearance'
+    text = u'Clearance Data'
+
+class StudentPersonalLink(StudentLink):
+    grok.order(2)
+    link = 'view_personal'
+    text = u'Personal Data'
+
+class StudentStudyCourseLink(StudentLink):
+    grok.order(3)
+    link = 'studycourse'
+    text = u'Study Course'
+
+class StudentPaymentsLink(StudentLink):
+    grok.order(4)
+    link = 'payments'
+    text = u'Payments'
+
+class StudentAccommodationLink(StudentLink):
+    grok.order(5)
+    link = 'accommodation'
+    text = u'Accommodation Data'
+
+class StudentHistoryLink(StudentLink):
+    grok.order(6)
+    link = 'history'
+    text = u'History'
