Index: WAeUP_SRP/trunk/skins/waeup_student/course_edit.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/course_edit.py	(revision 1861)
+++ WAeUP_SRP/trunk/skins/waeup_student/course_edit.py	(revision 1861)
@@ -0,0 +1,66 @@
+## Script (Python) "course_edit"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=REQUEST, cpsdocument_edit_button=None, cpsdocument_edit_and_view_button=None, action=None
+##title=
+# $Id: course_edit.py 1071 2006-12-16 15:53:13Z joachim $
+"""
+"""
+wftool = context.portal_workflow
+from urllib import urlencode
+from Products.CPSDocument.utils import getFormUidUrlArg
+import DateTime
+current = DateTime.DateTime()
+import logging
+logger = logging.getLogger('Skins.course_edit')
+
+info = context.getCourseResultInfo()
+
+if info is None:
+    logger.info('Anonymous user tried to access %s' % REQUEST.get('URL0'))
+    return REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
+
+student = info['student']
+#per = info['per']
+course_doc = info['course_doc']
+state = info['review_state']
+is_valid, ds = course_doc.validate(request=REQUEST,
+                                schema_id = 'student_course_result',
+                                layout_id = 'student_course_result_fe',
+                                proxy=context,
+                                use_session=True)
+
+psm = ""
+args = {}
+action = "/course_edit_form"
+base_url = context.absolute_url()
+
+if is_valid:
+    if cpsdocument_edit_button:
+        #name = "%(firstname)s %(middlename)s %(lastname)s" % ds
+        #name = name.strip()
+        #name = name.replace('  ',' ')
+        #email = ds.get('email')
+        #phone = ds.get('phone')
+        #student_id = context.getStudentId()
+        #context.students_catalog.modifyRecord(id = student_id,
+        #                                      name = name,
+        #                                      email = email,
+        #                                      phone = phone,
+        #                                      sex = ds.get('sex'),
+        #                                     )
+        logger.info('%s (%s) edited course result data %s' % (info['id'],info['review_state'],context.id))
+        #action = ""
+        #base_url = student.absolute_url()
+        #url = base_url + action
+        psm = 'psm_content_changed'
+else:
+    psm = 'psm_content_error'
+    args = getFormUidUrlArg(REQUEST)
+
+args['portal_status_message'] = psm
+url = base_url + action + '?' + urlencode(args)
+REQUEST.RESPONSE.redirect(url)
Index: WAeUP_SRP/trunk/skins/waeup_student/course_edit_form.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/course_edit_form.pt	(revision 1861)
+++ WAeUP_SRP/trunk/skins/waeup_student/course_edit_form.pt	(revision 1861)
@@ -0,0 +1,41 @@
+<metal:body use-macro="here/slip_template/macros/master">
+
+    <metal:main fill-slot="main"
+                  tal:define="info context/getCourseResultInfo;">
+      <metal:block tal:condition="not: info">
+        <span tal:content="here/illegal_view" />
+      </metal:block>
+      <metal:block tal:condition="info">
+      <metal:block tal:define="rendered_main python:info['course_doc'].render(
+                              layout_mode='edit',
+                              schema_id = 'student_course_result',
+                              layout_id = 'student_course_result_fe',
+                              request=request, 
+                              use_session=True,);
+           form_action string:course_edit;
+           edition python:True;
+           metadata nothing;
+            ">
+    <h3>Update Your Course <span tal:content='here/id' /> </h3>
+    <br />            
+            
+    <form action="ACTION" method="post" id="editForm"
+          enctype="multipart/form-data" class="workflow"
+          tal:attributes="action form_action">
+      <span tal:condition="not: info">
+        <metal:block use-macro="here/error_not_found/macros/not_found" />
+      </span>
+      <span tal:condition="info">
+        <span tal:omit-tag="" tal:replace="structure rendered_main"/>
+      </span>
+      <br/>
+      <input type="submit" class="standalone" 
+             name="cpsdocument_edit_button"
+             value="Save" 
+             id="cpsdocument_edit_button"/>
+    </form>
+    </metal:block>
+    </metal:block>    
+    </metal:main>
+</metal:body>
+
Index: WAeUP_SRP/trunk/skins/waeup_student/course_registration_slip.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/course_registration_slip.pt	(revision 1860)
+++ WAeUP_SRP/trunk/skins/waeup_student/course_registration_slip.pt	(revision 1861)
@@ -51,5 +51,5 @@
           </tr>
           <tr>
