Index: /main/waeup.sirp/trunk/src/waeup/sirp/applicants/authentication.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/applicants/authentication.py	(revision 6395)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/applicants/authentication.py	(revision 6396)
@@ -49,6 +49,6 @@
     def __init__(self, access_code):
         self.id = principal_id(access_code)
-        self.title = u'Applicant'
-        self.description = u'An Applicant'
+        self.title = u'My Application'
+        self.description = u'An Application Record'
         self.credentialsPlugin = None
         self.authenticatorPlugin = None
@@ -68,6 +68,6 @@
         if prefix is not None:
             self.id = '%s.%s' % (prefix, self.id)
-        self.title = u'Applicant'
-        self.description = u'An applicant'
+        self.title = u'My Application'
+        self.description = u'An Application Record'
         self.groups = []
         self.access_code = access_code
Index: /main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 6395)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 6396)
@@ -485,9 +485,13 @@
         return
 
-class AccessCodeLink(LeftSidebarLink):
+class AccessCodeViewLink(LeftSidebarLink):
     grok.order(1)
     grok.require('waeup.Public')
-
-    def render(self):
+    icon = 'actionicon_view.png'
+    title = 'View Record'
+    target = '/@@index'
+
+    @property
+    def url(self):
         if not IApplicantPrincipal.providedBy(self.request.principal):
             return ''
@@ -495,8 +499,34 @@
         if access_code:
             applicant_object = get_applicant_data(access_code)
-            url = absoluteURL(applicant_object, self.request)
-            return u'<div class="portlet"><a href="%s/edit">%s</a></div>' % (
-                url,access_code)
-        return ''
+            return absoluteURL(applicant_object, self.request) + self.target
+        else:
+            return ''
+
+class AccessCodeEditLink(AccessCodeViewLink):
+    grok.order(2)
+    grok.require('waeup.Public')
+    icon = 'actionicon_modify.png'
+    title = 'Edit Record'
+    target = '/@@edit'
+
+    @property
+    def url(self):
+        if not IApplicantPrincipal.providedBy(self.request.principal):
+            return ''
+        access_code = getattr(self.request.principal,'access_code',None)
+        if access_code:
+            applicant_object = get_applicant_data(access_code)
+            if applicant_object.locked:
+                return ''
+            return absoluteURL(applicant_object, self.request) + self.target
+        else:
+            return ''
+
+class AccessCodeSlipLink(AccessCodeViewLink):
+    grok.order(3)
+    grok.require('waeup.Public')
+    icon = 'actionicon_pdf.png'
+    title = 'Download Slip'
+    target = '/application_slip.pdf'
 
 class DisplayApplicant(WAeUPDisplayFormPage):
@@ -536,6 +566,6 @@
 class PDFActionButton(ManageActionButton):
     grok.context(IApplicant)
-    grok.view(DisplayApplicant)
-    grok.require('waeup.handleApplication')
+    #grok.view(DisplayApplicant)
+    grok.require('waeup.manageApplications')
     icon = 'actionicon_pdf.png'
     text = 'Download application slip'
@@ -653,11 +683,4 @@
     target = 'edit_full'
 
-class ApplicantEditActionButton(ManageActionButton):
-    grok.context(IApplicant)
-    grok.view(DisplayApplicant)
-    grok.require('waeup.handleApplication')
-    text = 'Edit application record'
-    target = 'edit'
-
 class EditApplicantFull(WAeUPEditFormPage):
     """A full edit view for applicant data.
@@ -779,4 +802,5 @@
     grok.context(IApplicant)
     grok.view(EditApplicantFull)
+    grok.require('waeup.manageApplications')
     icon = 'actionicon_view.png'
     text = 'View application record'
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py	(revision 6395)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py	(revision 6396)
@@ -207,15 +207,45 @@
     grok.order(5)
     grok.require('waeup.manageUniversity')
-
+    icon = 'actionicon_modify.png' # File must exist in static/
     title = 'Text of link'
+
     @property
     def url(self):
-        return 'URL to link to'
-    
+        return '@@index'
+
+    @property
+    def icon_url(self):
+        """Get the icon URL.
+        """
+        if self.icon:
+            static = self.view.static
+            if static is None or static.get(self.icon, None) is None:
+                # In derived classes defined in other modules/packages
+                # than w.s.browser, ``static`` might refer to a static dir
+                # local to the derived class' module. As we often like to
+                # get the icons from here
+                # (i.e. waeup.sirp.browser/static), we set the directory
+                # resource appropiately.
+                #
+                # XXX: The hardcoding of 'w.s.browser' should be replaced
+                #      by something smarter.
+                #
+                # TODO: notes in here should go to general documentation.
+                static = queryAdapter(
+                    self.request, Interface, name='waeup.sirp.browser')
+            return static[self.icon]()
+        return
+    
+    # Render link only if url is provided.
     def render(self):
-        return u'<div class="portlet"><a href="%s">%s</a></div>' % (
-            self.url, self.title)
-
-
+        if self.url:
+            if self.icon_url:
+                return u'<div class="portlet"><a href="%s"><img src="%s" /> %s </a></div>' % (
+                    self.url, self.icon_url, self.title)
+            else:
+                return u'<div class="portlet"><a href="%s">%s </a></div>' % (
+                    self.url, self.title)
+        else:
+            return ''
             
 #