-            <td valign="top"><span class="dlabel">Course Id</span>:
+            <td valign="top"><span class="dlabel">Study Course Id</span>:
             </td>
             <td> 
@@ -67,8 +67,8 @@
               tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
             <td width="78%" tal:content="row/title"></td>
-            <td align="center" width="10%" tal:content="row/code"></td>
-            <td align="center" width="2%">S<span tal:content="row/semester" /></td>
-            <td align="center" width="2%" tal:content="row/credits"></td>
-            <td align="center" width="8%" tal:content="row/grade|string:"></td>
+            <td width="10%" tal:content="row/code"></td>
+            <td width="2%">S<span tal:content="row/semester" /></td>
+            <td width="2%" tal:content="row/credits"></td>
+            <td width="8%" tal:content="row/grade|string:"></td>
           </tr>
         </table>
@@ -80,13 +80,13 @@
               tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
             <td width="78%" tal:content="row/title"></td>
-            <td align="center" width="10%" tal:content="row/code"></td>
-            <td align="center" width="2%">S<span tal:content="row/semester" /></td>
-            <td align="center" width="2%" tal:content="row/credits"></td>
-            <td align="center" width="8%" tal:content="row/coe|nothing"></td>
+            <td width="10%" tal:content="row/code"></td>
+            <td width="2%">S<span tal:content="row/semester" /></td>
+            <td width="2%" tal:content="row/credits"></td>
+            <td width="8%" tal:content="row/coe|nothing"></td>
           </tr>
           <tr>
+            <th colspan="2" align="right">Total Credits:</th>
             <td></td>
-            <th colspan="2">Total Credits:</th>
-            <td align="center" width="2%" tal:content="info/credits_total"></td>
+            <td width="2%" tal:content="info/credits_total"></td>
           </tr>
         </table>
Index: WAeUP_SRP/trunk/skins/waeup_student/getCourseResultInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/getCourseResultInfo.py	(revision 1861)
+++ WAeUP_SRP/trunk/skins/waeup_student/getCourseResultInfo.py	(revision 1861)
@@ -0,0 +1,49 @@
+## Script (Python) "getPersonalInfo"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+# $Id: getApplicationInfo.py 1161 2006-12-31 07:50:50Z henrik $
+"""
+return Info about the current Student
+"""
+import logging
+logger = logging.getLogger('Skins.getPersonalInfo')
+
+request = context.REQUEST
+mtool = context.portal_membership
+wf = context.portal_workflow
+member = mtool.getAuthenticatedMember()
+member_id = str(member)
+path_info = request.get('PATH_INFO').split('/')
+##from Products.zdb import set_trace
+##set_trace()
+if mtool.isAnonymousUser():
+    return None
+info = {}
+requested_id = context.getStudentId()
+if requested_id and not context.isStaff() and member_id != requested_id:
+    logger.info('%s tried to access personal object of %s' % (member_id,requested_id))
+    student_id = requested_id
+    return None
+elif context.isStaff():
+    student_id = requested_id
+else:
+    student_id = member_id
+
+
+students_object = context.portal_url.getPortalObject().campus.students
+student = getattr(students_object, student_id)
+info['student'] = student
+##res = context.portal_catalog(id = student_id)
+##if res:
+##    info['review_state'] = res[0].review_state
+info['id'] = student_id
+info['review_state'] = wf.getInfoFor(student,'review_state',None)
+#info['per'] = student.personal
+info['course_doc'] = context.getContent()
+return info
Index: WAeUP_SRP/trunk/skins/waeup_student/layout_application_edit.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/layout_application_edit.pt	(revision 1860)
+++ WAeUP_SRP/trunk/skins/waeup_student/layout_application_edit.pt	(revision 1861)
@@ -1,5 +1,2 @@
-<!-- a layout_lib macro -->
-<!-- $Id$ -->
-
 <metal:block define-macro="default_edit"
   tal:define="layout options/layout;
Index: WAeUP_SRP/trunk/skins/waeup_student/layout_application_view_info.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/layout_application_view_info.pt	(revision 1860)
+++ WAeUP_SRP/trunk/skins/waeup_student/layout_application_view_info.pt	(revision 1861)
@@ -1,4 +1,2 @@
-<!-- a layout_lib macro -->
-<!-- $Id$ -->
 <metal:block define-macro="default_view"
   tal:define="layout options/layout;
@@ -45,5 +43,5 @@
         </tr>        
         <tr valign="top">
-          <td><span class="dlabel">JAMB Registration No</span>:
+          <td><span class="dlabel">Registration No</span>:
           </td>
           <td> 
@@ -66,10 +64,17 @@
         </tr>         
         <tr valign="top">
-          <td><span class="dlabel">Level</span>:
+          <td><span class="dlabel">Current Session</span>:
           </td>
           <td> 
-            <span tal:content="info/student/level" />
+            <span tal:content="python:context.portal_vocabularies.sessions.get(info['student']['session'])" />  
           </td>      
         </tr>           
+        <tr valign="top">
+          <td><span class="dlabel">Current Level</span>:
+          </td>
+          <td> 
+            <span tal:content="python:context.portal_vocabularies.courselevel.get(info['student']['level'])" />  
+          </td>      
+        </tr>             
       </table>
         
Index: WAeUP_SRP/trunk/skins/waeup_student/layout_application_view_slip.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/layout_application_view_slip.pt	(revision 1860)
+++ WAeUP_SRP/trunk/skins/waeup_student/layout_application_view_slip.pt	(revision 1861)
@@ -1,4 +1,2 @@
-<!-- a layout_lib macro -->
-<!-- $Id$ -->
 <metal:block define-macro="default_view"
   tal:define="layout options/layout;
Index: WAeUP_SRP/trunk/skins/waeup_student/layout_personal_edit.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/layout_personal_edit.pt	(revision 1860)
+++ WAeUP_SRP/trunk/skins/waeup_student/layout_personal_edit.pt	(revision 1861)
@@ -1,5 +1,2 @@
-<!-- a layout_lib macro -->
-<!-- $Id: layout_application_edit.pt 1071 2006-12-16 15:53:13Z joachim $ -->
-
 <metal:block define-macro="default_edit"
   tal:define="layout options/layout;
Index: WAeUP_SRP/trunk/skins/waeup_student/study_level_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/study_level_view.pt	(revision 1860)
+++ WAeUP_SRP/trunk/skins/waeup_student/study_level_view.pt	(revision 1861)
@@ -16,4 +16,14 @@
                        view_only info/view_only">       
           
+
+    <div style="text-align: right" 
+         tal:condition="python:review_state in ('courses_registered','courses_validated',)">
+    <a href="" target="slip" tal:attributes="href string:course_registration_slip"
+        onclick="javascript:window.open('','slip','width=600, height=700, directories=no, toolbar=no, location=no, menubar=yes, scrollbars=yes, status=no, resizable=no, dependent=no')">
+        <img tal:attributes="src string:${here/portal_url}/actionicon_print.png" />
+        Course Registration Slip
+    </a>
+    </div>
+
           
     <a href=""
@@ -90,4 +100,17 @@
           <td align="center" width="2%" tal:content="row/credits"></td>
           <td align="center" width="8%" tal:content="row/coe|nothing"></td>
+          
+          
+
+
+          <td>
+          <a tal:condition="python:review_state == 'school_fee_paid'" href="edit" tal:attributes="href string:${row/code}/course_edit_form"
+          target="edit"
+          onclick="javascript:window.open('','edit','width=600, height=350, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')">
+          [edit]
+          </a> 
+          </td>          
+          
+          
         </tr>
         <tr>
